我正在尝试更新正在运行的Docker容器的网络。
注意:我在运行容器时没有连接任何网络。
[root@stagingrbt ~]# docker network connect host cdf8d6e3013d
Error response from daemon: container sharing network namespace with another container or host cannot be connected to any other network
[root@stagingrbt ~]# docker network connect docker_gwbridge cdf8d6e3013d
error during connect: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.39/networks/docker_gwbridge/connect: EOF
[root@stagingrbt ~]# docker network create -d host my-host-network
Error response from daemon: only one instance of "host" network is allowed
[root@stagingrbt ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
495080cf93e3 bridge bridge local
cf0408d6f13f docker_gwbridge bridge local
2c5461835eaf host host local
87e9cohcbogh ingress overlay swarm
84dbd78101e3 none null local
774882ac9b09 sudhirnetwork bridge local
答案 0 :(得分:3)
启动容器时,例如:
$result = new PhpOffice\PhpSpreadsheet\Spreadsheet();
$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($result, "Xls");
默认情况下它已连接到docker run -d --name alpine1 alpine
网络,请使用以下命令进行检查:
bridge
如果您尝试通过以下方式将其连接到docker container inspect alpine1
网络:
host
您得到一个错误:
守护程序的错误响应:容器无法从主机网络断开连接或连接到主机网络
您必须删除容器,然后在主机网络上再次构建它:
docker network connect host alpine1
此限制在网桥网络上不存在。您可以启动一个容器:
docker stop alpine1
docker rm alpine1
docker run -d --network host --name alpine1 alpine
将其与网桥网络断开连接,然后将其重新连接到另一个网桥网络。
docker run -d --name alpine2 alpine
还要注意,根据documentation:
主机网络驱动程序仅适用于Linux主机,而Mac的Docker桌面,Windows的Docker桌面或Windows Server的Docker EE不支持该主机网络驱动程序。
答案 1 :(得分:0)
如果您想绕过命令行并通过portainer更改Docker容器的网络,则可以这样做。我不确定到底哪种方法是最好的,但是下面的步骤对我有用(将默认情况下将桥接网络上运行的容器更改为主机网络):