5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Docker networkについて理解する

Last updated at Posted at 2018-08-30

Docker Networkについて調べてみたのでまとめ

概要

Docker Networkは起動時にdocker0という名前のネットワーク・インターフェースが起動する。また、三つのネットワークが生成される。

~ $ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
2509da118a6f        bridge              bridge              local
24b9d7c165dd        host                host                local
2580b7cd0d2f        none                null                local
  • host: ホストマシンと同一のネットワークインターフェースを使用する
  • none: ネットワーク・インターフェースを使用しない
  • bridge: docker0を使用する。コンテナ起動時にネットワーク・インターフェースを指定しなければ自動的にこれが割り当てられる。

bridgeについて

~ $ docker network inspect bridge
[
    {
        "Name": "bridge",
        "Id": "ID",
        "Created": "Created",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16",
                    "Gateway": "172.17.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "Container1": {
                "Name": "nginx",
                "EndpointID": "EndpointID",
                "MacAddress": "MacAddress",
                "IPv4Address": "172.17.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        },
        "Labels": {}
    }
]

Containers内でbridgeネットワークにぶら下がっているコンテナ一覧が見える。

docker-composeについて

docker-composeコマンドで複数のコンテナを一気に立ち上げると、全てのコンテナは新たに生成されたネットワークにぶら下げられる。生成されたネットワークは何も指定しないとdocker0インターフェースを使用する。

~ $ docker-compose ps
     Name                    Command               State          Ports
-------------------------------------------------------------------------------
nextcloud_app_1   /entrypoint.sh apache2-for ...   Up      0.0.0.0:9000->80/tcp
nextcloud_db_1    docker-entrypoint.sh mysqld      Up      3306/tcp

~ $ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
c9608596f355        nextcloud_default   bridge              local

イメージ図

まとめるとこんな感じになると思います。
※ 間違っていたらごめんなさい
Untitled Diagram.png

内部DNSについて

Docker Engineを起動するとユーザー定義ネットワーク用のDNSサーバーが起動する。同一のDockerネットワーク内においてはユーザー定義のホスト名とIPアドレスがDNSによって変換される。

参考

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?