Docker network
ネットワーク種類
ネットワーク | 機能 | 備考 |
---|---|---|
bridge | 規定 | -p 8080:80 ホストとコンテナを接続 |
host | ホストのIPを共有 内部IPの変換を行わない。 =同じポート番号のコンテナを複数起動できない |
--net host pオプション使用不可 |
none | ネットワークに接続しない | --net none |
コマンド
コマンド | 機能 | 備考 | |
---|---|---|---|
docker network ls | ネットワーク表示 | ||
docker network create ネットワーク名 | ネットワーク作成 | ||
docker network rm ネットワーク名 | ネットワーク削除 |
オプション
オプション | 機能 | 備考 |
---|---|---|
--net | コンテナ間通信時のネットワークを指定 | docker run -it -p 8080:80 |
docker-compose.yml
前提
本来はdefault_プロジェクト名のnetworkが自動で作成され、全てのcompose内のコンテナはこのnetworkに接続される。
default使用
default_プロジェクト名のnetworkを自動作成せず、以下のnetworkを既定のnetworkとする。
全てのcompose内のコンテナはこのnetworkに接続される。
事前にdocker network create testが必要
services:
web:
〜
networks:
default:
external:
name: test
独自network利用
事前にdocker network create testが不要
ネットワーク:docker_testが自動で作成される(←書き方の問題?)
compose上ではtestで利用される
services:
web:
〜
networks:
- test
networks:
test:
確認
docker network ls
NETWORK ID NAME DRIVER SCOPE
XXXXXXX docker_test bridge local
docker network inspect docker_test
“Containers”: {
”XXXXXXXXXX”: {
”Name”: “web”,
〜
}
}
recreate
前提:一度defaultのネットワークに接続した後、別のdefaultを作成しても明示的に接続先を指定しない限り接続先は変わらない。
↓
defaultのネットワークを更新
docker-compose up --force-recreate
Docker Inspectによる接続確認
接続されているコンテナのIP一覧
docker inspect --format='{{range $host. $conf := .Containers }}{{$conf.Name}}->{{$conf.IPv4Address}}{{end}}' bridge
インスタンスの IP アドレスを取得
docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $INSTANCE_ID
インスタンスの MAC アドレスを取得
docker inspect '{{range .NetworkSettings.Networks}}{{.MacAddress}}{{end}}' $INSTANCE_ID
インスタンス用ログのパスを取得
docker inspect --format='{{.LogPath}}' $INSTANCE_ID
バインドしているポート一覧を表示
docker inspect --format='{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}' $INSTANCE_ID