MENU
  • VPS(レンタルサーバ)比較
  • ITエンジニアの転職
  • IT技術入門(Engineers.LOG)
カテゴリー
  • IT関連 (623)
    • Bootstrap (2)
    • クラウド (4)
    • サーバー技術 (185)
    • ストレージ (7)
      • NetApp (7)
    • ネットワーク技術 (91)
      • Cisco (36)
      • Juniper (18)
      • 負荷分散装置 (17)
    • パソコン関連 (92)
      • MAC (25)
      • Windows (54)
    • プログラミング (154)
      • Ansible (11)
      • C言語 (23)
      • Python (111)
        • Django (20)
    • 仮想化 (88)
      • Docker (63)
      • VMware (23)
  • VPS (200)
    • ABLENET VPS (16)
    • Amazon Lightsail(VPS) (2)
    • ConoHaVPS (37)
    • mixhostVPS (4)
    • WebARENAIndigo (16)
    • XServerVPS (34)
    • お名前.com VPS (12)
    • さくらのVPS (24)
    • カゴヤクラウドVPS (13)
    • シンVPS (7)
  • レンタルサーバー (56)
    • エックスサーバー (38)
  • 光回線 (8)
  • 技術スキルアップ開発・学習 (7)
    • Envader (2)
    • RareTECH (2)
    • Udemy (3)
もう現役20年超えましたー。経験値ならだれにも負けないエンジニア技術ブログ
インフラエンジニアの技術LOG
  • VPS(レンタルサーバ)比較
  • ITエンジニアの転職
  • IT技術入門(Engineers.LOG)
インフラエンジニアの技術LOG
  • VPS(レンタルサーバ)比較
  • ITエンジニアの転職
  • IT技術入門(Engineers.LOG)
  1. ホーム
  2. IT関連
  3. 仮想化
  4. Docker
  5. 【Docker】任意のネットワークを作成してコンテナ間通信をする手順

【Docker】任意のネットワークを作成してコンテナ間通信をする手順

2020 5/29
Docker
2020年4月7日2020年5月29日

Dockerコンテナを構築するにあたり、一定のコンテナのグループ間で通信ができるようにしたい場合、任意のネットワークを作成し、通信する方法があります。

今回は「Docker Network」を利用したコンテナ間通信ができる環境を構築する手順をまとめました。

目次
安くて高速!高性能VPSで快適開発!
最速5分でサーバー構築
>>>こちらをチェック

エンジニア必見! 技術力を伸ばすVPS徹底比較
>>>VPS比較

Dockerコンテナ間で任意のネットワーク通信ができる環境構築

今回は、任意のネットワークセグメント「test-network」を作成して、以下のようなコンテナ間通信ができる環境を構築します。

上記構成では、事前にCentOS8のイメージを取得済みとします。
また、今回の構築環境はWindows10で実施しています。

Dockerネットワークを新規作成する

以下コマンドでDockerネットワークを新規で作成します。
新規ネットワークとして「test-network」を作成します。

C:>docker network create test-network
da2897f5839bb9285fa4b0712912da40e4694555f5dfcf0cf8d4dbeeb8861b5e

以下で「test-network」が作成されたことを確認できます。

C:>docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
89d31715b0d3        bridge              bridge              local
024c63bc653d        host                host                local
b43271f6d28a        none                null                local
da2897f5839b        test-network        bridge              local

C:>

Dockerインストール時にはデフォルトで「bridge」というネットワークが作成されますが、DNS設定がされていないため名前解決ができません。

なので、新規でDockerネットワークを作成することにより、DNS設定がされ、名前解決をすることができ、コンテナ名を使用してコンテナ間通信ができるようになります。

以下は新規で作成されて「test-network」の詳細となります。

C:>docker network inspect test-network
[
    {
        "Name": "test-network",
        "Id": "da2897f5839bb9285fa4b0712912da40e4694555f5dfcf0cf8d4dbeeb8861b5e",
        "Created": "2020-04-07T11:15:07.052528877Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]

C:>

新規で作成したネットワークを指定しコンテナを構築・起動する

上記で作成したDockerネットワークを使用して、CentOS8のコンテナを起動します。
Dockerネットワークを使用して起動する場合はコマンドオプションで「–network (network-name)」を使用します。

「CentOS8」コンテナ起動

C:>docker run -itd --privileged -p 2222:22 --name centos8 --network test-network centos:latest /sbin/init
147df6e80cb5479c8e0aa247869af057cad3f9ec5b9d7569d3c59019759344d5

「CentOS8-2」コンテナ起動

C:>docker run -itd --privileged -p 2223:22 --name centos8-2 --network test-network centos:latest /sbin/init
13736c657e7fc0b01818b3cef8750132785ac7b9f28464cf178cc5ad4e47a7aa

また、上記はポートSSHアクセスができるようにポート指定なども含めています。
詳細は以下のページを参照してください。

あわせて読みたい
【Docker】CentOS7,8をコンテナ上で動作とSSHアクセスまで Dockerのコンテナ上でCentOS7を動かし、sshアクセスまでできる状態を構築します。 DockerのCentOSイメージでは、VMプレーヤーなどをインストールして動作するよりも、簡...

起動したコンテナ間での通信確認

上記で起動したコンテナで実際に通信ができるか確認します。

「CentOS8」コンテナにアクセスし、通信確認実施します。

C:>docker exec -it centos8 /bin/bash
[root@147df6e80cb5 /]#

新規Dockerネットワークのセグメント「172.18.0.x」が割り当てられていることを確認

[root@147df6e80cb5 /]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
    link/ipip 0.0.0.0 brd 0.0.0.0
3: ip6tnl0@NONE: <NOARP> mtu 1452 qdisc noop state DOWN group default qlen 1000
    link/tunnel6 :: brd ::
22: eth0@if23: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.18.0.2/16 brd 172.18.255.255 scope global eth0
       valid_lft forever preferred_lft forever
[root@147df6e80cb5 /]#

「test-network」のデフォルトゲートウェイへの通信確認

[root@147df6e80cb5 /]# ping 172.18.0.1
PING 172.18.0.1 (172.18.0.1) 56(84) bytes of data.
64 bytes from 172.18.0.1: icmp_seq=1 ttl=64 time=0.079 ms
64 bytes from 172.18.0.1: icmp_seq=2 ttl=64 time=0.079 ms
64 bytes from 172.18.0.1: icmp_seq=3 ttl=64 time=0.079 ms
64 bytes from 172.18.0.1: icmp_seq=4 ttl=64 time=0.079 ms
64 bytes from 172.18.0.1: icmp_seq=5 ttl=64 time=0.079 ms
64 bytes from 172.18.0.1: icmp_seq=6 ttl=64 time=0.079 ms
--- 172.18.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.079/0.079/0.079/0.000 ms

「CentOS8-2」宛の通信確認

[root@147df6e80cb5 /]# ping 172.18.0.3
PING 172.18.0.3 (172.18.0.3) 56(84) bytes of data.
64 bytes from 172.18.0.3: icmp_seq=1 ttl=64 time=0.117 ms
64 bytes from 172.18.0.3: icmp_seq=2 ttl=64 time=0.117 ms
64 bytes from 172.18.0.3: icmp_seq=3 ttl=64 time=0.117 ms
64 bytes from 172.18.0.3: icmp_seq=4 ttl=64 time=0.117 ms
64 bytes from 172.18.0.3: icmp_seq=5 ttl=64 time=0.117 ms
64 bytes from 172.18.0.3: icmp_seq=6 ttl=64 time=0.117 ms
^C
--- 172.18.0.3 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.117/0.117/0.117/0.000 ms
[root@147df6e80cb5 /]#

「CentOS8-2」コンテナにアクセスし、通信確認実施します。

C:>docker exec -it centos8-2 /bin/bash
[root@13736c657e7f /]#

新規Dockerネットワークのセグメント「172.18.0.x」が割り当てられていることを確認

[root@13736c657e7f /]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
    link/ipip 0.0.0.0 brd 0.0.0.0
3: ip6tnl0@NONE: <NOARP> mtu 1452 qdisc noop state DOWN group default qlen 1000
    link/tunnel6 :: brd ::
24: eth0@if25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:42:ac:12:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.18.0.3/16 brd 172.18.255.255 scope global eth0
       valid_lft forever preferred_lft forever
[root@13736c657e7f /]#

「test-network」のデフォルトゲートウェイへの通信確認

[root@13736c657e7f /]# ping 172.18.0.1
PING 172.18.0.1 (172.18.0.1) 56(84) bytes of data.
64 bytes from 172.18.0.1: icmp_seq=1 ttl=64 time=0.118 ms
64 bytes from 172.18.0.1: icmp_seq=2 ttl=64 time=0.185 ms
64 bytes from 172.18.0.1: icmp_seq=3 ttl=64 time=0.185 ms
64 bytes from 172.18.0.1: icmp_seq=4 ttl=64 time=0.185 ms
64 bytes from 172.18.0.1: icmp_seq=5 ttl=64 time=0.185 ms
64 bytes from 172.18.0.1: icmp_seq=6 ttl=64 time=0.185 ms
^C
--- 172.18.0.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 43ms
rtt min/avg/max/mdev = 0.118/0.151/0.185/0.035 ms

「CentOS8」宛の通信確認

[root@13736c657e7f /]# ping 172.18.0.2
PING 172.18.0.2 (172.18.0.2) 56(84) bytes of data.
64 bytes from 172.18.0.2: icmp_seq=1 ttl=64 time=0.118 ms
64 bytes from 172.18.0.2: icmp_seq=2 ttl=64 time=0.205 ms
64 bytes from 172.18.0.2: icmp_seq=3 ttl=64 time=0.208 ms
64 bytes from 172.18.0.2: icmp_seq=4 ttl=64 time=0.208 ms
64 bytes from 172.18.0.2: icmp_seq=5 ttl=64 time=0.208 ms
64 bytes from 172.18.0.2: icmp_seq=6 ttl=64 time=0.208 ms
^C
--- 172.18.0.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 76ms
rtt min/avg/max/mdev = 0.118/0.177/0.208/0.041 ms
[root@13736c657e7f /]#

作成したDockerネットワークにコンテナが追加されていることを確認

新規に作成した「test-network」に該当のコンテナが含まれていることを確認します。

C:>docker network inspect test-network
[
    {
        "Name": "test-network",
        "Id": "da2897f5839bb9285fa4b0712912da40e4694555f5dfcf0cf8d4dbeeb8861b5e",
        "Created": "2020-04-07T11:15:07.052528877Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "13736c657e7fc0b01818b3cef8750132785ac7b9f28464cf178cc5ad4e47a7aa": {
                "Name": "centos8-2",
                "EndpointID": "2e051d9613caebe29a1e71bb13ae9dc8ce474a22b9626a5fa99a0e6a14eb6471",
                "MacAddress": "02:42:ac:12:00:03",
                "IPv4Address": "172.18.0.3/16",
                "IPv6Address": ""
            },
            "147df6e80cb5479c8e0aa247869af057cad3f9ec5b9d7569d3c59019759344d5": {
                "Name": "centos8",
                "EndpointID": "54b392fd269a1f0187db96cff89c8dd57f411e132b4c4ba1aa3b60463397c2aa",
                "MacAddress": "02:42:ac:12:00:02",
                "IPv4Address": "172.18.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]

C:>

Dockerネットワークを使用したコンテナ間通信は以上となります。

エンジニアスキルをアップする勉強法

ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。

あわせて読みたい
現役エンジニアがおすすめするVPSレンタルサーバ比較(高速SSD限定) 格安VPS比較(2025年最新版)

Docker
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする コメントをキャンセル

email confirm*

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)



検索
カテゴリー
新着記事
  • XServerVPS アニメ風 男の子 プログラミングをしている VPSを利用している 楽しそうにしている
    XServerVPSで証明書(SSL)を取得する方法
    2025年3月24日
    XServerVPS
  • レンタルサーバ アニメ風 女の子 楽しんでパソコンをしている 目がキラキラ
    WordPressがレンタルサーバよりVPSで利用する方がおすすめの理由
    2025年3月19日
    VPS
  • VPS レンタルサーバー アニメ風 女の子 プログラミングをしている VPSを利用している 楽しそうにしている
    VPSとクラウドの違いとは?初心者向けにわかりやすく解説
    2025年3月5日
    VPS
  • シンVPS アニメ風 女の子 パソコン プログラミングをしている VPSを利用している 楽しそうにしている
    シンVPSはWindows serverを利用できない。その理由と利用できるOSは?
    2025年3月4日
    シンVPS
  • シンVPS アニメ風 女の子 パソコン プログラミングをしている VPSを利用している 楽しそうにしている
    シンVPSでゲームを利用する環境はあるのか
    2025年3月4日
    シンVPS
  • シンVPS アニメ風 女の子 パソコン プログラミングをしている VPSを利用している 楽しそうにしている
    シンVPSのサイトの表示速度は他社に比べて早いのか?
    2025年3月4日
    シンVPS
目次
目次