使用Docker容器不能忽略的10件事
背景
Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。 當你真正投入容器Docker的懷抱,不但可以發現它能解決很多問題,而且還具有眾多的優點: 第一:它是不可變的 – 作業系統,庫版本,配置,資料夾和應用都是一樣的。您可以使用透過相同QA測試的映象,使產品具有相同的表現。 第二:它是輕量級的 – 容器的記憶體佔用非常小。不需要幾百幾千MB,它只要對主程式分配記憶體再加上幾十MB。 第三:它很快速 – 啟動一個容器與啟動一個單程式一樣快。不需要幾分鐘,您可以在幾秒鐘內啟動一個全新的容器。 但是,許多使用者依然像對待典型的虛擬機器那樣對待容器。但是他們都忘記了除了與虛擬機器相似的部分,容器還有一個很大的優點:它是一次性的。 這個特性“本身”促使使用者改變他們關於使用和管理容器的習慣;我將會向您解釋在容器中不應該做這些事,以確保最大地發揮容器的作用。
1 不要在容器中儲存資料 – 容器可能被停止,銷燬,或替換。一個執行在容器中的程式版本1.0,應該很容易被1.1的版本替換且不影響或損失資料。有鑑於此,如果你需要儲存資料,請存在卷中,並且注意如果兩個容器在同一個捲上寫資料會導致崩潰。確保你的應用被設計成在共享資料儲存上寫入。
2 不要將你的應用釋出兩份 – 一些人將容器視為虛擬機器。他們中的大多數傾向於認為他們應該在現有的執行容器裡釋出自己的應用。在開發階段這樣是對的,此時你需要不斷地部署與除錯;但對於質量保證與生產中的一個連續部署的管道,你的應用本該成為映象的一部分。記住:容器應該保持不變。
3 不要建立超大映象 – 一個超大映象只會難以分發。確保你僅有執行你應用/程式的必需的檔案和庫。不要安裝不必要的包或在建立中執行更新(yum更新)。
4 不要使用單層映象 – 要對分層檔案系統有更合理的使用,始終為你的作業系統建立你自己的基礎映象層,另外一層為安全和使用者定義,一層為庫的安裝,一層為配置,最後一層為應用。這將易於重建和管理一個映象,也易於分發。
5 不要為執行中的容器建立映象 – 換言之,不要使用“docker commit”命令來建立映象。這種建立映象的方法是不可重現的也不能版本化,應該徹底避免。始終使用Dockerfile或任何其他的可完全重現的S2I(源至映象)方法。
6 不要只使用“最新”標籤 – 最新標籤就像Maven使用者的“快照”。標籤是被鼓勵使用的,尤其是當你有一個分層的檔案系統。你總不希望當你2個月之後建立映象時,驚訝地發現你的應用無法執行,因為最頂的分層被非向後相容的新版本替換,或者建立快取中有一個錯誤的“最新”版本。在生產中部署容器時應避免使用最新。
7 不要在單一容器中執行超過一個程式 – 容器能完美地執行單個程式(http守護程式,應用伺服器,資料庫),但是如果你不止有一個程式,管理、獲取日誌、獨立更新都會遇到麻煩。
8 不要在映象中儲存憑據。使用環境變數 –不要將映象中的任何使用者名稱/密碼寫死。使用環境變數來從容器外部獲取此資訊。
9 使用非root使用者執行程式 – “docker容器預設以root執行。(…)隨著docker的成熟,更多的安全預設選項變得可用。現如今,請求root對於其他人是危險的,可能無法在所有環境中可用。你的映象應該使用USER指令來指令容器的一個非root使用者來執行。”
10 不要依賴IP地址 – 每個容器都有自己的內部IP地址,如果你啟動並停止它地址可能會變化。如果你的應用或微服務需要與其他容器通訊,使用任何命名與(或者)環境變數來從一個容器傳遞合適資訊到另一個。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31126106/viewspace-2098648/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- docker – 你應該知道的10件事Docker
- 不能忽略的10個網頁設計元素網頁
- 使用 Docker 容器應該避免的 10 個事情Docker
- Docker 容器 100 問Docker
- Docker--容器和映象的使用Docker
- docker 容器的使用與檢視Docker
- Docker-容器使用Docker
- docker學習3:Docker容器使用Docker
- Docker框架的使用系列教程(四)容器的使用Docker框架
- Jenkins(Docker容器內)使用宿主機的docker命令JenkinsDocker
- Docker 101(一) --- 容器Docker
- docker - [10] 容器資料卷Docker
- Docker的容器使用方式簡述Docker
- 8個容易被忽略但不能忽略的SD-WAN功能-VecloudCloud
- docker建立容器後如何使用Docker
- (四)Docker安裝使用容器Docker
- 使用Systemd執行Docker容器Docker
- 使用docker執行CentOS容器DockerCentOS
- 使用iptables管控docker容器Docker
- 使用 Sysdig 監控您的Docker容器Docker
- 隔離 docker 容器中的使用者Docker
- Docker的容器使用與連線-WindowDocker
- 使用Portainer部署Docker容器實踐AIDocker
- 使用容器Docker進行開發Docker
- 如何在Docker容器中使用ArthasDocker
- Docker容器的搭建Docker
- Docker的容器管理Docker
- Docker容器Docker
- Docker掃盲之容器與映象的基本使用Docker
- HTML5不能完成的5件事HTML
- HyperLedger/Fabric SDK使用Docker容器映象快Docker
- 使用 Docker Compose 管理多個容器Docker
- docker使用容器搭建本地私有倉庫Docker
- Docker容器使用 (入門到精通)Docker
- Docker框架使用系列教程(五)容器間的連結Docker框架
- 如何使用Docker容器化改善你的開發流程Docker
- 分享10道Docker容器相關面試題!!!Docker面試題
- docker 容器互通Docker