今更ながらやっと Docker を使える環境になったので Mac を使用して Docker のインストールからチュートリアルまでの手順をまとめました。
インストール
公式サイトの Docker Hub から Sign Up して Docker Desktop for Mac を ダウンロード してください。昔はサインインしなくてもダウンロードできていましたが今は必要になっています。
ダウンロード画面には Tutorial も含まれているので一緒に進めていきましょう。
Docker.dmg
のインストール方法は通常の Mac アプリケーションと同じです。 needs privileged access
と表示されるのでパスワードを入力してください。インストールして起動した後、以下のようにグリーンマークになると成功です。
コマンドも追加されているのでバージョンを確認してみましょう。Docker のバージョンは 19.03.2
ですがこれは 2019年3月にリリースされたことを意味しています。
$ docker --version Docker version 19.03.2, build 6a30dfc $ docker-compose --version docker-compose version 1.24.1, build 4667896b $ docker-machine --version docker-machine version 0.16.2, build bd45ab13
チュートリアル①
次に Tutorial 用のリポジトリを clone します。
Docker イメージをビルドします。
ビルドされたイメージはローカルマシンの Docker イメージレジストリにあるので以下のコマンドで確認してみてください。
$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE tasukujp/cheers2019 latest 79d4be09caf5 2 minutes ago 4.01MB <none> <none> 2fe17f54bce1 2 minutes ago 356MB golang 1.11-alpine e116d2efa2ab 7 weeks ago 312MB
それでは作成したイメージで最初のコンテナを実行しましょう。Docker のアスキーアートが表示されると思います。
実行した以下のコマンドについてですが、 run
で指定したイメージのコンテナを実行し、 -it
オプションでゲストとホストの標準入出力をつなげて、 --rm
でコンテナの終了時に自動的にコンテナを削除されるという意味です。
$ docker run -it --rm tasukujp/cheers2019
最後に Docker Hub にビルドしたイメージを push
して Tutorial は終了です。 doodle
には他にも summer2019
や birthday2019
がありますので同じように試してみましょう。
チュートリアル②
公式に hello-world
という単純なイメージが用意されていますので、インストールが機能することを確認します。
$ docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 1b930d010525: Pull complete Digest: sha256:c3b4ada4687bbaa170745b3e4dd8ac3f194ca95b2d0518b417fb47e5879d9b5f Status: Downloaded newer image for hello-world:latest ... To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash ...
イメージがローカルインストールされてコンテナが作成されました。
$ docker images hello-world REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest fce289e99eb9 9 months ago 1.84kB $ docker container ls -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 087deeda8787 hello-world "/hello" 11 minutes ago Exited (0) 11 minutes ago cool_kepler
docker run
コマンドは以下のコマンドに分解できます。イメージの取得は初めにローカルから探して、無ければ Docker Hub に探しにいきます。上記の実行時でも最初にダウンロードが行われているのがわかると思います。
docker pull # イメージの取得 docker create # コンテナの作成 docker start # コンテナの起動
最後に hallo-world イメージの実行時に表示されていたコマンドを実行してみましょう。ダウンロードと起動に伴ってコンテナの中にログインできました。
$ docker run -it ubuntu bash Unable to find image 'ubuntu:latest' locally latest: Pulling from library/ubuntu 5667fdb72017: Pull complete d83811f270d5: Pull complete ee671aafb583: Pull complete 7fc152dfb3a6: Pull complete Digest: sha256:b88f8848e9a1a4e4558ba7cfc4acc5879e1d0e7ac06401409062ad2627e6fb58 Status: Downloaded newer image for ubuntu:latest root@5100f5fc06db:/# cat /etc/os-release NAME="Ubuntu" VERSION="18.04.3 LTS (Bionic Beaver)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 18.04.3 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
コンテナから抜けるには ctrl+pq
か exit
です。ただし exit
の場合はログインしてるシェルが親プロセスの場合、コンテナで起動しているプロセスが無くなってしまいコンテナも停止します。 attach
とか exec
でログインする方法にもよるのでまた別の記事にしたいと思います。
root@5100f5fc06db:/# exit exit
最後に hello-world のイメージとコンテナを削除します。
$ docker image rm hello-world Error response from daemon: conflict: unable to remove repository reference "hello-world" (must force) - container 087deeda8787 is using its referenced image fce289e99eb9 doodle/cheers2019 on master
失敗しました。先にコンテナから削除しないといけないようです。
$ docker container rm 087deeda8787 087deeda8787 doodle/cheers2019 on master $ docker image rm hello-world Untagged: hello-world:latest Untagged: hello-world@sha256:c3b4ada4687bbaa170745b3e4dd8ac3f194ca95b2d0518b417fb47e5879d9b5f Deleted: sha256:fce289e99eb9bca977dae136fbe2a82b6b7d4c372474c9235adc1741675f587e Deleted: sha256:af0b15c8625bb1938f1d7b17081031f649fd14e6b233688eea3c5483994a66a3
以下のリンク先にも他のチュートリアル的な事が書かれていますので試してみてください。
Get started with Docker Desktop for Mac | Docker Documentation