Docker compose up -d與Docker restart的區(qū)別
背景 - 有時需要臨時在容器內(nèi)進行修改
Docker給現(xiàn)場部署帶來了很大的方便。我們可以把代碼和依賴都封到 Docker 鏡像里,然后通過Docker 加載成容器,輕松部署。
另外,我們還可以通過 Docker-compose 把多個容器,比如 Nginx 容器,應用容器,數(shù)據(jù)庫容器給編織起來,形成一整套服務。
但是,有些時候,到了現(xiàn)場,我們需要對臨時代碼進行一些小的調(diào)整和修改。
調(diào)整之后,往往需要重啟容器或服務,使修改生效。這時,人們往往會用到:
- docker restart 容器名 , 或者
- docker-compose up -d
進行容器重啟。但是這兩者有什么區(qū)別呢?
docker-compose up -d
如果我們對 docker-compose.yml 進行了修改,比如,增加或者修改了:
- 暴露的端口
- 映射出來的文件
- 環(huán)境變量
這時,使用 docker-compose up -d 可以使這些修改生效。
但是要注意,docker-compose up -d 會:
- 停止原來的容器
- 刪除原來的容器
- 使用新的參數(shù),結合原始鏡像文件,創(chuàng)建一個新的容器提供服務
這時,在原有容器中做得修改,如果沒有使用 docker-commit 做持久化,就會被沖掉,不會留下來。
docker restart 容器名
如果使用 docker restart 容器名,對容器進行重啟。則之前在 docker 容器中做得臨時修改,不會被沖掉。docker 會使用修改后的代碼提供服務。
但是,這種方式?jīng)]有辦法修改 docker-compose 中暴露的端口號,沒有辦法進行 volume 映射等操作。
使用 docker commit 保留臨時的修改
如果現(xiàn)場測試后,覺得這些臨時修改沒有問題,希望保留,可以在宿主機上,使用 docker commit 容器名 鏡像名:標簽 ,把臨時的修改 commit 到鏡像中。
這樣,即使之后再使用 docker-compose up -d,只要在 docker-compose.yml 文件中,使用 commit 后的 鏡像名:標簽,之前的修改也可以保留。
舉例
在容器里臨時修改代碼
如果在現(xiàn)場,我們發(fā)現(xiàn) docker 容器中的一段 python 代碼需要修改,可以docker exec -it 容器名 /bin/sh
進入容器,找到相應的代碼進行修改。
修改之后,可以在宿主機上,使用 docker restart 容器名
進行重啟。修改的代碼會生效。
調(diào)整 docker-compose.yml 中的配置
如果在現(xiàn)場,發(fā)現(xiàn)要修改容器的端口,或者增加或修改環(huán)境變量配置。則需要修改 docker-compose.yml。然后使用 docker-compose up -d 使修改后的配置生效。
但是,要注意:docker-compose up -d
會 停止并刪除原有的鏡像,并使用系統(tǒng)中原有的鏡像,結合 docker-compose.yml 中的新配置來 生成一個新的鏡像,提供服務。
這時,如果原有容器中,有臨時修改,比如在原容器里修改了某一段 python 代碼,則這些修改會被 沖掉。
所以,在使用時,要千萬小心。
使用 docker commit 把容器的修改保存到鏡像中
比如,我們在現(xiàn)場的 my_container 容器中,修改了一些代碼,我們希望把這些修改保留下來。
假設這個容器對應的鏡像名是 my_image:1.0.1,則我們可以在宿主機上,使用:
docker commit my_container my_image:1.0.1
把修改保存到原鏡像中。當然,你也可以把修改保存到 my_image:1.0.2 。
但要記得對 docker-compose.yml 文件中,把對應的鏡像名稱,也改為 my_image:1.0.2。
以上描述的方式,比較適合現(xiàn)場沒有互聯(lián)網(wǎng)連接的場景。
到此這篇關于Docker compose up -d與Docker restart的區(qū)別的文章就介紹到這了,更多相關Docker compose up -d與Docker restart內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
docker 安裝nacos并配置數(shù)據(jù)庫的教程詳解
這篇文章主要介紹了docker 安裝nacos并配置數(shù)據(jù)庫的教程詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12Docker數(shù)據(jù)卷容器創(chuàng)建及使用方法解析
這篇文章主要介紹了Docker數(shù)據(jù)卷容器創(chuàng)建及使用方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-10-10Docker容器間通訊直接路由方式實現(xiàn)網(wǎng)絡通訊
今天小編就為大家分享一篇關于Docker容器間通訊直接路由方式實現(xiàn)網(wǎng)絡通訊,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-02-02