Docker for Macを使ってみる

  • 環境
    • macOS Catalina バージョン10.15.7

Docker for Macをインストールする

matsuand.github.io

  1. Docker Hubを表示する
  2. [Get Docker]ボタンでdmgファイルをダウンロードする
  3. Docker.dmg をダブルクリックしてアプリケーション・フォルダに Docker アイコンをドラッグする
  4. Launchpadに追加されたDockerを起動する
    • f:id:ponsuke_tarou:20201029200427p:plain
  5. f:id:ponsuke_tarou:20201029200501p:plain
    ダイアログが表示されたら[開く]ボタンで進む
  6. f:id:ponsuke_tarou:20201029200625p:plain
    ダイアログが表示されたら[OK]ボタンで進む
  7. パスワードを入力して[ヘルパーをインストールする]ボタンで進むとダイアログが開いて[start]ボタンから使い方の説明が見られる
    • f:id:ponsuke_tarou:20201029201614p:plain
      ボタンをぽちぽちしてくとクローンとかビルドの説明が見られる
  8. f:id:ponsuke_tarou:20201029201703p:plain
    ウィンドウの上にはくじらマークが出る
  9. f:id:ponsuke_tarou:20201029210220p:plain
    くじらマーク > [About Docker Desktop]からバージョンを確認できる
# ターミナルでコマンドを使ってもバージョンを確認できる
% docker --version
Docker version 19.03.13, build 4484c46d9d

インストールできたか確認するためにhello-worldコンテナを作ってみる

  1. ターミナルを起動する
  2. docker run hello-worldを実行
    1. ローカルにはないよと表示される : Unable to find image 'hello-world:latest' locally
    2. 自動でDocker Hubからイメージがpullされる : latest: Pulling from library/hello-world
# hello-worldコンテナを作る
% docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete 
Digest: sha256:8c5aeeb6a5f3ba4883347d3747a7249f491766ca1caa47e5da5dfcf6b9b717c0
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/get-started/

# コンテナができた
% docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
79377c1d5f44        hello-world         "/hello"            14 minutes ago      Exited (0) 14 minutes ago                       trusting_jang

f:id:ponsuke_tarou:20201029221756j:plain
荒川区のニュー恵美須湯

MySQLを作ってみる

  1. Docker Hubからイメージをpullする
    • docker pull {イメージ名}
  2. imageを確認する
  3. イメージをビルドして起動する
    • docker run -e MYSQL_ROOT_PASSWORD={rootのパスワード} -d -p 3306:3306 {イメージ名}
# イメージをpullする
% docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
bb79b6b2107f: Already exists 
49e22f6fb9f7: Pull complete 
842b1255668c: Pull complete 
9f48d1f43000: Pull complete 
c693f0615bce: Pull complete 
8a621b9dbed2: Pull complete 
0807d32aef13: Pull complete 
a56aca0feb17: Pull complete 
de9d45fd0f07: Pull complete 
1d68a49161cc: Pull complete 
d16d318b774e: Pull complete 
49e112c55976: Pull complete 
Digest: sha256:8c17271df53ee3b843d6e16d46cff13f22c9c04d6982eb15a9a47bd5c9ac7e2d
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest

# imageを確認する
% docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mysql               latest              db2b37ec6181        6 days ago          545MB
nginx               latest              f35646e83998        2 weeks ago         133MB
hello-world         latest              bf756fb1ae65        10 months ago       13.3kB

# ビルドして起動する
% docker run -e MYSQL_ROOT_PASSWORD=root -d --name mysql80 -p 3306:3306 mysql
0e2b57b5753826e7d3921037f22665eb331f0861b489245cce27377bc666d0a1

# mysql80が作られて起動している
% docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
0e2b57b57538        mysql               "docker-entrypoint.s…"   5 seconds ago       Up 4 seconds        0.0.0.0:3306->3306/tcp, 33060/tcp   mysql80

docker run のオプション

参考 : run — Docker-docs-ja 17.06 ドキュメント

オプション 意味
-d, --detach コンテナをバックグラウンドで実行し、コンテナIDを表示
-e, --env= 環境変数を指定
--name コンテナに名前を割り当てる
-p, --publish= コンテナのポートをホスト側に公開
-p {ホスト側ポート}:{コンテナ側ポート}

MySQLにログインする

  1. ホストか作ったコンテナにログインする
  2. MySQLにログインする
# コンテナにログインする
% docker exec -it mysql80 bash

# MySQLにログインする
root@0e2b57b57538:/# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.22 MySQL Community Server - GPL

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

# まだ初期DBしかない
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.01 sec)

# MySQLからログアウトする
mysql> quit
Bye

# コンテナからログアウトする
root@0e2b57b57538:/# exit
exit

%

f:id:ponsuke_tarou:20201029221904j:plain
ニュー恵美須湯には気さくなかわいいおばあちゃんが2人いる