目的
- DockerをMacにインストールして、コンテナ仮想環境を構築する
環境
- Hardware
- MacBook Pro (2018 13-inch Four Thunderbolt3 Ports)
- 2.7GHz QuadCore Intel core i7
- 8 GB 2133 MHz LPDDR3
- Software
- macOS Monterey ver12.2
Dockerのインストール
- Dockerインストールファイルを公式サイトからダウンロードする
- インストールが完了したら、Dockerアイコンをダブルクリックして起動しましょう。
- Dockerアイコンが表示されていればインストール成功です。
動作確認
- ターミナルを開いて動作を確認します。「Hello from Docker!」と表示されれば成功です。
- Docker Hubからhello-worldというDockerイメージのlatest版をダウンロード、コンテナ生成、コンテナ実行までの一連の処理を、runコマンドが行なっています。
ターミナルコマンド
$ docker run hello-world
結果
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:97a379f4f88575512824f3b352bc03cd75e239179eea0fecc38e597b2209f49a
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公式イメージを実行してみる
Docker公式のDockerイメージdocker/whalesayを実行してクジラに喋らせてみる
ターミナルコマンド
$ docker run docker/whalesay cowsay I love you.
結果
_____________
< I love you. >
-------------
\
\
\
## .
## ## ## ==
## ## ## ## ===
/""""""""""""""""___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\______/
Dockerイメージを管理する
Dockerイメージの一覧を表示する
ターミナルコマンド
$ docker images
結果
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 4 months ago 13.3kB
docker/whalesay latest 6b362a9f73eb 6 years ago 247MB
イメージにエイリアスをつける
ターミナルコマンド
$ docker tag hello-world first-hello
結果
REPOSITORY TAG IMAGE ID CREATED SIZE
first-hello latest feb5d9fea6a5 4 months ago 13.3kB
hello-world latest feb5d9fea6a5 4 months ago 13.3kB
docker/whalesay latest 6b362a9f73eb 6 years ago 247MB
オリジナルと同じイメージIDが付与されているのが確認できます。
イメージにタグをつける
ターミナルコマンド
$ docker tag hello-world first-hello:ver1.0
結果
REPOSITORY TAG IMAGE ID CREATED SIZE
first-hello latest feb5d9fea6a5 4 months ago 13.3kB
first-hello ver1.0 feb5d9fea6a5 4 months ago 13.3kB
hello-world latest feb5d9fea6a5 4 months ago 13.3kB
docker/whalesay latest 6b362a9f73eb 6 years ago 247MB
TAGに指定したver1.0のイメージが作成されているのが確認できます。
イメージを削除する
コマンド
$ docker rmi hello-world
結果
REPOSITORY TAG IMAGE ID CREATED SIZE
first-hello latest feb5d9fea6a5 4 months ago 13.3kB
first-hello ver1.0 feb5d9fea6a5 4 months ago 13.3kB
docker/whalesay latest 6b362a9f73eb 6 years ago 247MB
latestのイメージが削除されたのが確認できます。
Dockerイメージをカスタマイズしてみる
Docker Hub上にあるイメージをもとに、オリジナルのDockerイメージを作成します。
Dockerイメージは、レイヤーの概念によってコマンドが積み重なった構成になっています。1つのコマンドが1つのレイヤーに相当します。
適当なフォルダを作成し、Dockerfileを作成する
例えば、fortunesコマンドをインストールして、クジラに英語格言を喋らせるようなイメージを作成してみる。
Dockerfile
FROM docker/whalesay:latest
RUN apt-get -y update
RUM apt-get install -y fortunes
CMD /usr/games/fortune | cowsay
Dockerfileからイメージをビルドする
ターミナルコマンド
$ docker build -t whale-custom .
結果
[+] Building 29.8s (7/7) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 156B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/docker/whalesay:latest 0.0s
=> CACHED [1/3] FROM docker.io/docker/whalesay:latest 0.0s
=> [2/3] RUN apt-get -y update 19.1s
=> [3/3] RUN apt-get install -y fortunes 10.4s
=> exporting to image 0.2s
=> => exporting layers 0.1s
=> => writing image sha256:ecb783bedb93b82581f65200f53ac23ae08ce7a3fe110778e7f54f89cba87832 0.0s
=> => naming to docker.io/library/whale-custom 0.0s
Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
ローカルに保存されているDockerイメージを確認する
ターミナルコマンド
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
whale-custom latest 6310654daf21 10 seconds ago 278MB
first-hello latest feb5d9fea6a5 4 months ago 13.3kB
first-hello ver1.0 feb5d9fea6a5 4 months ago 13.3kB
hello-world ver1.0 feb5d9fea6a5 4 months ago 13.3kB
docker/whalesay latest 6b362a9f73eb 6 years ago 247MB
作成したイメージからコンテナを実行する
ターミナルコマンド
$ docker run whale-custom
結果
_________________________________________
/ Who wants to remember that \
| escape-x-alt-control-left shift-b puts |
| you into super-edit-debug-compile mode? |
| |
| -- Discussion on the intuitiveness of |
\ commands, especially Emacs /
-----------------------------------------
\
\
\
## .
## ## ## ==
## ## ## ## ===
/""""""""""""""""___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\______/
クジラが英語格言を喋るイメージが作成できたことを確認できた。