LinuxならDockerをインストールすればそのまま使用することができる。 Mac OSかWindwosならば、Docker Toolboxを使う。
Docker Toolboxの場合いちいちゲストOSを立ち上げる手間がかかる。 Docker for MacかDocker for Windowsを使用すればゲストOSを意識せずDockerを使うことができる。
Dockerコマンド
Dockerイメージの操作
イメージのダウンロード(docker pull)
# CentOSのDockerイメージを取得
>docker pull centos
イメージの一覧表示(docker images)
>docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest 7bb2586065cd 13 days ago 477MB
centos latest 9f38484d220f 3 weeks ago 202MB
ubuntu latest 94e814e2efa8 4 weeks ago 88.9MB
kitematic/hello-world-nginx latest 03b4557ad7b9 3 years ago 7.91MB
>docker search oracle
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
oraclelinux Official Docker builds of Oracle Linux. 572 [OK]
jaspeen/oracle-11g Docker image for Oracle 11g database 97 [OK]
oracle/openjdk Docker images containing OpenJDK Oracle Linux 54 [OK]
イメージの削除(docker rmi)
>docker images mysql
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest 7bb2586065cd 2 weeks ago 477MB
>docker rmi -f 7bb2586065cd
Untagged: mysql:latest
Untagged: mysql@sha256:a7cf659a764732a27963429a87eccc8457e6d4af0ee9d5140a3b56e74986eed7
Deleted: sha256:7bb2586065cd50457e315a5dab0732a87c45c5fad619c017732f5a13e58b51dd
Deleted: sha256:5362a97701b6ba3d39453e9e8b435b4cc3d7b493fb506780b8e2ec9c3ee20b8e
Deleted: sha256:91ae6166a0c2de34f36c2bb6b66ba3782ec6186337b87362961fad845f5ce236
Deleted: sha256:ae307e2a0c006325d4b96c1f0a40b1ae35cf9a034435ec9925291dafed69e01f
Deleted: sha256:b000e0eccfc8ce916a49183e5168c11b65085d940d76ef9c7c264462aa5f1f5c
Deleted: sha256:97a8302a9556468404f8aeda16ef35d94075cc95ed72249fb2bc2835984e8dd5
Deleted: sha256:4e83d49f100fcd78f57b8f1844faad134d8328c5280be14d85a61ae7c7ffb981
Deleted: sha256:11f5b5e11d25f08da50ca38993f02a3194565beaa516b66970adbbffa58141e0
Deleted: sha256:2db1d1b89506973f51991ae03cb18e24f16aa2ef2b6cda4cf172b7ae4f8c15a7
Deleted: sha256:31cd685e0a1656331ab15ee8aadf47ccb1580e80baef149a8e1dfa0e7283ce64
Deleted: sha256:5f10b55a337d5bf432b0e44e22bd5730bde67251201b6890e923e3d2c641fa64
Deleted: sha256:85c59144fcd7e0cba06a9ec8e502b993bcf75035c95524aa6c92b3072828ce94
Deleted: sha256:5dacd731af1b0386ead06c8b1feff9f65d9e0bdfec032d2cd0bc03690698feda
Docker Hubへログインする(docker login)
>docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: danishi
Password:
Login Succeeded
Docker Hubからログアウトする(docker logout)
>docker logout
Removing login credentials for https://index.docker.io/v1/
Dockerイメージをアップロードする(docker push)
# centosのイメージに別名をつけて保存
>docker commit -a "danishi" -m "first commit" centos1 danishi/oreno_centos:1.0
sha256:2c3d963194e237db9d1c3f0812bdcf766205a26d695770ec2b0b4d65ea34da15
# Docker Hubに保存する
>docker push danishi/oreno_centos:1.0
The push refers to repository [docker.io/danishi/oreno_centos]
b2bc7b51bb54: Pushed
d69483a6face: Mounted from library/centos
1.0: digest: sha256:df918c62405f89f51faf0075c74d76d1ad971ba5c3e2feb605f565ef2cbe1033 size: 736
# 起動中のコンテナを確認
>docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
07c3afbb7d29 centos "/bin/bash" About a minute ago Up 54 seconds eager_jackson
# 停止中のコンテナも含めて確認
>docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
07c3afbb7d29 centos "/bin/bash" About a minute ago Up About a minute eager_jackson
4f86513d5b51 centos "/bin/pwd" 7 minutes ago Exited (0) 6 minutes ago kind_montalcini
85798cc79955 mysql "docker-entrypoint.s…" 9 minutes ago Exited (1) 9 minutes ago affectionate_chaplygin
コンテナのログを確認(docker logs)
>docker run centos /bin/cal
April 2019
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
>docker start b4f4d016ac23
b4f4d016ac23
>docker logs b4f4d016ac23
April 2019
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
April 2019
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
コンテナの状態を確認(docker stats)
>docker stats 07c3afbb7d29
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
07c3afbb7d29 eager_jackson 0.00% 1.773MiB / 1.934GiB 0.09% 968B / 0B 2.73MB / 0B 2
# bashを起動。exitで抜けるとコンテナが終了するため(ctrl+p⇒ctrl+q)で抜ける。
>docker run -it centos /bin/bash
[root@0fd647a2c70e /]# read escape sequence
# 別プロセスでbashを立ち上げる。
>docker exec -it 0fd647a2c70e /bin/bash
[root@0fd647a2c70e /]# exit
exit
# コンテナは終了しない。
>docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0fd647a2c70e centos "/bin/bash" 5 minutes ago Up 4 minutes musing_goldstine
fc47c110b66b httpsd "httpsd-foreground" 41 minutes ago Up 41 minutes 0.0.0.0:9999->80/tcp optimistic_austin
コンテナで稼働中のプロセス確認(docker top)
>docker top fc47c110b66b
PID USER TIME COMMAND
2301 root 0:00 httpsd -DFOREGROUND
2346 bin 0:00 httpsd -DFOREGROUND
2347 bin 0:00 httpsd -DFOREGROUND
2348 bin 0:00 httpsd -DFOREGROUND
2442 bin 0:00 httpsd -DFOREGROUND
コンテナで行われているポートフォワーディングを確認(docker port)
>docker port fc47c110b66b
80/tcp -> 0.0.0.0:9999
コンテナのリネーム(docker rename)
>docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0fd647a2c70e centos "/bin/bash" 10 minutes ago Up 9 minutes musing_goldstine
fc47c110b66b httpsd "httpsd-foreground" About an hour ago Up About an hour 0.0.0.0:9999->80/tcp optimistic_austin
>docker rename musing_goldstine centos1
>docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0fd647a2c70e centos "/bin/bash" 11 minutes ago Up 10 minutes centos1
fc47c110b66b httpsd "httpsd-foreground" About an hour ago Up About an hour 0.0.0.0:9999->80/tcp optimistic_austin
コンテナ⇔ホストOS間のファイルコピー(docker cp)
>docker cp centos1:/etc/passwd C:\Temp
コンテナの差分を確認する(docker diff)
# コンテナがイメージから生成されてからの差分を調べる。
>docker run -it --name centos1 centos /bin/bash
[root@74908ba8a131 /]# mkdir test
[root@74908ba8a131 /]# exit
exit
>docker diff 74908ba8a131
C /root
A /root/.bash_history
A /test
コンテナからイメージを作成する(docker commit)
>docker commit -a "danishi" -m "first commit" centos1 danishi/oreno_centos:1.0
sha256:2c3d963194e237db9d1c3f0812bdcf766205a26d695770ec2b0b4d65ea34da15
>docker run -it --name oreno_centos1 danishi/oreno_centos:1.0 /bin/bash
[root@f13321dd0ed4 /]#
Docker情報の確認
Dockerのバージョンを確認する(docker version)
>docker version
Client: Docker Engine - Community
Version: 18.09.2
API version: 1.39
Go version: go1.10.8
Git commit: 6247962
Built: Sun Feb 10 04:12:31 2019
OS/Arch: windows/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.2
API version: 1.39 (minimum version 1.12)
Go version: go1.10.6
Git commit: 6247962
Built: Sun Feb 10 04:13:06 2019
OS/Arch: linux/amd64
Experimental: false
>docker build -t build_centos:1.0 .
Sending build context to Docker daemon 440.4MB
Step 1/2 : FROM centos:latest
---> 9f38484d220f
Step 2/2 : MAINTAINER Hoge <mail@example.com>
---> Running in 1072f4d2bda7
Removing intermediate container 1072f4d2bda7
---> 450742c01e43
Successfully built 450742c01e43
Successfully tagged build_centos:1.0
SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.
>docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
build_centos 1.0 450742c01e43 12 seconds ago 202MB
>docker run -it build_centos:1.0 /bin/bash
[root@f81eb38cceaa /]#