たくあんポリポリ

勉強したことを載せていきます。最近、技術系の記事はZennに書いています。(https://zenn.dev/chittai)

【Docker】Dockerをはじめよう②

前回の記事にではpushまで実施しましたが、pushができるこということはpullすることもできます。今回はDockerHubからイメージをpullしてコンテナをビルド、さらにはアクセスするところまで試してみます。

c-taquna.hatenablog.com

この記事でやること

前回の記事と同様の環境を使用します。

今回実施する作業イメージを載せておきます。 f:id:c_taquna:20190708220011j:plain:w400

やること一覧

  1. コンテナ+イメージを削除する
  2. 前回pushしたイメージをVM上にpullする
  3. そのイメージをdocker runしてコンテナを実行する
  4. そのコンテナの特定のポートに外部からアクセスする

コンテナ+イメージを削除する

前回構築した環境を一度ローカルから削除します。

コンテナの削除

このように、コンテナが存在していた場合、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.

ここまでで、一通りの構築は完了です。ブラウザからアクセスしてみましょう。アクセスできることが確認できました。

f:id:c_taquna:20190708215348j:plain:w400

まとめ

(再掲)今回の作業の流れはこんな感じです。 f:id:c_taquna:20190708220011j:plain:w400