2020年3月某日


お久しぶりです。
最近仕事ばかりで全然研究していないRockinWoolです。
4月からは社会人博士として学費を支払う必要があるので、もっと真面目に論文を読んだり書いたり研究をしたりしないといけないとは思っています(笑)

今日はこの記事を書きながらDockerイメージを作って、自分の作ったプログラムを実行する環境を配布できるようにしようかなって思います。
手順はこんな感じかな〜(多分)

  1. プログラムAを作る
  2. Dockerfileを作ってDockerimageをビルドするときにAをぶち込む
  3. Docker build -t {イメージ名} {場所}
  4. Docker run -itd {コンテナ名} {イメージ名} bash

それではまず、作業環境を作ります

~$ mkdir 2020_March


この中にpythonで作ったプログラムをぶち込みます

~$ ls ~/2020_March
main.py


次にdockerfileでanaconda環境を設定していきます
自分はgeditを愛用している(Vim<nano<gedit)のでgeditを使います。WindowsだったらVisual Studio Codeで書いちゃいます
(ここで自分が仕事のせいで完全にWindows派からLinux派に堕ちてしまっていることに気づく)

~$ gedit Dockerfile


Dockerfileの記述はQiitaのこの記事を参考にして作りました(マークダウンで初のURLリンク)
っつーことでいざ実行!

(base)~$ docker build -t 20200320 .
Command 'docker' not found, but can be installed with:
sudo snap install docker     # version 18.09.9, or
sudo apt  install docker.io
See 'snap info docker' for additional versions.

正直ワロタwこの環境にはDocker入れてませんでしたね・・・
提示された解決策を実行して(apt-getではなくsnap使ったのですがログがほとんど残らないのに衝撃を受けつつ)

~$ sudo snap install docker
docker 18.09.9 from Canonical✓ installed

とりあえず、dockerが入ったのはわかったのでリベンジ

~$ docker build -t 20200320 .
ERRO[0000] failed to dial gRPC: cannot connect to the Docker daemon. Is 'docker daemon' running on this host?: dial unix /var/run/docker.sock: connect: permission denied 
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.39/build?buildargs=%7B%7D&cachefrom=%5B%5D&cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems=&cpushares=0&dockerfile=Dockerfile&labels=%7B%7D&memory=0&memswap=0&networkmode=default&rm=1&session=py0c14unib9pi5f8397h7t1y0&shmsize=0&t=20200320&target=&ulimits=null&version=1: dial unix /var/run/docker.sock: connect: permission denied

へー。sudo入れないとこんなエラーが出るんですね!(無知)とりあえずsudoを入れてもう一回実行します。
するとSuccessfully tagged 20200320:latestと表示されたので多分イメージは完成しましたね。
それではdocker run します

~$ sudo docker run -itd --name 2020_March 20200320
~$ sudo docker exec -it 2020_March bash
Error response from daemon: Container d9b54f6101d600690f06cd67f0d6b5f4a4294384e65476023f2e105b8817f212 is not running 

えええ?runさせた直後なのに止まっているとはどういうことじゃ?
考えられるのはDockerfileの記述内容だけですねえ..と思っていたのだけど、10分後にこれはRUNのさせ方の問題じゃな・・となって修正

~$ sudo docker run -it -p 8888:8888 --rm --name 2020_March --mount type=bind,src=`pwd`,dst=/program_A 20200320

とりあえずサーバーが立ち上がったそうなのでもう一個ctrl+alt+tで端末を召喚して\

~$ firefox localhost:8888

とでもしてアクセスすると….
jupyter-lab-homepagejupyter-lab-docalc・・・いやあ、科学の力ってすげーですわ・・・

とりあえず目標としていたDockerで遊ぶ!ということを達成したので今日は満足かな・・・。
マークダウンの表記方法にも色々慣れてきたと思うし、これを投稿してどうなるか見てみたいですね!
それでは、長くなりましたがここまで見ていただきありがとうございました。
今回作成したプログラムやファイルの置き場所はここに置きました。
次は月曜日かな?論文のレビューでもしようと思います!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です