docker run コマンドを実行したときの流れ
2021-01-08
docker run hello-world
上記コマンドを実行したときに、裏ではどういったことを行っているのかを見ていく。
- docker run コマンドを実行すると Docker Client が命令を受け取り、Docker Server に hello-world を実行するよう指示する
- Docker Server は hello-world を実行するため、ローカル(Image cache)に hello-world の Image ファイルがあるか確認する
- Image ファイルがない場合は、Docker Hub に Image ファイルを探しにいく
- hello-world の Image ファイルを見つけて、ローカルにダウンロードする
- hello-world の Image ファイルを使って Container を作成
- 初期コマンドである「Hello world」を表示する
上記が一連の流れ。
Docker Hub とは
Docker Hub は Image ファイルのリポジトリ。
誰でも自由に使えるところ。
Docker run コマンドは2つのコマンドを合わせたもの
Docker run は docker create
と docker start
の2つのことを実行している。
docker create
docker create <image name>
で Container を作成。
docker start
docker start <container id>
で初期コマンドを実行。
正確には docker run
コマンドでは -a
オプションをつけたものと同じ。
docker start -a <container id>
-a
をつけることによって実行結果を表示してくれる。
実行時にコマンドプロンプトにつなげるには
docker run -it <image name> sh
上記コマンドを実行すると container 実行時に container 内のコマンドプロンプトと接続した状態になる。
ポートマッピング
ローカルのポートと container 内のポートをつなげるには run
コマンド実行に行う。
docker run -p <ローカルのポート>:<container のポート> <image name>
上記でつなぐことができる。
例)
docker run -p 5000:5000 <image name>