当我启动一个简单的 docker 容器(例如 Portainer)时
docker run -d --name portainer -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
Run Code Online (Sandbox Code Playgroud)
该容器可以按预期从互联网访问。
当我停止(docker stop portainer)并启动(docker start portainer)容器时,端口 9000 再次打开(使用 nmap 验证),但 portainer 的 Web 界面永远加载。
# first run
networkctl
IDX LINK TYPE OPERATIONAL SETUP
1 lo loopback carrier configured
2 enp35s0 ether routable configured
3 enp36s0 ether no-carrier configuring
5 br-1815f2210327 bridge no-carrier configuring
6 br-7f9b2f2637a1 bridge no-carrier configuring
7 br-a9ae27884558 bridge no-carrier configuring
6552 br-39aac8ad8ef3 bridge routable configuring
6559 docker0 bridge no-carrier configuring
# next run
networkctl
IDX LINK TYPE OPERATIONAL SETUP
1 lo loopback carrier configured
2 enp35s0 ether routable configured
3 enp36s0 ether no-carrier configuring
5 br-1815f2210327 bridge no-carrier configuring
6 br-7f9b2f2637a1 bridge no-carrier configuring
7 br-a9ae27884558 bridge no-carrier configuring
6552 br-39aac8ad8ef3 bridge no-carrier configuring
6559 docker0 bridge no-carrier configuring
Run Code Online (Sandbox Code Playgroud)
我已经尝试过在互联网上找到的不同解决方法,例如
nano /etc/docker/daemon.json
Run Code Online (Sandbox Code Playgroud)
{“调试”:true,“bip”:“172.20.0.1/16”}
以及各种配置中的此配置文件
nano /etc/systemd/network/docker0.network
Run Code Online (Sandbox Code Playgroud)
#[匹配] #名称=docker0
Run Code Online (Sandbox Code Playgroud)#[Network] #IPForward=yes #[Network] #Address=172.17.0.1/16 #[Link] #Unmanaged=yes
(目前所有内容都已被注释掉。)
当我重新启动 docker 守护进程时
systemctl restart docker
Run Code Online (Sandbox Code Playgroud)
然后启动docker容器
docker start portainer
Run Code Online (Sandbox Code Playgroud)
它又工作正常了。
我的系统是由 strato.de 托管的 Linux 根服务器:
docker -v
Docker version 20.10.6, build 370c289
cat /etc/issue
Ubuntu 20.04.2 LTS
uname -r
5.4.0-73-generic
Run Code Online (Sandbox Code Playgroud)
该服务器上的所有 docker 容器都会出现此问题。
如果有任何进一步的提示,我将非常感激。
更新
Ubuntu 上的 Docker 无法连接到本地主机 提到的解决方案似乎不适用于我的 Ubuntu 20.04 服务器。
昨天我在虚拟机中安装了相同的操作系统和 docker 版本。那里一切都运转良好。
亲切的问候,K1LLUM1N471
小智 5
我的问题是,我只能在容器 ( docker run --rm alpine ping google.com) 中 ping google 一次,退出后,下次运行相同的命令时,它不会 ping 通。退出容器后地址消失了,但运行ifconfig docker0命令一次后仍然存在。inetinet6
运行时networkctl status链接docker0位于configuring.
这可能会起作用:来自 Strato(专用服务器)的 Ubuntu 22.04 服务器中的
默认 Netplan 配置 ( ) 是:/etc/netplan/01-netcfg.yaml
network:
version: 2
ethernets:
mainif:
match:
name: '*'
dhcp4: yes
Run Code Online (Sandbox Code Playgroud)
将其替换为如下内容:
network:
version: 2
ethernets:
enp3s0:
dhcp4: yes
dhcp6: no
enp2s0:
dhcp4: yes
dhcp6: no
Run Code Online (Sandbox Code Playgroud)
应用 netplan 配置
sudo netplan try或sudo netplan apply
重启Docker
sudo systemctl restart docker
现在运行时networkctl链接docker0应该是unmanaged
| 归档时间: |
|
| 查看次数: |
470 次 |
| 最近记录: |