前言
docker 创建容器时可指定端口映射。但容器一旦生成,暂无法通过命令直接修改端口映射。
方法1:将容器转换成镜像,用新的镜像创建新的容器
因只能在 docker run
和 docker create
命令时通过-P
命令指定端口,因此可以将当前容器保存成镜像,再通过镜像创建新的容器。比如这样:
方法2:修改容器配置
可以直接修改容器的配置文件:
要点:
- 修改前一定要先备份,以防手滑。
- 修改配置文件时,一定要先停止容器。作用为:避免docker缓存的干扰。
- 修改完配置文件时,一定要先重启docker。作用为:清除docker缓存。
修改hostconfig.json时,找到PortBindings
节点进行修改:
"PortBindings":{"3306/tcp":[{"HostIp":"","HostPort":"3306"}]}
方法3:创建新的容器
原来的容器不要了,直接创建一个新的容器。缺点:丢失数据。
方法4:nginx stream代理
如果有nginx时,可以通过nginx的stream代理替代docker的端口映射。
参考:nginx stream代理
参考
https://stackoverflow.com/questions/19335444/how-do-i-assign-a-port-mapping-to-an-existing-docker-container
https://www.cnblogs.com/richerdyoung/p/10154753.html