修改 Docker 容器對映的埠

AlicFeng發表於2019-10-01

前言

就執行中的容器而言,對於資源性的修改可以直接使用 docker update 進行改動,但是對映的埠、掛載等不可通過指令修改,雖然可以刪除容器再新建一個新的容器,除了此方案還可以修改容器的執行時配置檔案引數

方案步驟概覽

graph LR
stopContainer[停止容器]
modifyConfiguration[修改執行時配置]
restartDocker[重啟docker服務]

stopContainer-->modifyConfiguration
modifyConfiguration-->restartDocker

具體流程說明 | markdown的流程圖不能顯示O(∩_∩)O~

第一步 : 檢視容器的 hash
docker inspect ${容器id} | grep Id
第一步 : 停止執行中的容器
docker stop ${容器id}
第二步 : 修改配置檔案

配置檔案包括 config.v2.json 與 hostconfig.json

一般情況下,停止了容器後,config.v2.json 配置檔案不會有埠對映的配置

  • 配置路徑規則

    # config.v2.json
    /var/lib/docker/containers/${容器hash}/config.v2.json
    
    # hostconfig.json
    /var/lib/docker/containers/${容器hash}/hostconfig.json
  • 修改指令

    為了預防全域性替換,不建議使用如下的 sed ,我懶、也看了沒有其他和埠一樣的內容,嗯嗯、就這樣

    cd /var/lib/docker/containers/${容器hash}
    sed -i "s/現在對映的宿主機埠/目前對映的宿主機埠/g" config.v2.json
    sed -i "s/現在對映的宿主機埠/目前對映的宿主機埠/g" hostconfig.json
第三步 : 重啟 docker 服務
systemctl restart docker

價值源於技術,貢獻源於分享 | 筆記分享歸檔
No matter where I am, I will reply you immediately when I see the email.
My Email: echo "YUBzYW1lZ28uY29tCg==" | base64 -d
個人比較喜歡分享,若有不對的地方非常感謝指出
相互學習、共同進步~

相關文章