【问题标题】:Official docker image for mariadb -- how to add ssh servicemariadb 的官方 docker 镜像——如何添加 ssh 服务
【发布时间】:2018-03-22 02:58:58
【问题描述】:

我是docker新手,一直在玩hub.docker.com中的docker镜像

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

dockerfile 附带一个docker-entrypoint.sh(参见源代码here),它几乎希望有一行CMD

CMD ["mysqld"]

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

但由于 docker 文件中 ENTRYPOINTCMD 的相互作用,它们在这里并不直接适用。

【问题讨论】:

  • 为什么需要这样做?用于打开连接到服务器的sql客户端?
  • 是的,我希望 sql 客户端通过端口 22 进来。然后数据包将被转发到端口 3306。
  • 如果你使用docker run -p选项发布服务器端口,你可以从你的主机操作系统连接到mysql
  • 我只想向远程机器开放端口 22 (ssh) 而不是端口 3306 (mysql)。有可能实现吗?换句话说,我希望能够在容器内启动一个 sshd。

标签: docker mariadb


【解决方案1】:

您想要做的不是最佳实践,您应该做的是使用用户定义的 docker 网络 (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

然后,当您通过 port 22 连接时,您可以使用 ma​​riadb 作为主机名连接到数据库,所以我们可以说 localhost:3306 您将在 ssh 隧道中使用 ma​​riadb:3306

如果您的服务器可以处理这么多容器的负载,这甚至允许您在不同端口上使用不同的 ssh 密钥设置多个容器。

要回答以下哪个更有效的问题: A) 运行一个包含 mysqld 和 sshd 的容器; B) 运行两个容器,一个用于 mysqld,一个用于 sshd

资源使用的差异很小,因为在官方 mariadb 映像中运行 ssh 需要使用 supervisor 或 s6,这比单独运行两个容器多一个进程。这意味着根据 ssh 映像的大小,内存使用量也可能相同。在 CPU 使用率方面,我认为情况是相同的,实际上可能有利于方案 B。

【讨论】:

  • 这是一个非常有趣的想法。我要试试。但是,我确实有一个问题。对资源的影响是什么?比较两种方法: A) 运行一个容器,其中包含 mysqld 和 sshd;和 B)运行两个容器,一个用于 mysqld,一个用于 sshd(即您的建议),B 会占用更多资源吗?是否有一些关于这方面的实证研究的好的指导?谢谢!
  • 我已更新我的答案以尝试回答。虽然这纯粹是猜想,所以也许对此进行更多研究会很好,但我认为我基本上是正确的
  • 受您的回答启发,现在我有另一个相关问题。它是关于如何使用 MariaDB 来构建多个子系统。他们每个人应该有自己的运行 MariaDB 的容器,还是应该为 MariaDB 共享一个公共容器?你能看看stackoverflow.com/q/46694888,给我你的意见吗?同样,理想情况下,有关于架构决策(或如何在两个选项之间进行权衡)的经验证据。非常感谢!
  • 是的,我刚刚尝试了您的建议,它有效。非常感谢!
  • 当然,我现在会调查一下,很高兴我的回答能够帮助到您
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-21
  • 2019-08-26
  • 2021-12-30
  • 1970-01-01
  • 2019-04-24
相关资源
最近更新 更多