Docker on WSL2 環境構築メモ (1/x) - Docker 基本操作

Docker 基本操作 (チートシート)

Docker 操作の状態遷移

Docker の状態遷移がわかりづらい (にも関わらず図示した解説を見かけない) ため、誤っている可能性を恐れず、可視化してみた。(利用は自己責任で。)
f:id:Crayon:20210203221706j:plain

Docker レポジトリ (イメージ) の操作

レポジトリ (ID) とは Docker Hub におけるイメージを固有識別子 (ubuntu などのテキスト) で表現したもの。イメージ (ID) とはローカルに保持しているイメージをその固有識別子 (f12345a12b1f などの記号列) で表現したもの。

アクションコマンド補足
イメージの取得docker pull {repository}[:{tag}]{tag} 省略時: latest 指定と同等
イメージ (レポジトリ) 検索は こちら
イメージの一覧表示docker images [-a] [{repository}[:{tag}]]-a 省略時:中間イメージ非表示
{repository}, {tag} 省略または * 指定時:全量表示
イメージの削除docker rmi {repository:tag}
docker rmi {image}
「レポジトリ+タグ (イメージに対するリンク)」の削除が先で、
リンク参照が 0 になるときに「イメージ (実体)」が削除される
イメージの一括削除docker image pruneコンテナから利用・参照中のものを除く
イメージへのレポジトリ
(リンク識別子) 追加
docker tag {image} {repository}[:{tag}]{tag} 省略時: latest 指定と同等

Docker コンテナの操作

サービス起動後 bash プロンプトに戻らないコンテナを操作するときは & を付して docker コマンド自体をバックグラウンドで動かすと吉。

アクションコマンド補足
コンテナの生成+起動docker run
   [-itd] [--name=XXX] [--restart=always]
   {repository}[:{tag}] [command]
-i 指定時:標準入力利用
-t 指定時:標準出力利用
-d 指定時:デタッチモード (バックグラウンド実行)
--name=XXX 省略時:イメージが保持している既定コンテナ名が利用される
--restart:always 指定時:docker や Linux 再起動時にコンテナを再起動する *1
docker run -p {from}:{to} {repository}【Tips】
-p 指定時:Port Relay 設定
from はコンテナ外 Port、to はコンテナ内 Port
docker run -v {from}:{to} {repository}【Tips】
-v 指定時:ディスクマウント設定
from はコンテナ外資源、to はコンテナ内マウントポイント
コンテナの起動docker start [-ai] {container}-a 指定時:アタッチモード (フォアグラウンド実行)
-i 指定時:標準入力利用
docker start -ai $(docker ps -lq)【Tips】
最終生成コンテナの再起動
コンテナの再起動docker restart {container}
コンテナの停止docker stop [-t {seconds}] {container}-t 指定時:指定秒数後に停止
コンテナのバックグラウンド化キー入力Ctrl+PCtrl+Qbash が生きているコンテナのみ有効
コンテナへの接続docker exec -it {container} /bin/bash
コンテナの一覧表示docker ps [-alq] [{container}]-a 指定時:停止中コンテナ表示
-l 指定時:最終生成コンテナを返す
-q 指定時:コンテナ ID 情報のみを返す
{container} 省略時:全量表示
コンテナの固有情報表示docker inspect {container}
コンテナの削除docker rm {container}停止中コンテナのみ削除可能
コンテナの一括削除docker container prune停止中コンテナのみ削除可能
コンテナのイメージ保存docker commit {container} {repository[:tag]}停止中コンテナのみ保存可能

Docker データボリュームの操作

アクションコマンド補足
データボリュームの一覧表示docker volume ls
データボリュームの固有情報表示docker volume inspect {volume}
データボリュームの作成docker volume create {volume}
データボリュームの削除docker volume rm {volume}
データボリュームの一括削除docker volume prune不使用データボリュームのみ削除可能

Docker Compose の操作

docker-compose コマンドはすべて、docker-compose.yml に定義されているコンテナしか対象としない。

アクションコマンド補足
定義済みコンテナの一斉起動docker-compose [-f {file}] up [-d]-f 省略時:./docker-compose.yml を指定したとみなす
-d 指定時: デタッチモード (バックグラウンド実行)
定義済みコンテナの一斉停止docker-compose stop [-t: seconds]-t 指定時:指定秒数後に停止
定義済みコンテナの一斉再起動docker-compose restart
定義済みコンテナの一覧表示docker-compose ps [-aq]-a 指定時:停止中コンテナ表示
-q 指定時:コンテナ ID 情報のみを返す
定義済みコンテナの一斉削除docker-compose rm

その他 Tips

レポジトリ・リストのクリーンアップ

Docker コンテナの内外を問わず、環境構築を終わって運用に入るときにはレポジトリ・リストのクリーンアップを図り、ディスクを効率活用する。

sudo apt clean
sudo rm -rf /var/lib/apt/lists/*

*1:ホスト OS の再起動では非有効。