mariadb的官方码头图片 - 如何添加ssh服务

时间:2017-10-10 16:06:50

标签: docker mariadb

我是docker的新手,并且一直在使用hub.docker.com

中的泊坞窗图片

我想将ssh服务添加到容器中。我可以apt-get install包裹(apt-get update之后),但我不知道如何启动它。 通常(不在此容器中),我们可以通过service ssh start的常规命令启动服务。但我不知道如何在容器中执行此操作而不会干扰ENTRYPOINTCMD机制。

dockerfile附带docker-entrypoint.sh(请参阅源代码here),我非常期望有CMD

CMD ["mysqld"]

我已经阅读了一些相关的SO文章,例如:

但由于docker文件中ENTRYPOINTCMD的相互作用,它们不能直接应用于此处。

1 个答案:

答案 0 :(得分:1)

您想要做的不是最佳做法,您应该做的是使用用户定义的泊坞网络(Here is the documentation)。

  

在您的情况下,您将例如:

<强> 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将需要使用supervisor或s6,这将比单独运行两个容器多一个进程。这意味着根据ssh图像的大小,内存使用量也可能相同。就CPU使用率而言,我认为案例将是相同的,并且可能实际上有利于方案B.