--- icon: edit date: 2021-09-16 category: - Docker tag: - Docker - nginx headerDepth: 5 --- # Docker给nginx添加端口映射 ## 场景: >运行了nginx,一开始只映射了80端口,后面载部署项目的时候,需要用到其他端口,不想重新部署容器,所以通过修改配置文件的方式给容器添加其他端口 >当然。添加端口的方法是通用的,除此以外的方法比如将容器打包成镜像,再运行一个容器,或者干脆放弃当前容器,重新运行一个容器是完全不在我考虑范围内的 ## 1、查看容器ID 执行命令 ```shell docker inspect nginx # 容器名 ``` 输出 ```json [ { "Id": "135254e3429d1e75aa68569137c753b789416256f2ced52b4c5a85ec3849db87", # hash_of_the_container "Created": "2020-08-21T09:41:36.597993005Z", "Path": "/docker-entrypoint.sh", "Args": [ "nginx", "-g", "daemon off;" ], "State": { ... ``` ## 2、修改之前一定要先停掉容器,否则自动还原 ```shell docker stop nginx ``` ## 3、修改配置文件 修改hostconfig.json ```shell cd /var/lib/docker/containers/135254e3429d1e75aa68569137c753b789416256f2ced52b4c5a85ec3849db87 # container id vim hostconfig.json ``` 找到端口绑定,原本内容: ![image.png](/upload/2021/09/image-b18afbfb43414f6da5550bae5f7566c0.png) 照猫画虎,添加端口 ```json "PortBindings": { "80/tcp": [ { "HostIp": "", "HostPort": "80" } ], "8080/tcp": [ { "HostIp": "", "HostPort": "8080" } ], "8189/tcp": [ { "HostIp": "", "HostPort": "8189" } ] }, ``` 修改config.v2.json 同路径下打开config.v2.json,修改:ExposedPorts ```json "ExposedPorts": { "80/tcp": {}, "8080/tcp": {}, "8189/tcp": {} }, ... # 略 ``` ### 注意 很多文章中提到还要修改Ports,实际上是不需要的,只有在你没有stop容器时,Ports才会有值,如果关闭了容器,就是null。当然如果你修改了也无所谓,因为重启容器后,就会被刷新。 ## 4、保存、退出、重启容器 ```shell sudo systemctl restart docker.service # 重启docker服务 docker start nginx # 容器名 # 启动容器 ```