「プログラマのためのDocker教科書」の感想・備忘録2

スポンサーリンク
「プログラマのためのDocker教科書」の感想・忘備録1の続き

ネットワーク

ネットワーク一覧表示

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からイメージを生成する。
#以降はコメントとして扱われる。

コメント