概要 †
- OSの名前空間分けて FreeBSDのjailみたいの作れる仕組みと、それ用のルートファイルシステムイメージを自動でダウンロードして走らせたりする仕組み
- 名前空間は分けるけどそれぞれにinitが走るわけではない。その点に関してはchrootに近い(jailやOpenVZのようなものを下敷きにして捉えるとDockerの1コンテナ1プロセスというマナーを理解するのに時間がかかるかもしれない)
インストール方法 †
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
sudo vi /etc/apt/sources.list.d/docker.list
# docker.listの内容
# deb https://apt.dockerproject.org/repo ubuntu-xenial main
Dockerfile †
- dockerのRUNは毎回コンテナを立ち上げてそれを適用してコンテナを保存するということをしている。
- この時の中間コンテナはキャッシュされているので、Dockerfileに何らかの変更を加える必要がある場合は、重い処理を早いところに入れておけばキャッシュが使われてインストールなどの処理をスキップできる。
- RUNとCMDの違い
- RUN - イメージ作成時に実行される(build内部)
- CMD - コンテナ実行時に実行される(buildされたものをデプロイしている)
トラブルシューティング †
- host error
- at the physical machine levelなのでどうしようもないやつ。コンテナのサイズ上げても無駄
- 80 番ポートを開くときに Permission Denied
$ USER=hamko
$ sudo usermod -aG docker $USER
$ su - $USER
$ sudo systemctl restart docker
# Logout