MacOSにdockerをインストールしてみる

MacOS High Sierraにdocker for Macをインストールしてみます

for MacをMacにインストールしようと思ったのは日経ソフトウェアの付録についていたAIアプリケーションを動かしてみたかったからというなんとも言えない理由でした。付録のAIはCDケースのイメージだけで勝手な思い込みをしていて、想像とは少し違ったので記事にはしません。でも、せっかくMacOSにdockerをインストールしたので、インストール方法を記事にしておきます。

docker for Macパッケージをダウンロード

docker for Macのパッケージは、公式サイトからダウンロードします。

docker for Macをインストール

インストール手順は、公式サイトのガイドに従って実施しました。

  1. Docker for Macのモジュールをダウンロードします
    ここでは[Stable]バージョンをダウンロードします
  2. Installation on OS X
    https://docs.docker.com/docker-for-mac/
    Mac for Docker

  3. ダウンロードしたDocker.dmgをダブルクリックします
  4. Doker.appをApplicationフォルダにドラッグ&ドロップします
  5. Mac for Docker

  6. LounchpadにDockerアイコンが表示されていることを確認し、アイコンをダブルクリックして起動します
  7. Mac for Docker

  8. アプリケーションの実行確認に[開く]ボタンをクリックします
  9. Mac for Docker

  10. [Next]ボタンをクリックします
  11. Mac for Docker

  12. [OK]ボタンをクリックします
  13. Mac for Docker

  14. 管理者パスワードを入力して[]ボタンをクリックします
    たぶん[はい]かと思います
  15. Mac for Docker

  16. インストール完了のメッセージが表示されます
  17. Mac for Docker

dockerを起動する

インストールが完了したら、dockerを起動してみましょう。というよりも、前段までのところでdocker自体は起動しています。

  1. ターミナルを起動してdocker versionコマンドを実行します
  2. $ docker version
    Client:
     Version:      17.09.0-ce
     API version:  1.32
     Go version:   go1.8.3
     Git commit:   afdb6d4
     Built:        Tue Sep 26 22:40:09 2017
     OS/Arch:      darwin/amd64
    
    Server:
     Version:      17.09.0-ce
     API version:  1.32 (minimum version 1.12)
     Go version:   go1.8.3
     Git commit:   afdb6d4
     Built:        Tue Sep 26 22:45:38 2017
     OS/Arch:      linux/amd64
     Experimental: true
     
  3. dockerコンテナを確認します
    この時点では何も動いていないです
  4. $ docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    

docker hello-worldを動かしてましょう

動作確認のため、hello-worldを動かしてみます

  1. hello-worldを起動してみます
    無ければダウンロードします
    dockerが動作していれば、こんなメッセージが表示するようです
  2. $ docker run hello-world
    Unable to find image 'hello-world:latest' locally
    latest: Pulling from library/hello-world
    ca4f61b1923c: Pull complete 
    Digest: sha256:be0cd392e45be79ffeffa6b05338b98ebb16c87b255f48e297ec7f98e123905c
    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://cloud.docker.com/
    
    For more examples and ideas, visit:
     https://docs.docker.com/engine/userguide/
    
  3. dockerコンテナを確認します
    StatusがExitedの場合は停止しているものです
  4. $ docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
    3724d489ef5e        hello-world         "/hello"            6 minutes ago       Exited (0) 6 minutes ago                       affectionate_mestorf
    

dockerでUbuntuを動かしてみます

Docker hello-worldのメセージの中にあるコマンドを実行してみます。

  1. $ docker run -it ubuntu bashを実行してみます
  2. $ docker run -it ubuntu bash
    Unable to find image 'ubuntu:latest' locally
    latest: Pulling from library/ubuntu
    660c48dd555d: Pull complete 
    4c7380416e78: Pull complete 
    421e436b5f80: Pull complete 
    e4ce6c3651b3: Pull complete 
    be588e74bd34: Pull complete 
    Digest: sha256:7c67a2206d3c04703e5c23518707bdd4916c057562dd51c74b99b2ba26af0f79
    Status: Downloaded newer image for ubuntu:latest
    root@c2883e3ff056:/#
    
  3. 動作しているUbuntuの状態を確認してみます
    動作しているUbuntuの情報を表示します
  4. root@c2883e3ff056:/# cat /etc/lsb-release 
    DISTRIB_ID=Ubuntu
    DISTRIB_RELEASE=16.04
    DISTRIB_CODENAME=xenial
    DISTRIB_DESCRIPTION="Ubuntu 16.04.3 LTS"
    root@c2883e3ff056:/# uname -a
    Linux c2883e3ff056 4.9.49-moby #1 SMP Wed Sep 27 23:17:17 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
    
  5. dockerコンテナから抜けるにはexitを入力します
  6. root@c2883e3ff056:/# exit
    exit
    
  7. dockerコンテナを確認します
  8. $ docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    $ docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                        PORTS               NAMES
    c2883e3ff056        ubuntu              "bash"              6 minutes ago       Exited (127) 56 seconds ago                       affectionate_tesla
    3724d489ef5e        hello-world         "/hello"            22 minutes ago      Exited (0) 22 minutes ago                         affectionate_mestorf
    

dockerコンテナ使う

dockerコンテナを開始、停止、削除してみます。

  1. dockerコンテナを確認します
  2. $ docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    $ docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                        PORTS               NAMES
    c2883e3ff056        ubuntu              "bash"              6 minutes ago       Exited (127) 56 seconds ago                       affectionate_tesla
    3724d489ef5e        hello-world         "/hello"            22 minutes ago      Exited (0) 22 minutes ago                         affectionate_mestorf
    
  3. dockerコンテナを開始します
    コンテナを指定するには、CONTAINER IDかNAMEを指定します
    サンプルではc2883e3ff056 or affectionate_tesla
  4. $ docker start c2883e3ff056
    c2883e3ff056
    $ docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    c2883e3ff056        ubuntu              "bash"              15 minutes ago      Up 8 seconds                            affectionate_tesla
    
  5. コンテナにログインします
    コンテナを指定するには、CONTAINER IDかNAMEを指定します
    サンプルではc2883e3ff056 or affectionate_tesla
  6. $ docker attach c2883e3ff056
    root@c2883e3ff056:/# 
    
  7. コンテナ内のUbuntuの状態を確認します
  8. root@c2883e3ff056:/# ls
    bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
    boot  etc  lib   media  opt  root  sbin  sys  usr
    root@c2883e3ff056:/# whoami
    root
    root@c2883e3ff056:/# cat /etc/lsb-release 
    DISTRIB_ID=Ubuntu
    DISTRIB_RELEASE=16.04
    DISTRIB_CODENAME=xenial
    DISTRIB_DESCRIPTION="Ubuntu 16.04.3 LTS"
    
  9. コンテナからログアウトします
    exitでコンテナから抜けるとコンテナは停止します
  10. $ docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    $ docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
    c2883e3ff056        ubuntu              "bash"              23 minutes ago      Exited (0) 11 seconds ago                       affectionate_tesla
    3724d489ef5e        hello-world         "/hello"            40 minutes ago      Exited (0) 40 minutes ago                       affectionate_mestorf
    
  11. コンテナを削除します
    コンテナを指定するには、CONTAINER IDかNAMEを指定します
    サンプルではc2883e3ff056 or affectionate_tesla
  12. $ docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
    c2883e3ff056        ubuntu              "bash"              23 minutes ago      Exited (0) 11 seconds ago                       affectionate_tesla
    3724d489ef5e        hello-world         "/hello"            40 minutes ago      Exited (0) 40 minutes ago                       affectionate_mestorf
    $ docker stop c2883e3ff056
    c2883e3ff056
    $ docker rm c2883e3ff056
    c2883e3ff056
    $ docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
    3724d489ef5e        hello-world         "/hello"            43 minutes ago      Exited (0) 43 minutes ago                       affectionate_mestorf
    
  13. イメージを削除します
    イメージを指定するにはIMAGE IDを指定します
    サンプルでは20c44cd7596f
  14. $ docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    hello-world         latest              f2a91732366c        3 days ago          1.85kB
    ubuntu              latest              20c44cd7596f        6 days ago          123MB
    $ docker rmi 20c44cd7596f
    Untagged: ubuntu:latest
    Untagged: ubuntu@sha256:7c67a2206d3c04703e5c23518707bdd4916c057562dd51c74b99b2ba26af0f79
    Deleted: sha256:20c44cd7596ff4807aef84273c99588d22749e2a7e15a7545ac96347baa65eda
    Deleted: sha256:928cadf24454047a7a1b8e8d034a539e882ed904d6627b343e2abcd338ae0123
    Deleted: sha256:1f7b04df09e72e9b94e923567a168b438d195c4c610a335ed7320cc6dea93c3f
    Deleted: sha256:289566599b45e8e2a7264923d3481c6e0e7460232a4e0ed1512528272fb15c70
    Deleted: sha256:2eb2bdc452f61ae4703cb67be52a4d595265cecb257f3210647ea1d0bf84a549
    Deleted: sha256:788ce2310e2fdbbf81fe21cbcc8a44da4cf648b0339b09c221abacb4cd5fd136
    $ docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    hello-world         latest              f2a91732366c        3 days ago          1.85kB