【Docker】Dockerをはじめよう②
前回の記事にではpushまで実施しましたが、pushができるこということはpullすることもできます。今回はDockerHubからイメージをpullしてコンテナをビルド、さらにはアクセスするところまで試してみます。
- この記事でやること
- コンテナ+イメージを削除する
- 前回pushしたイメージをVM上にpullする
- そのイメージをdocker runしてコンテナを実行する
- そのコンテナの特定のポートに外部からアクセスする
- まとめ
この記事でやること
前回の記事と同様の環境を使用します。
今回実施する作業イメージを載せておきます。
やること一覧
- コンテナ+イメージを削除する
- 前回pushしたイメージをVM上にpullする
- そのイメージをdocker runしてコンテナを実行する
- そのコンテナの特定のポートに外部からアクセスする
コンテナ+イメージを削除する
前回構築した環境を一度ローカルから削除します。
コンテナの削除
このように、コンテナが存在していた場合、docker rm CONTAINER ID ( docker rm 0a0a2ad2b3e4 ) で削除してください。
xxxx@container ~ $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0a0a2ad2b3e4 chittai/testrepo:testimage "/bin/sh -c 'echo \"r…" 3 seconds ago Exited (0) 2 seconds ago zen_lichterman
問題なく削除できたら確認します。対象のコンテナが消えてます。
xxxx@container ~ $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
イメージの削除
次はイメージを削除します。docker rmi IMAGE ID (docker rmi fef899467da0 ) で削除ができます。
xxxx@container ~ $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE chittai/testrepo testimage fef899467da0 3 days ago 109MB
こちらも問題なく削除できたら確認します。対象のイメージが消えてます。
rfuda@container ~ $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE
これで、環境がきれいになったので準備完了です。
前回pushしたイメージをVM上にpullする
それでは、前回pushしたイメージをここでpullしましょう。pullするとローカルにイメージを取得することができます。
xxxx@container ~ $ docker pull chittai/testrepo:testimage testimage: Pulling from chittai/testrepo fc7181108d40: Pull complete d2e987ca2267: Pull complete 0b760b431b11: Pull complete Digest: sha256:975c49c9f6d0256c40e6be218104882307a25165bc2b3ffa9a9fa1ff8898f3e3 Status: Downloaded newer image for chittai/testrepo:testimage
イメージ一覧を確認します。新しく増えていることが確認できました。
xxxx@container ~ $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE chittai/testrepo testimage fef899467da0 3 days ago 109MB xxxx@container ~ $
そのイメージをdocker runしてコンテナを実行する
runコマンドでコンテナを実行します。今回、この後nginxを立ち上げてアクセスするところまで実施するので、-pオプションを指定して、VMインスタンスのポートとコンテナのポートを紐づけます。(VMインスタンスの8080にアクセスすると、コンテナの80にアクセスするようになる)
xxxx@container ~ $ docker run -d -it -p 8080:80 chittai/testrepo:testimage /bin/bash
コンテナの起動を確認します。増えてることが確認できました。
xxxx@container ~ $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 561f1e49b9e2 chittai/testrepo:testimage "/bin/bash" About a minute ago Up About a minute 0.0.0.0:8080->80/tcp dreamy_haslett
そのコンテナの特定のポートに外部からアクセスする
今回使用したイメージの大本はnginxなので、Webブラウザからアクセスできるはずです。ですが、runで起動しただけだとコンテナ上でnginxのサービスにアクセスできません。なので、起動したコンテナ自体にアクセスしてnginxのサービスを起動します。
xxxx@container ~ $ docker exec -it 561f1e49b9e2 /bin/bash root@561f1e49b9e2:/# root@561f1e49b9e2:/# root@561f1e49b9e2:/# service nginx status [FAIL] nginx is not running ... failed! root@561f1e49b9e2:/# service nginx start root@561f1e49b9e2:/# service nginx status [ ok ] nginx is running.
ここまでで、一通りの構築は完了です。ブラウザからアクセスしてみましょう。アクセスできることが確認できました。
まとめ
(再掲)今回の作業の流れはこんな感じです。