Docker 基本操作 (チートシート)
Docker 操作の状態遷移
Docker の状態遷移がわかりづらい (にも関わらず図示した解説を見かけない) ため、誤っている可能性を恐れず、可視化してみた。(利用は自己責任で。)
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+P Ctrl+Q | bash が生きているコンテナのみ有効 |
コンテナへの接続 | 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 の再起動では非有効。