ドッカー使用のための命令(CLI)ハンドブック
Docker GUIを使用せずにShell環境でCLI(Command-Line Interface)でDockerを制御する命令のハンドブックです。ドッカーイメージの作成と制御、ドッカーコンテナの作成と制御、イメージまたはコンテナを保存してロードする方法を紹介します。
permission denied while trying to connect to the Docker daemon socket
ドッカーをインストールしてドッカーに関連する命令を実行しようとすると、 /var/run/docker.sock
の接続関連の権限エラーが発生する。システム側でドッカーがする動作は root
権限が必要なのでそうだ。
1
2
3
$ docker images -a
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/json?all=1": dial unix /var/run/docker.sock: connect: permission denied
以下のコマンドを使用して、あなたのUbuntuアカウントが /var/run/docker.sock
にアクセスできるようにする権限を与えます。
1
sudo chmod 666 /var/run/docker.sock;sudo chown -R ${USER}:users /var/run/docker.sock
イメージ
Build Docker Image
ドッカーを使用するために最初にすべきことは、ドッカー画像を作成することです。以下のコマンドでドッカーイメージをビルドできます。あなたが書いた Dockerfile
に基づいてドッカーイメージを構築するための明かりです。
1
2
3
4
5
6
7
8
9
# build general
docker build -f <Dockerfile> -t <tag> .
# build without cache
docker build -f <Dockerfile> --no-cache -t <tag> .
# -----------------------------------------------
# example
docker build -f Dockerfile -t img-my .
List Docker Images and remove it
以下は、システムに登録されているドッカーイメージのリストを照会して削除するコマンドです。
1
2
3
4
5
# list
docker images -a
# remove
docker rmi <repository name>
Remove Docker images cache
Dockerfile
を修正していきながらドッカーすでにのビルドを繰り返すと、最初にイメージをビルドする時よりビルド時間が少なくなる。これは、ドッカーがレイヤード構造を持ち、変更されていない部分がシステムにキャッシュされるために可能です。しかし、キャッシュされたコンテンツはリポジトリのスペースを占有します。ドッカーキャッシュを削除する命令は以下の通りである。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# remove docker cache
docker system prune -a
# -----------------------------------------------
# example
$ docker system prune -a
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all images without at least one container associated to them
- all build cache
Are you sure you want to continue? [y/N] y
Deleted build cache objects:
kxgva6ktfwea5hiatrfmgyeq3
...
c5tvqn2p53ledfjz4nqyrbl1g
gtdusijog41t1972eh4oggk37
Total reclaimed space: 15.34GB
Container
Create Container from Image
ドッカーイメージを作成した場合は、イメージに基づいてコンテナを作成するコマンドです。
1
2
3
4
5
docker run -d -it --name <container name> -p <ubuntu machine port>:<docker port> <image name>
# -----------------------------------------------
# example
docker run -d -it --name cond-my -p 43389:3389 -p 48080:8080 -p 44000:4000 -p 422:22 img-my
List Docker Containers and remove it
run
コマンドでドッカーコンテナを最初に実行した場合、コンテナが作成されます。そして、 ps
コマンドを使ってDockerコンテナの状態を照会し、コンテナリストを照会することができます。そしてrm
命令でドッカーコンテナの削除も可能です。
1
2
3
4
5
6
# list
docker ps -a
# remove
docker rm <container id>
Start、Stop、Attach
ドッカーリストを照会してドッカーコンテナのIDを見つけたら、 start
コマンドを使ってドッカーコンテナを起動、停止( stop
)し、ドッカーの内部に入ることができます( attach
)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# start stopped container
docker start <container id>
# start stopped container & enter container
docker start -i <container id>
# stop running container
docker stop <container id>
# enter running(started) container
docker attach <container id>
# pass to commands to running container
docker exec -it <container names> <commands>
Save/Load docker image
Export Docker Image to file
私の場合は、シノロジーナスのドッカー機能を使用します。シノロジーは、デフォルトでドッカーハブに登録されている画像に基づいてコンテナを作成する機能をサポートしています。しかし、私はDockerfile
ベースで生成されたドッカーイメージをコンテナとして使用したいので、Ubuntuマシンで生成されたイメージをファイルとして保存し、シノロジードッカーからロードして使用しました。
以下のコマンドは、システムに登録されているドッカーイメージをtar形式のファイルとして保存します。
1
2
3
4
5
docker save -o <file name> <image name>
# -----------------------------------------------
# example
docker save -o img-my.tar img-my
Load Docker Image from Image file
以下のコマンドは、tarファイル形式のドッカーイメージをシステムにロードします。
1
2
3
4
5
6
docker load -i <file name>
# -----------------------------------------------
# example
docker load -i img-my.tar
Export Docker Container to Image
状況によっては、Dockerfile
に記述した内容だけでイメージ内の環境を構成できないこともあります。そのため、手動で環境設定を完了したドッカーコンテナをイメージにする必要がある場合があります。以下の命令はドッカーコンテナを画像に変換します。
1
2
3
4
5
docker commit <container name> <image name = repository name>:<tag>
# -----------------------------------------------
# example
参考資料
- Dockerイメージの抽出と読み込み:https://dongle94.github.io/docker/docker-image-extract/