スキップしてメイン コンテンツに移動

Docker イメージの作り方

図を書く必要ができた。
絵ではなく製図でもなくフローチャートのような図なので、
そこまで細かく書く必要はない。

CADを使いたかったのだが、どれが良いかわからない。
そこでDockerを使ってテストを行うことにした。

とりあえずaptコマンドでCADを検索してみると次のようなパッケージが見つかった。

  • LibreCAD:https://librecad.org/
  • SagCAD : http://sagcad.sourceforge.jp/
  • KiCad EDA : http://www.kicad-pcb.org/
  • PythonCAD : https://ja.osdn.net/projects/sfnet_pythoncad/
  • OpenSCAD : http://www.openscad.org/

次のパッケージもあったが今回は除外した。
  • LeoCAD : https://www.leocad.org/ LEGOブロック組立
  • XTrackCAD : http://www.xtrkcad.org/ 鉄道模型用


そもそも DockerHub に有れば作る必要もないのでまず検索してみた。
# docker search cad
すると caddy 関連のイメージがたくさん引っかかったが、CADは見当たらなかった。


というわけで Dockerイメージを作ることにした。
イメージの作り方は次の方法がある。
  • ベースとなるイメージからコンテナを作り、その中にログインしパッケージをインストール。 その後コンテナからイメージを作成する。
  • Dockerfileに上記の順序を記述し自動的にイメージを作成
今回は次のサイトを参考にDockerfileからイメージを作成した。
[参考] Dockerfileとdocker buildコマンドでDockerイメージの作成
https://www.atmarkit.co.jp/ait/articles/1407/08/news031.html


今回は次のようなDockerfileを作った。
$ cat Dockerfile
FROM ubuntu

RUN apt update
RUN apt install librecad -y

CMD ["/bin/bash"]


次のコマンドでイメージを作成。
$ docker build -t CadImage .
Name はイメージ名を指定し、"." はDockerfileのあるディレクトリを指定する。

次のコマンドでイメージが出来たことを確認。
$ docker image ls


次のサイトを参考にDockerコンテナよりCADパッケージを起動する。
[参考] Dockerコンテナの中でGUIアプリケーションを起動させる
https://unskilled.site/docker%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E3%81%AE%E4%B8%AD%E3%81%A7gui%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%95%E3%81%9B%E3%82%8B/

ホストへのアクセスを許可する。
$ xhost local:

次のコマンドでコンテナを起動する。
$ docker container run -it --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix/:/tmp/.X11-unix CadImage

コンテナ内のプロンプトが表示されるのでlibrecadを実行する。
root@XXXXXXXXXXXX:/# librecad

問題がなければLibreCADが起動する。

終了時には次のコマンドでコンテナから抜ける。
root@XXXXXXXXXXXX:/# exit

その後、ホストアクセスの設定を戻す。
$ xhost -local:


docker container run コマンドで直接librecadを実行してもよい。
その場合は直接LibreCADが起動するし、LibreCADを終了すればコンテナも終了する。
$ docker container run -it --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix/:/tmp/.X11-unix CadImage librecad

日本語フォントが入っていると日本語も表示できた。
Dockerfileを次のように記述すればいい。
FROM ubuntu

RUN apt-get update  
RUN apt-get install librecad -y 
RUN apt-get install fonts-ipafont -y

CMD ["/bin/bash"]


無事に起動できたので他のCADと比較してみることにする。

コメント

このブログの人気の投稿

Ubuntu で RAIDディスクをマウントする

謎のHDDが見つかった。 データを確認するためWindowsにつなぐもマウントされず。 これは extとかffsの辺りかなと思い、Linux(Ubuntu)に繋ぐ。 しかし、自動マウントされない。 取り敢えずマウントする。 # mount /dev/sdb1 /mnt/disk すると'linux_raid_member'とエラー表示された。 ということで、まずファイルシステムを確認。 # parted -l このコマンドでファイルシステムが表示される。 また、Gparted でも表示される。 そこでRAIDディスクを扱うためにmdadmパッケージをインストール。 # apt install mdadm ネットでは mountコマンドの -t オプションで明示的にファイルシステムを指定するとマウントできると書いてあったのでそれを試すとマウントできた。 # mount -t ext3 /dev/sdb1 /mnt/disk 内容を確認すると不要なデータだったのでデータを削除する。 # shred -v /deb/sdb この処理はとても時間がかかるので普段使わないコンピュータで処理をした。

自動ログイン on Lubuntu

Lubuntu 19.04 の 自動ログインを設定してみた。 グラフィカルログインを自動で行うようにしたいが、 ユーザー設定 の中に自動ログインの設定がない。 そこでコマンドラインから設定してみた。 まず、ログインをするときに使用しているディスプレイマネージャを確認する。 $ cat /etc/X11/default-display-manager /usr/bin/sddm sddm を使っているので、sddm の自動ログインを設定する。 OSは systemd で動いていると設定ファイルがないようなので作成する。 # sddm --example-config > /etc/sddm.conf.d/sddm.conf この設定ファイルに Autologin について書いてあるのでここにユーザ名を入力。 $ head /etc/sddm.conf.d/sddm.conf [Autologin] # Whether sddm should automatically log back into sessions when they exit Relogin=false # Name of session file for autologin session (if empty try last logged in) Session= # Username for autologin session User= ここの User= にユーザ名を書き込み保存後、再起動すると自動でログインされる。

TVに繋いでいた録画用HDDが認識しなくなった

ポロポロとものが壊れていく。 年数もそれなりに経っているので仕方がないと思うが、  Panasonic VIERA TH-L32X3  メーカーページ http://panasonic.jp/viera/p-db/TH-L32X3.html 上記VIERAに繋いでいた録画用のHDDが急に認識しなくなった。 実はこれで二回目のトラブルである。 一回目は買って1年ほどでこの症状が出た。 この時はHDDが物理的な障害で故障したと思い、ダメ元で再接続再フォーマットした。 このHDDはそのあと5年以上正常に動作していた。 結局この時の障害は論理障害だったのだと思う。 今回も同様の症状だったので、復旧を試みることにした。 こちらのサイトに Panasonic製のセットトップボックスへ繋いでいたHDDの修復について書いてあった。 Panasonic CATV STBの外付けHDDのファイルシステム修復 おぼえ書き http://qiita.com/a_saitoh/items/93a9983b988b541d2cb1 これを参考にして、FreeBSD11.0( https://www.freebsd.org/ja/ ) に外付けHDDを繋いで、fsck_ffs -n を実行するも復旧せず。 仕方がないので、fsck_ffs -y や fsck_ufs -n 、 fsck_ufs -y などをかけてからTVにつなぐと認識した。 録画データは諦めていたので、いろんなコマンドをかけてしまったので、 どのコマンドが良かったかはっきりとしないが、 無事にデータが参照できるようになった。