从Docker容器中以不同用户身份运行命令/脚本

时间:2017-10-02 19:01:05

标签: python bash docker ssh

首先,我知道这可能不是最容易的#34;容器化#34;解决问题。  在这一点上,我想知道我是否必须废弃我到目前为止所做的事情,或者我是否能够做到这一点。

我需要在服务器之间移动文件并备份它们。我目前有一个脚本可以做到这一点。我运行此脚本的用户拥有所有服务器的密钥,因此从服务器到服务器的rsync对此脚本没有任何问题。

我现在正在创建一个Web服务,用户可以通过ping来安全地移动文件并使用备份。这可以防止他们与我联系以运行脚本,并允许稍后与某些工作流程软件集成。

但是,我的docker容器捕获到Web服务的http请求将不会有到任何地方的密钥,因此无法成功运行脚本。我正在寻找一个解决方案,允许我运行此脚本,同时还有一个用户可以发出请求的Web服务。我最初的希望是基本传递args并运行脚本的路径。

我不知道以下想法的可行性,但这是我迄今为止的两个想法。

  • 以我的用户身份运行docker容器,其中包含无处不在的密钥
  • 在启动时将docker键提供给所有地方

有人会就如何进行上述操作或解决问题提出任何建议吗?

随意提出更多问题,因为我知道这是一个奇怪的问题。在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

如果我们要通过SSH手动运行转移,我们无法解决某些需要密钥的事实。类似于"在启动时将docker键提供给所有地方",我们可以将密钥作为卷绑定到容器中:

$ docker run -d -v /host/path/to/keys:/container/path/to/keys:ro image command ...

这为容器提供了对主机上密钥的只读访问权限。它还允许我们在需要时更新主机上的密钥,而无需重新启动容器。

我们可以通过将密钥存储在专用的秘密存储服务中来获得它,并且容器可以在需要时获取密钥,但是对于这个简单的用例,我不认为需要构建比必要。