簡體   English   中英

mariadb的官方docker映像—如何添加ssh服務

[英]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 但是我不知道如何在不干擾ENTRYPOINTCMD機制的情況下在容器中執行此操作。

dockerfile帶有一個docker-entrypoint.sh (請參閱此處的源代碼),幾乎可以預期會有一行CMD

CMD ["mysqld"]

我已經閱讀了一些相關的SO文章,例如:

但由於ENTRYPOINT文件中ENTRYPOINTCMD的相互作用, 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.

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