34
31

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【初心者向け】Dockerの使い方が個人的に腑に落ちた。

Last updated at Posted at 2018-04-26

pythonの環境を構築するために今まではdockerではなくanacondaのconda createコマンドを利用していた。

今までconda createで特に不自由してなかったが…

周りにconda create使っている人が少なかった。うちのラボだけなのか?と思ってしまった。
最近dockerが流行っているということで習得しようと考えた。

腑に落ちなかった点

conda createで十分じゃね?という感があった。
最近railsもやっているので言語依存ではない仮想環境について知りたかったので勉強することにした。

勘違いしていた点

そもそもの使い方

Docker導入のための、コンテナの利点を解説した説得資料、がめちゃめちゃわかりやすい。
condaしか使って来なかったのでそもそも環境自体をupdateして(別のimageとして)保存していくというフローの想像がつかなかった。
バージョンの異なるimageを用意して置くことでロールバックなどが容易にできるわけですね。

Dockerfile -(build)-> image -(run)-> container -(commit)-> image_2 -(run)-> container_2 ->...

imageに落とし込んだ段階でpushすれば共有が可能です。

imageにcommitするのは環境だけではないということ

conda思想に侵されていたので、環境設定のみを記述するものだと勘違いしていた。
imageにcommitするのは環境だけではなくcontainer内のコードも含まれる。
よって、コードを書き換えつつ環境も書き換えつつ丸ごと保存できる。

Dockerfileで共有する必要はないということ

完璧なDockerfileを用意して共有するのが普通なのかと思っていた。
今までここに記述したものがうまく動かず挫折していた。
先述の通り、docker imageをcommitして管理し、それをdockerhub上で管理すれば良い。サイズが大きくて重いんですけどね。
Dockerfileはベースとなる設定を書いておけば入れ忘れなどがなくなって便利なのは違いないです。

Dockerfileの解釈

FROM python:3

RUN pip install pandas

今までFROMにはcentosやubuntuしか入れられないと思っていたが、ここは公式イメージを記入する部分であって、この例で言えばpython3の動くLinux環境(デフォでpipが使える)をベースにしているという意味だったのですね。自分がこれをもとにbuildした時はapt-getが使えてyumは使えませんでした。

$ cat /proc/version
Linux version 4.9.87-linuxkit-aufs (root@95fa5ec30613) (gcc version 6.4.0 (Alpine 6.4.0) ) #1 SMP Wed Mar 14 15:12:16 UTC 2018

個人的tips

attachとexecの違い

こちらの説明がとてもわかりやすいです。

あとがき

dockerはコードも内部的に管理できるのでconda createよりも安全ですね。
ラボの先人たちの研究を引き継ぎたい後輩が現れた時に動く環境があることが非常に大事ですし、研究自体がラボのリソースなので残すメリットは非常に大きいです。早く導入しないとなぁ。

34
31
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
34
31

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?