
コンテナを開始(run)したり、停止したり(stop)、破棄したり(rm)様々なコマンドがありますが、それらコマンドを組み合わせることによって、より便利に Docker コンテナを操作したり、コンテナの情報を取得したりすることができます。
一通りコンテナの操作をしてみたら、これら便利なコマンドも使ってみてください。
コンテナ関連のコマンド
コンテナへ接続(中へ入る)
コンテナのシェル(bash)を起動して、コンテナの中に入ります。
$ docker run -it <コンテナID> /bin/bash
上記コマンドで入れない場合は、C シェルで
$ docker run -it <コンテナID> /bin/sh
コンテナの OS(ディストリビューション)を確認する
ディストリビューションの情報を確認することができます。
$ docker exec -it <コンテナID> cat /etc/os-release
コンテナのカーネルバージョンを取得する
当たり前だけど、ホストのカーネルバージョンと同じです。ここが Vagrant とかの仮想マシンとは違うところですね。
$ docker exec -it <コンテナID> name -r
コンテナの IP アドレスを取得する
何かとコンテナの IP アドレスを知りたいこと機会がありますが、このコマンドではコンテナの IP アドレスのみが出力されるので、シェルスクリプトとかでも便利に使えます。
$ docker inspect -f ‘{{ .NetworkSettings.IPAddress }}’ <コンテナID>
コンテナの環境変数を確認する
コンテナに設定されている環境変数一覧を出力します。
$ docker exec -it <コンテナ ID> env
全てのコンテナを開始する
停止している全てのコンテナを開始(run)します。
$ docker start $(docker ps -aq)
全てのコンテナを停止する
稼働している全てのコンテナを停止します。
(コンテナのメインプロセスへ SIGTERM を送信したのち、SIGKILL を送ります)
$ docker stop $(docker ps -q)
全てのコンテナを強制停止する
稼働している全てのコンテナを強制停止します。
(コンテナのメインプロセスへいきなり SIGKILL を送ります)
$ docker kill $(docker ps -q)
全てのコンテナを削除する
使用していない全てのコンテナを削除します。
$ docker rm $(docker ps -aq)
コンテナのボリュームを取得する
コンテナにマウントされているボリュームを出力します。
$ docker inspect -f ‘{{ .Volumes }}’ <コンテナ ID>
コンテナの環境変数を確認する
コンテナに設定されている環境変数一覧を出力します。
$ docker exec -it <コンテナ ID> env
コンテナで稼働しているプロセスを取得する
PID(プロセス ID)が 1 版のプロセスがメインプロセスです。
$ docker exec -it <コンテナ ID> ps aux
コンテナに登録されている Unix ユーザーを取得する
コンテナの /etc/passwd を表示します
$ docker exec -it <コンテナ ID> cat /etc/passwd
コンテナのホスト名を取得する
コンテナのホスト名です。
$ docker exec -it <コンテナID> hostname
コンテナの hosts ファイルの内容を確認する
コンテナ起動時の link オプションで別コンテナとリンクさせると、/etc/hosts ファイルにリンク先のコンテナが追加されます。ちゃんとリンクされているかの確認などに便利なコマンドです。
$ docker exec -it <コンテナID> cat /etc/hosts
イメージ関連のコマンド
<none> イメージの削除
全ての <none> イメージを削除します。
$ docker rmi $(docker images | awk ‘/^<none>/ { print $3 }’)
イメージの削除
全てのイメージを削除します。(使用中のイメージは削除しない)
$ docker rmi $(docker images -q)
データベース関連のコマンド
MySQL サーバーへの接続
MySQL が稼働しているコンテナの MySQL に接続します。ユーザー名とパスワードは適時変更してください。
$ docker exec -it <コンテナID> mysql -u root -proot
phpMyAdmin コンテナの起動
MySQL が稼働するコンテナの IP アドレスを指定すると、その MySQL に接続した状態で phpMyAdmin コンテナが起動します。phpMyAdmin コンテナが起動したら、http://<Docker ホストのIPアドレス>:8080 で phpMyAdmin にアクセスできます。
$ docker run -d -e PMA_HOST=<MySQL コンテナの IP アドレス> -p 8080:80 phpmyadmin/phpmyadmin
Redis サーバーへの接続
Redis が稼働しているコンテナの、Redis に接続します。
$ docker exec -it <コンテナID> redis-cli
まとめ
多くのコマンドは、コンテナ ID を指定して実行する必要があるので、事前にコンテナ ID を取得する必要があります。コンテナ ID は、
$ docker ps
または
$ docker ps -a
で確認することができますが、ちょいと面倒くさい。ってことで peco と組み合わせると、めっちゃ便利で Docker するときは手放せないわけですが peco との連携は別記事でエントリします。
また、ややこしいことをしなくても実は普通に Docker コマンドにあった、ってこともありますので(docker port とか)、Docker コマンドの一覧を再確認すると新しい発見があるかもしれません。
でわでわ。