DockerをMacで動かしてみよう!

Dockerの公式サイトに沿ってチュートリアルをやってみましょう。

まずはインストール

公式サイトからDockerのインストールファイルをダウンロードします。

Docker公式サイト

動作確認をしましょう

インストールができたらターミナルを開きましょう。

dockerのコマンドが認識できるか確認します。

docker --version
docker-compose --version
docker-machine --version

慣れるために次々とコマンドを打ってみましょう。

docker version

Dockerを動かしてみよう

次にコンテナ起動をしてみましょう。

お決まりのhello worldで動作を見てみます。

docker run hello-world

すると次のようなメッセージが表示されます。

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
78445dd45222: Pull complete
Digest: sha256:c5515758d4c5e1e838e9cd307f6c6a0d620b5e07e6f927b07d05f6d12a1ac8d7
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://cloud.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/engine/userguide/

Unable to find image ‘hello-world:latest’ locallyというのはまだローカルにイメージがないので、出てくるメッセージです。

イメージがない場合はダウンロードされて、次回からはそのイメージを利用して起動されます。

これだけだと不安なので、本当に起動できたのか確認しましょう。

docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
0e6ad8b7fc50        hello-world         "/hello"            3 minutes ago       Exited (0) 3 seconds ago                       modest_perlman

STATUSを見るとExitedになっていますが、hello worldするだけのコンテナなので、どうやら起動してすぐに終了したようです。

ウェブサーバーを動かしてみよう

動作確認もできたので、ウェブサーバーであるNginxを動かしてみましょう。

注意:ポート番号を確認しよう

MacですでにApacheなどが動いている場合は、ポート番号を変更するか、対象のサービスを停止してください。

次の例はApacheを停止しています。

sudo apachectl stop

Nginxを起動

それでは、Nginxのコンテナを起動してみましょう。

docker run -d -p 80:80 --name webserver nginx

起動ができたら、ウェブブラウザで次のように入力して、アクセスしてみます。

localhost

Nginxのトップページが表示できたらOKです。

コンテナを停止・再開する

コンテナの停止

起動したコンテナを停止するには次のようにします。

docker stop webserver

先ほど起動したときの–name直後のパラメータを指定して、停止を行います。

もう一度、ブラウザでアクセスして停止したことを確認します。

localhost

コンテナの再開

コンテナを停止しても、削除されたわけではありません。
先ほどのコマンドでステータスを見てみましょう。

docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
0905062b79b7        nginx               "nginx -g 'daemon ..."   3 minutes ago       Exited (0) 3 seconds ago                        webserver
0e6ad8b7fc50        hello-world         "/hello"                 19 minutes ago      Exited (0) 16 minutes ago                       modest_perlman

STATUSがExitedになっているのがわかります。

再開するには次のようにします。

docker start webserver

起動しているコンテナだけであればdocker psコマンドで確認ができます。

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

コンテナを削除する

先ほど停止は行いましたが、コンテナを削除した訳ではありません。

削除するには次のコマンドを使います。

docker rm webserver

rmの後ろにはコンテナ名もしくはコンテナIDを指定します。

停止させていないコンテナに対しては、次のようなエラーが表示されます。

Error response from daemon: You cannot remove a running container 0905062b79b77b7ba80fba38e4b7ee28df97a80a16769b3222db684b57c14f2d. Stop the container before attempting removal or use -f

停止と削除を同時に行う場合は、次のコマンドでも構いません。

docker rm -f webserver

イメージを削除する

まずはイメージの一覧を確認してみましょう。

docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              cc1b61406712        13 days ago         182 MB
hello-world         latest              48b5124b2768        3 weeks ago         1.84 kB

イメージを削除したい場合は次のようにします。

docker rmi nginx

rmiの後ろにリポジトリ指定することでも削除が可能です。

もしくは

docker rmi 48b5124b2768

のようにイメージIDを指定しても構いません。

まとめ

ここまでやれば、なんとなくDockerの雰囲気はつかめたのではないかと思います。

とにかくデプロイが簡単で、テスト環境の用意などにはうってつけですね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です