代码之家  ›  专栏  ›  技术社区  ›  NBajanca

更改默认docker0网桥ip地址

  •  0
  • NBajanca  · 技术社区  · 6 年前

    在Ubuntu Server 16.04上启动docker ce(18.06.1-ce,build e68fc7a)后,将创建以下内容:

    $ ifconfig
    docker0   Link encap:Ethernet  HWaddr 02:42:fe:36:81:72
              inet addr:172.17.0.1  Bcast:0.0.0.0  Mask:255.255.0.0
              UP BROADCAST MULTICAST  MTU:1500  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
    

    尝试1

    一些论坛表示要添加以下内容 /etc/docker/daemon.json :

    {
      "bip": "192.168.1.1/24"
    }
    

    this SO accepted answer

    一个可行的解决方案正在运行:

    sudo ip addr add dev docker0 192.168.1.1/24
    sudo ip addr del dev docker0 172.17.0.1/16
    

    forums.docker.com

    虽然这是一个可能的解决方案,但我必须在docker服务启动后执行。一些我不能做的事情,因为我失去了连接。

    answer

    在添加 -bip ExecStart 行,尝试启动docker gives(journalctl-xe):

    -- Unit docker.socket has begun starting up.
    Sep 11 11:13:19 PTLISLABHLC01 systemd[1]: Listening on Docker Socket for the API.
    -- Subject: Unit docker.socket has finished start-up
    -- Defined-By: systemd
    -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
    --
    -- Unit docker.socket has finished starting up.
    --
    -- The start-up result is done.
    Sep 11 11:13:19 PTLISLABHLC01 systemd[1]: docker.service: Start request repeated too quickly.
    Sep 11 11:13:19 PTLISLABHLC01 systemd[1]: Failed to start Docker Application Container Engine.
    -- Subject: Unit docker.service has failed
    -- Defined-By: systemd
    -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
    --
    -- Unit docker.service has failed.
    --
    -- The result is failed.
    Sep 11 11:13:19 PTLISLABHLC01 systemd[1]: docker.socket: Unit entered failed state.
    Sep 11 11:13:19 PTLISLABHLC01 polkitd(authority=local)[1062]: Unregistered Authentication Agent for unix-process:15666:32644036 (system bus name :1.56, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale en_US.UTF-8) (disconnected from bus)
    

    --bip -比普

    2 回复  |  直到 6 年前
        1
  •  9
  •   NBajanca    5 年前

    • 编辑/lib/systemd/system/码头服务在启动Docker之前。添加 --bip "192.168.1.1/24" 在队伍的尽头 ExecStart=/usr/bin/dockerd .
    • systemctl daemon-reload
    • systemctl start docker

    在Ubuntu 16.04和Docker 17.03-ce上测试。


    因为我们可能仍然需要用户定义的网桥网络,所以仍然存在一个潜在的问题。

    虽然他们说它不会与主机上现有的接口重叠,但您仍然遇到了这样的问题。因此,如果您需要用户定义的网桥网络,最好为它们指定特定的子网。据我所知,没有用于自定义IPAM驱动程序默认池的参数。

        2
  •  2
  •   NBajanca    6 年前

    我的解决方案是使用一个运行shell命令的服务。

    docker-network-setup.sh

    sudo ip addr add dev docker0 192.168.1.1/24
    sudo ip addr del dev docker0 172.17.0.1/16
    

    chmod u+x docker-network-setup.sh 以确保你能执行它。

    docker-network-setup.service :

    [Unit]
    Description=Change docker0 default IP
    # When systemd stops or restarts the docker.service, the action is propagated to this unit
    PartOf=docker.service
    # Start this unit after the docker.service start
    After=docker.service
    
    [Service]
    # The program will exit after running the script
    Type=oneshot
    # Execute the shell script
    ExecStart=/bin/bash /home/user01/docker-network-setup.sh start
    # This service shall be considered active after start
    RemainAfterExit=yes
    
    [Install]
    # This unit should start when docker.service is starting
    WantedBy=docker.service
    

    sudo cp docker-network-setup.service /etc/systemd/system 服务已启用!

    别忘了 sudo systemctl daemon-reload 如果你想马上测试服务。

    推荐文章