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

问题描述 投票:-1回答:1

我正在构建一个关于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到远程数据库服务器?

postgresql docker ssh
1个回答
1
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.