簡體   English   中英

更新正在運行的Docker容器

[英]update running docker container

我有一個運行中的Docker容器,帶有基本映像fedora:latest

我想保留我正在運行的應用程序的狀態,但是自從我第一次部署容器以來,仍然要更新一些得到安全修復的軟件包(即gnutls,openssl和friends)。

如何在不中斷服務或不丟失當前狀態的情況下做到這一點?

因此,理想情況下,我想在運行的容器上獲得bash / csh / dash / sh或任何fleet魔術?

請務必注意,關閉容器可能會遇到一些問題。

例如,假設您有一個Apache容器的Dockerfile,該容器在前台運行Apache。 想象一下,您將一個shell附加到了您的容器上(通過docker exec ),然后開始更新。 您必須將修補程序應用於Apache,並且在更新過程中,Apache將重新啟動。 Apache關閉的那一刻,容器將停止。 您將失去應用程序的當前狀態。 這將需要非常仔細的計划和一些運氣,並且可能無法進行某些更新。

更好的方法是使用所有適當的更新重建容器所基於的映像,然后重新運行容器。 服務將(簡短)中斷。 但是,為了使您能夠保存應用程序的狀態,您需要以以下方式設計映像:將需要保留的任何狀態信息以持久方式存儲-要么存儲在主機文件系統中通過安裝目錄或在數據容器中。

簡而言之,如果您將在容器關閉時丟失重要信息,那么您的系統就很脆弱,遲早會遇到問題。 最好重新設計它,以便將所有需要持久的內容保存在容器外部

如果Docker容器正在運行bash

docker attach <containerIdOrName>

否則,在同一個容器中執行一個新程序(在這里: bash

docker exec -it <containerIdOrName> bash

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM