[英]Official docker image for mariadb — how to add ssh service
我是hub.docker.com
,並且一直在使用hub.docker.com
中的hub.docker.com
我想將ssh服務添加到容器中。 我可以apt-get install
軟件包(在apt-get update
),但是我不知道如何啟動它。 通常(不在此容器中),我們可以通過service ssh start
的常規命令來service ssh start
。 但是我不知道如何在不干擾ENTRYPOINT
和CMD
機制的情況下在容器中執行此操作。
dockerfile帶有一個docker-entrypoint.sh
(請參閱此處的源代碼),幾乎可以預期會有一行CMD
CMD ["mysqld"]
我已經閱讀了一些相關的SO文章,例如:
但由於ENTRYPOINT
文件中ENTRYPOINT
和CMD
的相互作用, ENTRYPOINT
它們在此處不直接適用。
您想要做的不是最佳實踐,您應該做的是使用用戶定義的docker網絡( 此處是文檔 )。
以您的情況為例:
1.創建一個網絡
docker network create --driver bridge database_network
2.啟動mariadb容器
docker run --network=database_network -itd --name=mariadb mariadb
3.啟動ssh容器
這里我們以krlmlr / debian-ssh為例,可以隨意使用其他圖片
docker run --network=database_network -itd --name=ssh -p 22:22 -e SSH_KEY="$(cat ~/.ssh/id_rsa.pub)" krlmlr/debian-ssh:wheezy
然后,當您通過端口22連接時,可以使用mariadb作為主機名連接到數據庫,因此,不用說localhost:3306 ,而是在ssh隧道中使用mariadb:3306 。
如果您的服務器可以處理這么多容器的負載,這甚至可以讓您跨不同端口設置具有不同ssh密鑰的多個容器。
要回答以下哪個問題更有效:A)運行一個同時包含mysqld和sshd的容器; 和B)運行兩個容器,一個用於mysqld,另一個用於sshd
資源使用上的差異將很小,因為在正式mariadb映像中運行ssh將需要使用超級用戶或s6,這比單獨運行兩個容器要多一個過程。 這意味着取決於ssh映像的大小,內存使用量也可能相同。 就CPU使用率而言,我認為情況是一樣的,實際上可能會支持方案B。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.