【インターンステラ】MacにDockerを入れる~簡単なコマンドの説明まで~

岩佐です.
Gitlab CEをMacで利用したいので, DockerをMacに入れたいと思います.



Dockerのインストール

docker公式サイトのDocker Community Edition for Macのページよりインストーラーをダウンロードします. (ダウンロードにはdocker storeへのログインが必要です.)


ダウンロードしたDocker.dmgを起動しDRUG & DROP. 「アプリケーション」→「Docker」と押して起動しインストールしましょう.

インストールが無事完了しているか確認しましょう.
$ docker --version
Docker version 18.06.0-ce, build 0ffa825

試しに$ docker run hello-worldと実行してみましょう.

$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
9db2ca6ccae0: Pull complete 
Digest: sha256:4b8ff392a12ed9ea17784bd3c9a8b1fa3299cac44aca35a85c90c5e3c7afacdc
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.
    (amd64)
 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://hub.docker.com/

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

Docker版Hello Worldですね.

何が起きたのか

上記のコマンドで何が起きたのかは表示されたメッセージが説明しています.
ローカルに「hello-world」というイメージがなかったため, Docker hubからイメージを取得しコンテナを生成, メッセージを送出したと言ってますね. よくわかりませんがそんなところです.

ubuntuを起動する

続いて, 上記のメッセージに
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash

とあったのでそのまま実行してみましょう.

$ docker run -it ubuntu bash
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
c64513b74145: Pull complete 
01b8b12bad90: Pull complete 
c5d85cf7a05f: Pull complete 
b6b268720157: Pull complete 
e12192999ff1: Pull complete 
Digest: sha256:3f119dc0737f57f704ebecac8a6d8477b0f6ca1ca0332c7ee1395ed2c6a82be7
Status: Downloaded newer image for ubuntu:latest
root@27bb529135cb:/# 

今回もubuntuイメージを取得し, 実行されました. ubuntuのバージョンを確認してみましょう.
root@27bb529135cb:/# cat /etc/issue
Ubuntu 18.04.1 LTS \n \l

root@27bb529135cb:/# cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.1 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.1 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic

ubuntuから抜けるためには「Ctrl + P + Q」と入力します.

dockerの主要なコマンド

  • イメージを確認する
$ docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu                latest              735f80812f90        30 hours ago        83.5MB
hello-world          latest              2cb0d9787c4d        2 weeks ago         1.85kB

  • コンテナを確認する
$ docker container ls
CONTAINER ID           IMAGE                     COMMAND             CREATED                       STATUS                                       PORTS                              NAMES
27bb529135cb        ubuntu                   "bash"                    30 minutes ago            Up 30 minutes                                                                     condescending_pare
停止中のコンテナも確認したい場合は
$ docker container ls -a
CONTAINER ID           IMAGE                     COMMAND             CREATED                       STATUS                                       PORTS                              NAMES
27bb529135cb        ubuntu                   "bash"                    32 minutes ago             Up 32 minutes                                                                     condescending_pare
cd19abd3ea32         hello-world             "/hello"                  3 hours ago                   Exited (0) 3 hours ago                                                        gracious_mahavira
STATUSは, 起動中のものはUp, 停止中のものはExitedになっています. NAMESは適当についていますが, 自分でつけることもできます.
これらコンテナの確認は,
$ docker ps
$ docker ps -a
でも同様に行えます.

  • コンテナの停止
起動中のubuntuコンテナを停止させます.

$ docker stop condescending_pare
condescending_pare
$ docker ps
CONTAINER ID           IMAGE                     COMMAND             CREATED                       STATUS                                       PORTS                              NAMES
27bb529135cb       ubuntu                    "bash"                    About an hour ago       Exited (0) 2 minutes ago                                                    condescending_pare

NAMESで指定しましたが, CONTAINER IDで指定することもできます.

  • コンテナの起動
再度ubuntuコンテナを起動します.

$ docker start condescending_pare
condescending_pare
$ docker ps -l
CONTAINER ID           IMAGE                     COMMAND             CREATED                       STATUS                                       PORTS                              NAMES
27bb529135cb        ubuntu                   "bash"                    About an hour ago       Up 10 seconds                                                                     condescending_pare

「-l」は最後に起動したコンテナを指定するオプションです.

  • コンテナへの接続
$ docker attach condescending_pare
root@27bb529135cb:/# 

  • コンテナとの接続の切断
先ほどは「Ctrl + P + Q」コマンドを使いましたが, 接続の切断と同時にコンテナを停止させるには「exit」します.

root@27bb529135cb:/# exit
exit
$ docker ps -a
CONTAINER ID           IMAGE                     COMMAND             CREATED                       STATUS                                       PORTS                              NAMES
27bb529135cb        ubuntu                   "bash"                    About an hour ago       Exited (0) 20 seconds ago                                                 condescending_pare
cd19abd3ea32         hello-world             "/hello"                  3 hours ago                  Exited (0) 3 hours ago                                                        gracious_mahavira


  • コンテナの削除
hello-worldおよびubuntuのコンテナを削除します.

$ docker ps -a
CONTAINER ID           IMAGE                     COMMAND             CREATED                       STATUS                                       PORTS                              NAMES
27bb529135cb        ubuntu                   "bash"                    2 hours ago                  Exited (0) About an hour ago                                             condescending_pare
cd19abd3ea32         hello-world             "/hello"                  4 hours ago                  Exited (0) 4 hours ago                                                        gracious_mahavira
$ docker rm condescending_pare
condescending_pare
$ docker container rm gracious_mahavira
gracious_mahavira
$ docker ps -a
CONTAINER ID           IMAGE                     COMMAND             CREATED                       STATUS                                       PORTS                              NAMES


  • イメージの削除
続いてイメージを削除します.

$ docker image rm ubuntu
Untagged: ubuntu:latest
Untagged: ubuntu@sha256:3f119dc0737f57f704ebecac8a6d8477b0f6ca1ca0332c7ee1395ed2c6a82be7
Deleted: sha256:735f80812f90aca43213934fd321a75ef20b2e30948dbbdd2c240e8abaab8a28
Deleted: sha256:86267d11f0c14fca869691b9b32bdd610b6ab8d9033d59ee64bdcc2cf0219bce
Deleted: sha256:d9a8b3f912eee0b322b86fa0f6888558a468c384611c71178987b20e3a0ebafc
Deleted: sha256:4e627d1476f22151f05e5214147d6cc6e03ad79a082f01aca6560aa75c7ade3a
Deleted: sha256:757b76a12baba45fcbe76abbdd99723be9d94c12a2ad40354dc49ff5fbe1f5c1
Deleted: sha256:f49017d4d5ce9c0f544c82ed5cbc0672fbcb593be77f954891b22b4d0d4c0a84
$ docker image rm hello-world
Untagged: hello-world:latest
Untagged: hello-world@sha256:4b8ff392a12ed9ea17784bd3c9a8b1fa3299cac44aca35a85c90c5e3c7afacdc
Deleted: sha256:2cb0d9787c4dd17ef9eb03e512923bc4db10add190d3f84af63b744e353a9b34
Deleted: sha256:ee83fc5847cb872324b8a1f5dbfd754255367f4280122b4e2d5aee17818e31f5
$ docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE


以上です.

このブログの人気の投稿

【AWS】IAMFullAccessを付与せずIAM Roleの作成とアタッチを行う方法

【AWS】EBSボリューム自動取得/削除 を Lambda で実行 (世代管理も)

【GCP】Compute EngineでVPNサーバーを立てるときの注意点