docker容器切换网络、端口

前言

docker新建好容器后发现容器内默认监听的端口都是80,但是网络是直接桥接到宿主机的,所以容器里面的服务端口会冲突。

不想一个个改端口,而且不确定有哪些服务端口是冲突的。

踩坑

docker network disconnect host container
docker network connect bridge container
docker start container

会报ip冲突

Error response from daemon: failed to add interface veth4569079 to sandbox: error setting interface "veth4569079" IP to 172.17.0.3/16: cannot program address 172.17.0.3/16 in sandbox interface because it conflicts with existing route {Ifindex: 16 Dst: 172.17.0.0/16 Src: 172.17.0.1 Gw: <nil> Flags: [] Table: 254} Error: failed to start containers: xxxx

网上说改什么config.v2.json或者其他容器文件,这种操作根本不行,容器重新启动后这些文件又会恢复成原来那样。

解决

换一种方法,就是将容器打包成镜像,再从这个镜像中重新创建容器就好了。

# 打包镜像
dokcer commit -p container imagename:tag
# 把需要配置的网络和端口写上即可
docker run -it --name newcontainer --network bridge -p 88:80 imagename:tag bash

docker容器切换网络、端口
http://blog.icy8.cn/posts/46172/
作者
icy8
发布于
2022年5月1日
许可协议