如何更改正在运行的Docker容器的网络?

时间:2019-02-16 06:43:40

标签: docker

我正在尝试更新正在运行的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

2 个答案:

答案 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容器的网络,则可以这样做。我不确定到底哪种方法是最好的,但是下面的步骤对我有用(将默认情况下将桥接网络上运行的容器更改为主机网络):

  1. 在“容器”列表中,单击容器名称(在本例中为emby)
  2. 停止容器
  3. 点击复制/编辑
  4. 向下滚动到高级容器设置,然后选择“网络”标签
  5. 将网络更改为host(或将其设置为任何值)
  6. 点击上方的部署容器
  7. 确认您要替换旧容器(如果要保留在容器中并保留旧容器,则以新名称部署它)。
  8. 完成! Screenshot of Advanced container settings