我从以下网站下载了 CentOS Atomic Host这里并安装在 VirtualBox VM 中,使用 Bridged 适配器作为网络适配器。默认安装,我只设置了 root 密码,没有其他设置。然后我登录 VM 并运行命令systemctl enable cloud-init
来初始化我的实例和reboot
。cloud-init 的用户数据和元数据文件如下:
#meta-data | #user-data
--------------------------------------------------------------------------------
instance-id: magicatomic | #cloud-config
local-hostname: ss.magicatomic | groups:
network-interfaces: | | - docker: [root]
auto enp0s3 | write_files:
iface enp0s3 inet static | - content: |
address 192.168.1.110 | {
network 192.168.1.0 | "debug": true,
netmask 255.255.255.0 | "hosts": ["tcp://192.168.1.110:2375"]
broadcast 192.168.1.255 | }
gateway 192.168.1.1 | path: /etc/docker/daemon.json
| runcmd:
| - sudo systemctl daemon-reload
| - sudo systemctl restart docker.service
但配置有一半损坏,这意味着:未设置默认网关,并且协议未设置为静态,/etc/sysconfig/network-scripts/ifcfg-enp0s3
当我这样做时,cat /etc/sysconfig/network-scripts/ifcfg-enp0s3
我得到
BOOTPROTO=none
DEVICE=enp0s3
IPADDR=192.168.1.110
NETMASK=255.255.255.0
ONBOOT=yes
TYPE=ethernet
USERCTL=no
当我这样做的时候route -n
Kernel IP Routing Table
Destination Gateway Genmask Flags Metric Ref Use Iface
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s3
问题:未设置默认网关
答案1
也许只有 25% 损坏了...您的 cloud-init 配置导致“BOOTPROTO=none”,这相当于“BOOTPROTO=static” 更多信息请参见这些链接。
https://access.redhat.com/solutions/41630 或者 https://unix.stackexchange.com/questions/167083/bootproto-none-static-dhcp-and-etc-resolv-conf
我仍在寻找未设置默认网关的原因。您尝试过删除该行吗?我正在查看文档... http://cloudinit.readthedocs.io/en/latest/topics/network-config-format-v1.html
更新:这似乎是一个已知问题,正在积极处理。跟踪此问题的错误是https://bugzilla.redhat.com/show_bug.cgi?id=1492726和https://bugs.launchpad.net/cloud-init/+bug/1686856
作为一种解决方法,我建议在 runcmd 中添加一行,内容如下nmcli con modify enp0s3 ipv4.gateway 192.168.1.1