投稿

ドッカー使用のための命令(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/

この記事は著作権者のライセンス:LICENSE_NAMEに従います。