如何修改正在執行的docker映象的埠對映?

2021-09-11 14:57:46 字數 1276 閱讀 1492

在docker run建立並執行容器的時候,可以通過-p指定埠對映規則。但是,很有可能剛開始你忘記設定了,或者說設定錯了需要修改。

docker start執行容器並沒有提供乙個-p選項,讓你指定埠對映規則。乙個解決方案就是把原來的容器刪掉,重新建乙個。

要是無狀態的應用類映象還好,如果是資料庫映象,那重新建乙個簡直就是nightmare:)啊

下面我列出幾種解決方案:

容器的配置檔案在

/var/lib/docker/containers/[hash_of_the_container]/hostconfig.json

複製**

其中的hash_of_the_container是docker映象的hash值,可以通過docker ps或者docker inspect container_name檢視。

其中有一項是portbindings,例如上面這個例子中,5432/tcp對應的是容器內部的5432埠,hostport對應的是對映到宿主機的埠,把這個數字修改一下就可以了。然後重啟docker服務:

systemctl restart docker

複製**

最後start docker映象。

這個方法的好處是沒有***,操作也很簡單,缺點是需要重啟整個docker服務,如果在同乙個宿主機上執行著很多映象的話,有可能會影響其他容器的服務。

第一步:停止docker容器

docker stop container01

複製**

第二步:commit該docker容器

docker commit container01 new_image:tag

複製**

docker commit:把乙個容器的檔案改動和配置資訊commit到乙個新的映象。這在測試的時候會很有用,把容器所有的檔案改動核配置資訊匯入到乙個嶄新的dockers映象,然後用這個映象起乙個容器,這對之前的那個容器不會產生任何影響。需要注意的是:

第三步:用前一步新生成的映象重新起乙個容器

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

複製**

這種方法的好處是不會影響統一宿主機上的其他容器,缺點是管理起來顯得一團糟,不像第一種方法那麼直觀。

我一般偏好於第一種方法,但是如果在不能影響統一宿主機上其他服務的情況下,也只能採取第二種方法。

如何刪除所有正在執行的Docker容器

到現在為止 docker版本1.12 我們使用以下命令刪除所有正在執行的容器 如果我們要刪除卷,我們可以使用以下命令中的相應標記 v手動執行此操作 刪除所有已退出的容器 docker rm docker ps q f status exited 刪除所有已停止的容器 docker rm docker...

oracle expdp如何停止正在執行的job

linux環境,前幾天使用expdp導資料,中途不想導了,當時直接關了當前cmd 視窗,想起可能這個job還在執行。好吧,學習一下如何停止 1 先看看有哪些資料幫浦的job select from dba datapump jobs 以上語句查出來的可能有幾條資料 sys export schema...

正在執行的SQL

sql server select spid session id,ecid,database db name sp.dbid user nt username,status er.status,wait wait type,individual query substring qt.text,er...