如何从Docker容器SSH到远程服务器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从Docker容器SSH到远程服务器相关的知识,希望对你有一定的参考价值。

我正在构建一个关于postgres图像的docker图像,我想用一些数据来播种它。

我正在关注文档的initialization-scripts部分。

但我现在面临的问题是,我的初始化脚本需要ssh到远程数据库和那里的哑数据。基本上是这样的:

ssh remote.host "pg_dump -U user -d somedb" > some.sql

但这失败了ssh: command not found的错误

现在的问题是,我如何从docker容器ssh到远程服务器。在这种情况下,具体来说,作为播种postgres数据库的初始化步骤的一部分,我如何从docker容器ssh到远程数据库服务器?

答案

作为一般规则,你不要这样做。典型的Docker镜像只包含它们运行的​​服务器和一些核心工具,但sshcurl等网络客户端通常不属于此类。在ssh的特殊情况下,安全地管理所需的凭证也很棘手(并非不可能,但并不明显)。

在您的特定情况下,我可能会重新排列内容,以便您的脚本没有数据库在本地运行的硬假设。设置一个空的数据库容器,然后从主机定位该空数据库运行您的脚本。甚至可以将PGHOSTPGPORT环境变量设置为指向主机的主机名和发布数据库接口的端口,然后不修改运行该脚本。

仔细观察该特定命令,您可能会发现设置一个cron作业以运行该特定数据库转储并将内容放在某处更好。然后,开发人员可以获取数据的快照,而无需连接到实时数据库服务器,并且可以限制将具有访问权限的人数。获得此转储文件后,可以使用/docker-entrypoint-initdb.d机制使其在首次启动时加载。

以上是关于如何从Docker容器SSH到远程服务器的主要内容,如果未能解决你的问题,请参考以下文章

SSH远程登陆docker容器

09-Docker配置SSH服务

09-Docker配置SSH服务

Docker中使用ssh登远程地址,同步文件到docker,然后再映射到宿主机

从变量添加 SSH 密钥

创建支持SSH服务的镜像