自宅サーバ上のDockerでsambaやらdlnaやらを提供している程度のライトユーザーであるわたくしが、
この程度覚えとけばまぁ困んないかなと思っているコマンドの一覧です。従って、バリバリのプロの参考にはならないはず…。
イメージ
イメージの作成
# cd <Dockerfileのあるディレクトリ>
# docker image build -t <つけたいイメージ名> .
イメージの確認
-- 普通にイメージ一覧を表示
# docker image ls
-- 使ってないゴミイメージも全部表示
# docker image ls -a
-- タグ付けされていないゴミっぽいイメージを表示
# docker image ls -f dangling=true
-- イメージを詳しく確認
# docker image inspect <image>
イメージの削除
-- 普通にイメージ削除(対象はスペース区切りでいくつでも)
# docker image rm <イメージ名>
-- ゴミ削除(docker image pruneだと停止中のやつを全削除してしまうので使わない)
# docker image rm $(docker image ls -f dangling=true -q)
docker image ls -aで見ると大量のがあったりしてげんにょりするが、依存関係ガッツリで削除できなかったりするので、見て見ぬふりをする…。
依存関係見るのは# docker image inspect --format='{{.RepoTags}} {{.Id}} {{.Parent}}' $(docker image list -a -q)
とかで。
コンテナ
コンテナの起動
-- 名前付きで起動してデタッチ(バックグラウンドで動かす)。終了時に自動でコンテナが削除される。
# docker container run -d --name=hoge --rm <image>
-- 色々オプション付けて起動
# docker container run -d --name=hoge --rm --net=host -p 8200:8200 -v /test/testdir:/testdir
名前付きで起動しないと、変な適当な名前を付けられて鬱陶しいので、--nameは必須レベル。
また、基本的にコンテナは同一のものを再度起動して使いまわすようなものでもないので、--rmも必須レベル。
オプションでよく使うのは、ポート共有/フォワーディングする-pやボリュームを共有する-v。
コンテナの確認
-- 普通にコンテナ一覧を表示
# docker container ls
-- 使ってないゴミコンテナも全部表示
# docker container ls -a
--- コンテナの使ってるポートを確認
# docker container port <コンテナ名>
ポート確認においては、--net=hostでホスト側のポートをそのまま使っている場合、表示されない模様。
コンテナへの侵入
---起動中のコンテナへ侵入する
# docker container exec -it <コンテナ名> bash
コンテナの停止
# docker container stop <コンテナ名>
コンテナの削除
--- 指定削除
# docker container rm <コンテナ名>
--- 停止中のコンテナを全削除
# docker container prune
基本的に--rmをつけているし、コンテナ自体に更新をかけるということはしない(Immutable)ので、
そういった設計思想の下では、全削除を実施してゴミを削除しても差し支えはないです。
データボリューム
データボリュームの確認
--- 一覧
# docker volume ls
--- 詳細
# docker volume inspect <volume>
データボリュームの削除
--- 指定削除
# docker volume rm <volume>
--- 未使用のVolumeを全削除
# docker volume prune
データボリュームも基本的に--rmで自動的に消えるはずなのですが、ソフトの一部でコンテナを使っていて、そのソフトを使わなくなった場合など、
実はデータボリュームがごみとして残っていた、ということがありますので、こちらも全削除で基本的に対応します。
ゴミとして残っている領域は意外と大きかったりするので、こまめにチェックして使っていなければ削除した方がよさそう。
尚、ボリュームの概要はこことか見ました。
ネットワーク
ネットワークの確認
--- 一覧
# docker network ls
--- 詳細
# docker network inspect <network名>
どのコンテナが使っているのかは、inspectのContainers部分を見ればわかります。
ネットワークの削除
--- 指定削除
# docker network rm <network名>
--- 未使用のnetworkを全削除
# docker network prune
削除やったことないです。
尚、公式のコマンドリファレンスはここですが、情報不足なページが多い印象…。
今後の自宅サーバ運用で必要なコマンドが出てきたら追記します。