在docker run建立并运行容器的时候,能够经过-p指定端口映射规则。可是,咱们常常会遇到刚开始忘记设置端口映射或者设置错了须要修改。当docker start运行容器后并无提供一个-p选项或设置,让你修改指定端口映射规则。那么这种状况咱们该怎么处理呢?今天Docker君教你如何修改运行中的docker容器的端口映射?docker
这个解决方案最为简单,把原来的容器删掉,从新建一个。固然此次不要忘记加上端口映射。数据库
优缺点:优势是简单快捷,在测试环境使用较多。缺点是若是是数据库镜像,那从新建一个又要从新配置一次,就比较麻烦了。json
容器的配置文件路径:bash
/var/lib/docker/containers/[hash_of_the_container]/hostconfig.json
复制代码
其中的hashofthecontainer是docker镜像的hash值,能够经过docker ps或者docker inspect containername查看。(CONTAINER ID就能够看出来)微信
如上图,文件中其中有一项是PortBindings,其中8080/tcp对应的是容器内部的8080端口,HostPort对应的是映射到宿主机的端口9190。8361/tcp对应的是容器内部的8361端口,HostPort对应的是映射到宿主机的端口9191。按需修改端口,而后重启docker服务,再启动容器服务就能够了。tcp
systemctl restart docker
复制代码
优缺点:这个方法的优势是没有反作用,操做简单。缺点是须要重启整个docker服务,若是在同一个宿主机上运行着多个容器服务的话,就会影响其余容器服务。测试
docker commit:把一个容器的文件改动和配置信息commit到一个新的镜像。这个在测试的时候会很是有用,把容器全部的文件改动和配置信息导入成一个新的docker镜像,而后用这个新的镜像重起一个容器,这对以前的容器不会有任何影响。spa
一、中止docker容器rest
docker stop container01
复制代码
二、commit该docker容器code
docker commit container01 new_image:tag
复制代码
三、用前一步新生成的镜像从新起一个容器
docker run --name container02 -p 80:80 new_image:tag
复制代码
优缺点:这种方式的优势是不会影响统一宿主机上的其余容器,缺点是管理起来显得比较乱,没有第二种方法那么直观。
若是想了解更多Docker相关知识,请微信搜索“Docker中文社区”或扫描下方二维码关注微信号