ネットワーク
ネットワーク一覧表示
docker network ls
コンテナ同士が通信するとき、Dockerネットワークを介して行われる。
デフォルトではbridge,host,noneの3つのネットワークが存在する。
ネットワークを指定せずにコンテナを起動するとbridgeネットワークになる。
ネットワークの作成
docker network create [オプション] ネットワーク名
例)docker network create web-network
Dockerのデフォルトのブリッジネットワークとユーザーが作成したネットワークでは名前解決の仕組みが異なる。前者はDockerインストール時に自動的に作成されるもので、コンテナ生成時に明示的に指定しない場合、このネットワークでコンテナが起動する。
たとえば、webap, logという2つのコンテナをデフォルトのブリッジネットワークで起動した場合、名前解決はできない。コンテナ生成時に–link オプションを付けて相手の「コンテナ名:エイリアス名」を指定する必要がある。
–linkオプションを指定すると、コンテナ内の/etc/hostsにコンテナ名とIPアドレスが登録される。
ユーザー定義ネットワークは、dockerデーモンに内蔵されたDNSサーバによって名前解決が行われる。ユーザー定義ネットワークを使ったほうがより柔軟で容易なネットワーク構成管理が可能なため、特に理由がない限りこちらを使うべき。
ネットワークへの接続
docker network connect [オプション] ネットワーク名 コンテナ名
例)docker network connect web-network webfront
既出だが、docker container run
コマンドの--net=xxx
オプションで、コンテナ起動時にネットワークへの接続が可能。
例)docker container run -itd --name=webap --net~web-network nginx
ネットワークからの切断
docker network disconnect ネットワーク名 コンテナ名
例)docker network disconnect web-network webfront
ネットワークの詳細確認
docker network inspect [オプション] ネットワーク名
ネットワークの削除
docker network rm [オプション] ネットワーク名
削除するには、接続中の全てのコンテナを切断する必要がある。
起動中コンテナへの接続
docker container attach
たとえば、/bin/bashを実行しているsampleという名前のコンテナに接続するには「docker container attach sample
」を実行する。
接続したコンテナごと終了させるときはCtrl+C、コンテナは起動したままコンテナ内で動くプロセス(/bin/bash)のみ終了させるときはCtrl+P Ctrl+Q。
起動中コンテナでプロセス実行
docker container exec [オプション] コンテナ名 実行コマンド [引数]
たとえば、webserverという名前の稼働中コンテナで/bin/bashを実行するにはdocker container exec -it webserver /bin/bash
を実行する。
Webサーバのようにバックグラウンドで実行しているコンテナにアクセスしたいとき、docker container attach
コマンドで接続しても、シェルが動作していない場合はコマンドを受け付けることができない。
そのため、docker container exec
コマンドを使って任意のコマンドを実行する。
起動中コンテナのプロセス確認
docker container top コンテナ名
起動中コンテナのポート転送確認
docker container port コンテナ名
コンテナ名変更
docker container rename 旧コンテナ名 新コンテナ名
コンテナ名とホスト間でのファイルコピー
docker container cp コンテナ名:コンテナ内のパス ホストのパス
docker container cp ホストのパス コンテナ名:コンテナ内のパス
コンテナ操作の差分確認
docker container diff コンテナ名
コンテナ内でなんらかの操作を行い、コンテナがイメージから生成されたときからの差分を確認できる。
Dockerfileはコンテナの構成情報を記述するためのテキストファイルである。docker build
コマンドでDockerfileからイメージを生成する。
#以降はコメントとして扱われる。