日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Docker添加或者更改容器的端口映射

發布時間:2024/7/5 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker添加或者更改容器的端口映射 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

QUESTION:Docker添加或者更改容器的端口映射?

?

ANSWER:

初學Docker容器,按照教程的基本命令,拉取創建了幾個容器,都是在一開始新建的時候 docker? run -p 指定對應的端口,但對于docker start 沒有這個功能,所以查詢了以下幾種方法。

?

方法一:刪除原有容器,重新建新容器

這個解決方案最為簡單,把原來的容器刪掉,重新建一個。當然這次不要忘記加上端口映射。

優缺點:優點是簡單快捷,在測試環境使用較多。缺點是如果是數據庫鏡像,那重新建一個又要重新配置一次,就比較麻煩了。

?

方法二:修改容器配置文件,重啟docker服務

找到/var/lib/docker/containers/[hash_of_the_container]/hostconfig.json,hash_of_the_container 可以通過?docker inspect 容器名字,id 就是 容器的 hash 數值,在?hostconfig.json?里有?"PortBindings":{}?這個配置項,

可以改成 "PortBindings":{"3306/tcp":[{"HostIp":"","HostPort":"33306"}]} 這里 3306是容器端口, 33306是本地端口, 然后在 config.v2.json 里面添加一個配置項 "ExposedPorts":{"80/tcp":{}} , 將這個配置項添加到 "Tty": true, 前面,我不知道添加到別的地方會不會有影響,因為經過對比正常的端口映射配置項是在這個位置,這個就是將容器內部端口暴露出來,如果不加這一句端口映射不會成功的,最后重啟 docker的守護進程 service docker restart。

?

?優缺點:這個方法的優點是沒有副作用,操作簡單。缺點是需要重啟整個docker服務,如果在同一個宿主機上運行著多個容器服務的話,就會影響其他容器服務。

?

方法三:利用docker commit新構鏡像

1、停止docker容器

  • docker stop container01

    ?

  • 2、commit該docker容器

  • docker commit container01 new_image:tag

    ?

  • 3、用前一步新生成的鏡像重新起一個容器

  • docker run --name container02 -p?80:80?new_image:tag

    ?

  • ? ? 優缺點:這種方式的優點是不會影響統一宿主機上的其他容器,缺點是管理起來顯得比較亂,沒有第二種方法那么直觀。

    ?

    方法四:主機與docker中的端口轉發是通過主機的iptables實現的

    ?

    添加端口映射

    獲取容器ip docker inspect $container_name | grep IPAddress 添加轉發規則 iptables -t nat -A DOCKER -p tcp --dport $host_port -j DNAT --to-destination $docker_ip:$docker_port

    刪除端口映射規則

    ?

    a. 獲取規則編號 iptables -t nat -nL --line-number b. 根據編號刪除規則 iptables -t nat -D DOCKER $num

    ?

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的Docker添加或者更改容器的端口映射的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。