docker run hello-worldの動作
docker run hello-world
- dockerはdockerコマンド
- runはサブコマンド
- hello-worldはイメージの指定
dockerクライアントからdockerデーモンが働き、ローカルで指定されたimageを検索しなければ、①Docker Hubからhello-worldのimage検索、ダウンロードする。その後②dockerデーモンはimageを基にdocker containerを作成、③起動する。docker containerが起動した際のメッセージがdockerクライアントに送られ、ターミナルに表示される。
こうした①~③処理自体にコマンドがある
1. imageの取得...docker pull
2. containerの作成...docker create
3. containerの起動...docker start
丸ごとひっくるめてdocker run
となっている
Docker Hubとは?
imageがたくさん保存されている外部サイト
個人でも保存できるし、公開もできる。https://hub.docker.com/
↑hello-worlrdを検索した図。とりあえず使う場合はOFFICIAL IMAGEと入っているものを使うとよい(Docker社による審査がされているらしい)
ページ詳細を確認すると使い方がわかる。
タグ指定などでversion名を管理することもあるimage名:タグ
↓一番新しい更新のhello-world(最新とか限らないので注意)
docker run hello-world:latest
↓python3.6のimage
docker run python:3.6
などがある。
そもそもdocker imageとは?
コンテナ実行に必要なファイルをまとめたファイルシステム
- imageとなったデータは読みとり専用
- 複数のレイヤが積み重なっている
- imageがcontainerになるときに読みとり可能なレイヤーが追加される
レイヤーの組み合わせが自在
- レイヤーは組み合わせて使えるLinux imageにpython3.7 image載せたり。
- ただし、imageとしてのレイヤーは残ったままなので、定期的に見直しが必要。
- 軽量が売りのcontainerでもレガシーの遺産が積み重なると身動き取れなくなってしまう