(こちらは、さくらインターネットアドベントカレンダー2019 1日目の投稿です。意外と知られてなさそうな操作方法やコマンドを紹介します。 )
概要
Docker を日常で利用するにあたり、操作が便利になる方法や、コマンド、考え方です。他にも思いついたら、また追加していきます。
Tips
コンテナ ID やイメージ ID などに対する操作は前方一致
各コンテナやイメージ、ネットワーク、ボリュームには、ユニークな 64 文字の ID が割り振られています。
docker
コマンドで、コンテナ ID 等を指定時、すべてのコンテナ ID を入力する必要はありません。 Docker は内部で 前方一致 する対象を自動的に判別します。
たとえば、 docker ps
で次のコンテナが表示されるとします。
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
66015a77c86e nginx "nginx -g 'daemon of…" 5 seconds ago Up 4 seconds 80/tcp sleepy_carson
この時、このコンテナを停止するには docker kill 66015a77c86e
(コンテナのショートIDを指定)、または docker kill sleepy_carson
のようにコンテナ名を指定します。
ですが、 docker kill 6
のみでも停止できます。ただし、他にも前方一致するコンテナが存在しない場合です。
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
66015a77c86e nginx "nginx -g 'daemon of…" 5 seconds ago Up 4 seconds 80/tcp sleepy_carson
6dfe781fb0d3 nginx "nginx -g 'daemon of…" 8 seconds ago Up 7 seconds 80/tcp beautiful_pasteur
ここでは、 6
で始まるコンテナ ID が複数ある場合に docker kill 6
を実行すると、エラー Error response from daemon: Cannot kill container: 6: Multiple IDs found with provided prefix: 6
と表示されます(前方一致するる複数のコンテナ ID が存在するという内容)。
このような場合もありますので、 docker kill 660
のように、3文字くらい普段から入力する癖をつけておくと、毎回コンテナ ID をコピー&ペーストする必要がないので便利です。
docker system df で容量表示
Docker コンテナ、イメージやネットワーク、ボリュームでどれだけホスト上の容量を使用しているかを調べるコマンドです。
# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 2 1 345.4MB 219.6MB (63%)
Containers 2 0 4B 4B (100%)
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B
環境のクリーンアップ
docker system prune コマンド
docker system prune
コマンドを実行すると、以下のリソースをまとめて削除します。
- すべての停止中のコンテナ
- コンテナに使用されていないネットワーク
- ビルドで用いられr中間イメージとビルド・キャッシュ
確認のプロンプトで y
を入力すると、不要なものをまとめて削除してくれます。
docker system prune 対象外のものを全部消すには
すべてのコンテナ、イメージを削除するには、複数のコマンドを組み合わせます。稼働中のコンテナをすべて強制停止(kill)し、不要なネットワークやボリュームを削除した後、すべてのイメージを削除します。
# docker kill $(docker ps -q)
# docker system prune -f && docker rmi -f $(docker images -aq)
Docker セットアップ
簡単な Docker Engine のセットアップ(Linux)と覚え方
インストール方法は、 https://get.docker.com/ というホスト名だけを覚えておきます。表示されるページは、Docker を児童インストールするシェルスクリプトです。そのため、をブラウザや curl
などで開くと、Docker をインストールするコマンドが確認できます。
# This script is meant for quick & easy install via:
# $ curl -fsSL https://get.docker.com -o get-docker.sh
# $ sh get-docker.sh
あとは、root 権限や sudo で sh get-docker.sh
を実行するだけで、各ディストリビューションに対応した Docker Engine のリポジトリ設定と、最新安定版の Docker Engine を自動的に設定します。
CentOS 7、Fedora、Ubuntu、Debian に対応しています。
CentOS 7 の場合
このスクリプトを使っても Docker デーモンは自動起動しないため、 systemctl
で Docker Engine の起動と、サーバ起動後は自動的にサービスを起動するコマンドを実行します。
# systemctl start docker
# systemctl enable docker