Dockerの基本的な操作方法を記載しておく。GUIツールを利用してみたが、やはりCLIのほうがうまく動作するためCLIでの操作を推奨する。Dockerを扱う上での必須理解項目は「イメージ」、「コンテナ」である。
1.基本的な操作
イメージの検索
DockerHubからイメージをキーワード検索する。
$ docker search centos
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
centos The official build of CentOS. 3500 [OK]
jdeathe/centos-ssh CentOS-6 6.9 x86_64 / CentOS-7 7.3.1611 x8... 77 [OK]
イメージの取得
イメージ名:タグ名を指定して取得する。タグ名を明記しない場合は「latest」が付与される。
$ docker pull centos:latest
latest: Pulling from library/centos
d5e46245fe40: Pull complete
Digest:sha256:aebf12af704307dfa0079b3babdca8d7e8ff6564696882bcb5d11f1d461f9ee9
Status: Downloaded newer image for centos:latest
PC上に保存されているイメージを表示
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 3bee3060bfc8 12 days ago 193 MB
PC上に保存されているイメージを削除
$ docker rmi 3bee3060bfc8
Untagged: centos:latest
Untagged: centos@sha256:aebf12af704307dfa0079b3babdca8d7e8ff6564696882bcb5d11f1d461f9ee9
Deleted: sha256:3bee3060bfc81c061ce7069df35ce090593bda584d4ef464bc0f38086c11371d
Deleted: sha256:dc1e2dcdc7b6ff86d785fa16cf97464d263d04346a191c57b5ca8a66b4155861
イメージの起動
方法1はexitするとコンテナが終了してしまう。方法2はexitしてもコンテナが終了しない方法である。ただし、方法1の場合でも「Ctrl+p,Ctrl+q」によりコンテナから脱出かつコンテナは終了しない。
方法1
$ docker run -it centos:latest /bin/bash
[root@2fe147e75dc9 /]# uname -a
Linux 2fe147e75dc9 4.9.27-moby #1 SMP Thu May 11 04:01:18 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
[root@2fe147e75dc9 /]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
方法2
$ docker run -itd centos:latest
4a82a4ec72bf1b28b2abe84da1b4995c23cf4aa74f32364bb3e81d75db14dd45
起動しているコンテナを確認する
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5c304f72c6d6 centos:latest "/bin/bash" 3 minutes ago Up 3 minutes
起動しているコンテナを停止させる
$ docker stop 5c304f72c6d6
5c304f72c6d6
起動しているコンテナを再起動させる
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
048697b53b77 centos:latest "/bin/bash" 19 seconds ago Up 16 seconds lucid_franklin
$ docker restart 048697b53b77
048697b53b77
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
048697b53b77 centos:latest "/bin/bash" About a minute ago Up 9 seconds lucid_franklin
コンテナに接続する
5で紹介したイメージがコンテナの場合バージョン。
方法1はexitするとコンテナが終了してしまうため、「Ctrl+p,Ctrl+q」すること。方法2はexitしても終了しない。
方法1
$ docker attach 048697b53b77
方法2
$ docker exec -it 82f647b208ea /bin/bash
[root@82f647b208ea /]# exit
exit
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
82f647b208ea centos:latest "/bin/bash" 30 seconds ago Up 28 seconds nifty_wright
2.少し高度な操作
ポートのマッピング
基本
$ docker run -d -p 8080:80 <image_name> -it /bin/bash
IPアドレスも指定
$ docker run -d -p 192.168.0.219:8080:80 <image_name>
ボリュームのマッピング
$ docker run -d -v /tmp/:/mnt/ <image_name>
コンテナのイメージ化
$ docker commit <Container ID> <image_name>:<tag>
実用的なイメージの起動方法
$ docker run -it -p 8000:8000 -v /tmp/006_log/01_arena/:/var/log/cowrie/ splunk:latest
イメージのエクスポート
$ docker save <image_name>:<tag_name> > <filename>
$ docker save --output <filename> <image_name>:<tag_name>
$ docker save -o <filename> <image_name>:<tag_name>
イメージのインポート
$ docker load < <filename>
$ docker load --input <file_name>