LoginSignup
2
2

More than 5 years have passed since last update.

dockerのnetwork機能を使ってみる

Last updated at Posted at 2015-12-30

docker v1.9の新機能、ネットワークを@zembutsuさんのスライドを見て、
手元の環境で試してみました。

公式:https://docs.docker.com/v1.5/contributing/devenvironment/
experimental機能を利用する
https://github.com/docker/docker/tree/master/experimental

1.gitからcloneします。

#  git clone https://git@github.com/docker/docker
Cloning into 'docker'...
remote: Counting objects: 124196, done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 124196 (delta 6), reused 2 (delta 2), pack-reused 124184
Receiving objects: 100% (124196/124196), 74.52 MiB | 303.00 KiB/s, done.
Resolving deltas: 100% (82606/82606), done.
# cat VERSION
1.10.0-dev

2.ここで公式通り、make buildとしたいところですが、このコマンドの中でdockerコマンドを叩いており、まだインストールをしていない段階なので、command not foundとなります。

# make build
/bin/sh: docker: command not found
mkdir bundles
/bin/sh: docker: command not found
/bin/sh: docker: command not found
/bin/sh: docker: command not found
docker build -t "docker-dev:master" -f Dockerfile .
/bin/sh: docker: command not found
/bin/sh: docker: command not found
/bin/sh: docker: command not found
/bin/sh: docker: command not found
make: *** [build] Error 127

コマンドを使えるようにしたいのでdockerをyumから入れます。

参考:
http://stackoverflow.com/questions/24182901/how-to-set-up-docker-development-environment-on-debian

#yum install docker
#systemctl start docker
# make DOCKER_EXPERIMENRAL=1 binary
docker build -t "docker-dev:master" -f Dockerfile .
Sending build context to Docker daemon 108.7 MB
Step 0 : FROM ubuntu:14.04
Trying to pull repository docker.io/library/ubuntu ... 14.04: Pulling from library/ubuntu
9377ad319b00: Downloading 54.06 MB/65.67 MB
a82f81f25750: Download complete
b207c06aba70: Download complete
d55e68e6cc9c: Download complete
略 この後goのコンパイルが続きます。

yumでインストールしたdockerとgitからcloneしたdockerを入れ替えます。

#cd /usr/bin
#mv docker docker.old
#cd /home/vagrant/docker/bundles/1.10.0-dev/binary/
#cp docker-1.10.0-dev /usr/bin/
#mv docker-1.10.0-dev docker

これでdockerが使えるようになったので、適当なimageをpullします。

# docker pull ansible/centos7-ansible
# docker images
  REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
  ansible/centos7-ansible   latest              fb3ef4e58b05        29 minutes ago      416.1 MB
  docker-dev                master              b120a2605ece        About an hour ago   1.774 GB
  docker.io/ubuntu          14.04               d59bdb51bb5c        5 days ago          187.9 MB

pullしたansible imageをrunし、デフォルトのネットワークを確認します。

# docker run -it ansible/centos7-ansible
# ip a
  lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
      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
      inet6 ::1/128 scope host
         valid_lft forever preferred_lft forever
  eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
      link/ether 02:42:ac:11:00:01 brd ff:ff:ff:ff:ff:ff
      inet 172.17.0.1/16 scope global eth0
         valid_lft forever preferred_lft forever
      inet6 fe80::42:acff:fe11:1/64 scope link
         valid_lft forever preferred_lft forever

また、ホストの通常時のネットワークを確認します。

# docker network ls
NETWORK ID          NAME                DRIVER
f2d8bed96ec7        none                null
55a5cd67c642        host                host
abd8037d618e        bridge              bridge

hogeネットワークを作ります。

# docker network create hoge
787e10bb2e6f309845f7df34806fc68f8d9e5bcb1c056197aad8b5bd9361ed0e
# docker network ls
NETWORK ID          NAME                DRIVER
787e10bb2e6f        hoge                bridge
f2d8bed96ec7        none                null
55a5cd67c642        host                host
abd8037d618e        bridge              bridge

hogeネットワークの詳細をinspectオプションで確認

# docker network inspect hoge
[
    {
        "Name": "hoge",
        "Id": "5c18c10469063f396a50f699e4b0a75ae0036f55da190b7447726d8a51334eb1",
        "Scope": "local",
        "Driver": "bridge",
        "IPAM": {
            "Driver": "default",
            "Config": [
                {}
            ]
        },
        "Containers": {},
        "Options": {}
    }
]

このように起動すると、hogeネットワークを使える。

#docker run --net=hoge -it ansible/centos7-ansible
# ip a
 lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
     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
     inet6 ::1/128 scope host
        valid_lft forever preferred_lft forever
  eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
     link/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ff
     inet 172.18.0.2/16 scope global eth0 ★
        valid_lft forever preferred_lft forever
     inet6 fe80::42:acff:fe12:2/64 scope link
        valid_lft forever preferred_lft forever

# cat /etc/hosts
172.18.0.2      42bbea885190
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

上で設定したネットワークをホスト側から見てみる。


# docker network inspect hoge
[
    {
        "Name": "hoge",
        "Id": "5c18c10469063f396a50f699e4b0a75ae0036f55da190b7447726d8a51334eb1",
        "Scope": "local",
        "Driver": "bridge",
        "IPAM": {
            "Driver": "default",
            "Config": [
                {}
            ]
        },
        "Containers": {
            "42bbea885190484a555cf7785adbae50ccdd05590ba8737b006a63f78ed88177": {
                "Name": "jovial_mahavira",
                "EndpointID": "ccb7c7eb3b908a55d4e4825724e084d160b89e35ea9ddaf624acbf95cbdb882c",
                "MacAddress": "02:42:ac:12:00:02",
                "IPv4Address": "172.18.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {}
    }
]

もう1つ、ansible/centos7-ansibleを別のターミナルで開き、172.18.0.3のIPが振られていることを確認する。

# 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.088 ms
64 bytes from 172.18.0.3: icmp_seq=2 ttl=64 time=0.075 ms
64 bytes from 172.18.0.3: icmp_seq=3 ttl=64 time=0.065 ms

172.17.0.2から疎通できる。ホスト間通信ができる。

docker swarmを使わないでoverlayNWは作れないぽい。
http://qiita.com/ma2saka/items/bd4a846bdb5a4ee75d42
https://docs.docker.com/swarm/discovery/

2
2
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
2
2