MacOSXでDockerに入門してみた
今年のお盆休みはなんやかんやでDockerを触っていました
備忘用に設定メモを残しておく
Docker Community Edition for Macをインストールする
まずはDockerをインストールしないと始まらない
Docker Community Edition for Macのページにアクセスして、ダウンロードして、インストールする
サイトにアクセスする
ダウンロードするためにはログインしておく必要がある
おはじめの方はユーザー登録が必要らしい
届いたメールでアカウントを有効化する
ログインしたらダウンロードする
インストールはコピーするだけ
「アプリケーション」フォルダの「Docker」をダブルクリックして起動する
特権アクセスを求められるのでパスワードを入力する
Dockerを使ってみる
Dockerをターミナル(黒い画面)で操作する
インストールされたバージョンを確認する
$ docker version
Client:
Version: 18.06.0-ce
API version: 1.38
Go version: go1.10.3
Git commit: 0ffa825
Built: Wed Jul 18 19:05:26 2018
OS/Arch: darwin/amd64
Experimental: false
Server:
Engine:
Version: 18.06.0-ce
API version: 1.38 (minimum version 1.12)
Go version: go1.10.3
Git commit: 0ffa825
Built: Wed Jul 18 19:13:46 2018
OS/Arch: linux/amd64
Experimental: true
動作確認をする
hello-worldコンテナを動かしてみる
$ sudo docker run --rm hello-world
Password:
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 ps -a
動作しているコンテナのみのリスト
$ docker ps
動作しているコンテナを停止する
$ docker stop [CONTAINER ID]
停止しているコンテナを動かす
$ docker start [CONTAINER ID]
動作しているコンテナに入ってコマンドを実行する
$ docker exec -it [CONTAINER ID] /bin/bash
コンテナを削除する
$ docker rm [CONTAINER ID]
ローカルに保持しているイメージのリスト
$ docker images
イメージを削除する
$ docker rmi [IMAGE ID]
流れを一通り体験してみる
コンテナのイメージを取ってきて動かしてみる
$ docker run -it ubuntu:18.04 /bin/bash
Unable to find image 'ubuntu:18.04' locally
18.04: 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:18.04
root@0e7310f4998e:/#
ローカルにイメージを持っていなければ取ってきてから実行してくれる
最後の行のroot@0e7310f4998e:/#
はコンテナの中のシェル
コンテナの中でなんかやってみる
# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.1 LTS"
# apt update
# apt -y install nano
# nano test.txt
コンテナの中から抜ける
# exit
抜けたコンテナの中に入る
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0e7310f4998e ubuntu:18.04 "/bin/bash" 8 minutes ago Exited (0) 20 seconds ago condescending_brown
$ docker start 0e7310f4998e
$ docker exec -it 0e7310f4998e /bin/bash
# nano test.txt
# exit
コンテナの中でやったことをなかったことに(新しいコンテナで作業をする)
$ docker run -it ubuntu:18.04 /bin/bash
# nano text.txt
bash: nano: command not found
# exit
今のコンテナの状態をイメージにしておく
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0e7310f4998e ubuntu:18.04 "/bin/bash" 8 minutes ago Exited (0) 11 minutes ago condescending_brown
$ docker commit 0e7310f4998e ubuntu:customized
sha256:4c23165459870ace880c583e1c4d2593f9bf48bfee3de225d797c2acd1e190e3
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu customized 4c2316545987 18 seconds ago 126MB
ubuntu 18.04 735f80812f90 2 weeks ago 83.5MB
作成したコンテナイメージを使う
$ docker run -it ubuntu:customized /bin/bash
# nano test.txt
# exit
いらなくなったコンテナの後始末
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7dc49d0b4170 ubuntu:customized "/bin/bash" About a minute ago Exited (0) 7 seconds ago distracted_poincare
$ docker rm 7dc49d0b4170
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
いらなくなったコンテナイメージの後始末
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu customized 4c2316545987 4 minutes ago 126MB
ubuntu 18.04 735f80812f90 2 weeks ago 83.5MB
$ docker rmi 4c2316545987
Untagged: ubuntu:customized
Deleted: sha256:4c23165459870ace880c583e1c4d2593f9bf48bfee3de225d797c2acd1e190e3
Deleted: sha256:35beba4702b177f96142c46b19dadd22ec96b4bd05b6f42e21101b296d3e7031
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 18.04 735f80812f90 2 weeks ago 83.5MB
まとめ
- Dockerを使いこなすといろいろなことができそう
- Dockerfileを書くところまで行かなくてもDockerの恩恵は受けられそう
竹内電設は、大阪府下を中心に中小規模の組織がITシステムを効果的に活用するための、お手伝いをさせていただいております
© 2023 竹内電設; all rights reserved.