LoginSignup
6
6

More than 3 years have passed since last update.

Dockerを起動すると接続できなくなる場合の対応方法(docker0ブリッジの削除と再設定)

Last updated at Posted at 2019-07-23

社内のネットワーク設定とdockerのデフォルトブリッジ設定が衝突しているせいで、毎回設定し忘れてハマるのでメモ。

そしてDocker-CEになる前の設定方法を見ていてハマったのでメモ。

そもそもの原因

操作しているPCが172.17.x.xのネットワークに属している場合に、dockerでデフォルトで設定される仮想ブリッジネットワークが172.17.0.1/16なので衝突してしまいdockerホストに接続できなくなってしまう。

対処方法

docker0仮想ブリッジを削除して、手動設定で再作成する。

環境

  • CentOS 7
  • Docker-CE 19.03
  • 開発PCがのIPアドレスが172.17.x.x
  • 設定変更用の172.17.0.0/16以外のPC

手順とコマンド

CentOSだったのでrootで操作。Ubuntuの場合は適宜sudoしてください。

衝突の確認

# ip addr
...
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 02:42:f7:ae:5c:3e brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
# nmcli
...
docker0: 接続済み to docker0
        "docker0"
        bridge, 02:42:F7:AE:5C:3E, sw, mtu 1500
        inet4 172.17.0.1/16
        route4 172.17.0.0/16

確かに172.17.0.1/16が使われていることを確認

dockerの停止

# systemctl stop docker
# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: inactive (dead) since 火 2019-07-23 16:55:20 JST; 19s ago
     Docs: https://docs.docker.com
  Process: 58478 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock (code=exited, status=0/SUCCESS)
 Main PID: 58478 (code=exited, status=0/SUCCESS)
...

ブリッジの停止と削除

# ip link set dev docker0 down  # 停止
# nmcli
...
docker0: 管理無し
        "docker0"
        bridge, 02:42:F7:AE:5C:3E, sw, mtu 1500
...
#
# ip link delete docker0  # 削除
# nmcli
...
(docker0が表示されなくなる)
...

docker0仮想ブリッジのIPを変更

/etc/docker/daemon.jsonとして以下内容のファイルを配置する。

{
  "bip": "192.168.1.1/16"
}

ここでは192.168.1.1にしているが、クラスC192.168.x.xも使われている可能性があるので、10.0.x.xとか適宜変更(DNSサーバーとぶつかって名前解決できなくなった……orz)。

参考: Customize the docker0 bridge

/etc/sysconfig/docker/etc/default/docker/etc/systemd/system/docker.serviceなどを利用した方法はDocker-CEになる以前の1.x系の設定方法なので使えません。

dockerを起動

# systemctl start docker
# nmcli
...
docker0: 接続済み to docker0
        "docker0"
        bridge, 02:42:38:75:80:FD, sw, mtu 1500
        inet4 192.168.1.1/16
        route4 192.168.0.0/16

これで172.17.x.x/16ネットワーク上のPCからでも接続できるようになる。

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