搜尋

首頁  >  問答  >  主體

docker - 容器commit為鏡像,再run成container, 連接埠映射遺失 該如何理解.

問個問題啊, 我run 了一個container hello,通過-p參數 映射主機端口 和 容器端口.

sudo docker run -d --name hello -p 8080:8080 -m 268435456 ubuntu:14.04 bin/bash -c "while true;do echo hello $(date); sleep 2; done"

然後通過 commit 命令生成新的鏡像 sudo docker commit hello hello-image .
在然後, 基於該鏡像,使用docker run -d hello-image 重新運行一個新的容器(這個時候並沒有指定-p參數).
新生成的容器 是沒有 端口映射的,而且也沒有之前容器設置的-m參數信息.

我的問題是: 如何理解新生成的容器沒有映射端口和 內存限製這兩項信息? 什麼參數是屬於容器的,什麼參數是屬於鏡像的呢?

ringa_leeringa_lee2856 天前895

全部回覆(3)我來回復

  • 阿神

    阿神2017-04-24 09:11:34

    容器commit成鏡像時,只會保留靜態文件,因為你此時的容器本身也是stop的

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-24 09:11:34

    你要保留端口,要么使用dockerfile 開放端口出來,並且創建容器的時候使用-P 命令。
    要么仍然運行類似你上面的寫明端口的方式。否則不會開放連接埠出來,所有跟宿主機有關聯的,都是需要創建容器的時候,動態指定。
    sudo docker run -d --name hello -p 8080:8080 -m 268435456 ubuntu:14.04 bin/bash -c "while true;do echo hello $(date); sleep 2; done"

    $(date); sleep 2; done"🎜

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-24 09:11:34

    埠對映是屬於container的, 不會存在image中, 每次run時要再指定.

    回覆
    0
  • 取消回覆