Docker給nginx添加端口映射


場景:

運行了nginx,一開始只映射了80端口,后面載部署項目的時候,需要用到其他端口,不想重新部署容器,所以通過修改配置文件的方式給容器添加其他端口
當然。添加端口的方法是通用的,除此以外的方法比如將容器打包成鏡像,再運行一個容器,或者干脆放棄當前容器,重新運行一個容器是完全不在我考慮范圍內的

1、查看容器ID

執行命令

docker inspect nginx # 容器名

輸出

[
    {
        "Id": "135254e3429d1e75aa68569137c753b789416256f2ced52b4c5a85ec3849db87", # hash_of_the_container
        "Created": "2020-08-21T09:41:36.597993005Z",
        "Path": "/docker-entrypoint.sh",
        "Args": [
            "nginx",
            "-g",
            "daemon off;"
        ],
        "State": {
...

2、修改之前一定要先停掉容器,否則自動還原

docker stop nginx

3、修改配置文件

修改hostconfig.json

cd /var/lib/docker/containers/135254e3429d1e75aa68569137c753b789416256f2ced52b4c5a85ec3849db87 # container id
vim hostconfig.json

找到端口綁定,原本內容:

照貓畫虎,添加端口

"PortBindings": {
    "80/tcp": [
        {
            "HostIp": "",
            "HostPort": "80"
        }
    ],
    "8080/tcp": [
        {
            "HostIp": "",
            "HostPort": "8080"
        }
    ],
    "8189/tcp": [
        {
            "HostIp": "",
            "HostPort": "8189"
        }
    ]
},

修改config.v2.json

同路徑下打開config.v2.json,修改:ExposedPorts

"ExposedPorts": {
    "80/tcp": {},
    "8080/tcp": {},
    "8189/tcp": {}
},
... # 略

注意

很多文章中提到還要修改Ports,實際上是不需要的,只有在你沒有stop容器時,Ports才會有值,如果關閉了容器,就是null。當然如果你修改了也無所謂,因為重啟容器后,就會被刷新。

4、保存、退出、重啟容器

sudo systemctl restart docker.service # 重啟docker服務
docker start nginx # 容器名 # 啟動容器


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM