Lxc
Docker 容器內的應用程序更新?
通常在伺服器上配置安全相關更新檔的自動更新。因此,如果我正在執行 MySQL 5.5 並且出現了新的安全更新檔,Ubuntu Server 將應用升級並重新啟動 MySQL 以自動保護我。顯然,這可以禁用,但它對我們這些有點懶惰的人有幫助;)
Docker 容器內部是否存在這樣的概念?如果我在 Docker 容器中執行 MySQL,是否需要不斷停止容器,在其中打開一個 shell,然後更新和升級 MySQL?
TL;DR:如果你不自己建立它,它就不會發生。
執行此操作的有效方法是簡單地為您
CMD
在Dockerfile
. 在此文件中,apt-get update && apt-get upgrade -qqy
在開始您正在執行的任何內容之前執行。然後,您有幾種方法可以確保更新到達容器:
- 在您的主機作業系統中定義一個 cron 作業以按計劃重新啟動容器,從而使其按計劃更新和升級。
- 訂閱軟體的安全更新,然後在更新受影響的包時,重新啟動容器。
優化和自動化並不是最容易的事情,但它是可能的。
我不同意接受的答案。首先,您應該在設計容器時考慮到狀態分離(在 MySQL 的情況下,這意味著至少
/var/lib/mysql
進入它自己的捲)。其次,您應該確定升級策略;最先進的方法是為每組 apt 軟體包升級創建版本化映像,並在將數據卷從正在執行的容器交換到新容器之前對其進行測試。如果您使用hipache 之類的東西,這可以包括停機時間或根本沒有停機時間。這種設置雖然初始設置成本更高,但與擁有大量容器的公司所使用的相同,並且隨著時間的推移維護起來會更便宜。
此外,包升級最終可能會破壞您正在執行的容器,因此將它們應用於正在執行的容器並不是最佳實踐——因為它不是為了執行過時的軟體。