繁体   English   中英

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

[英]Run Commands/Scripts as Different User from within Docker Container

首先,我知道这可能不是问题的最“容器化”解决方案。 不过,在这一点上,我想知道我是否必须放弃目前的工作,或者是否可以进行这项工作。

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

我现在正在创建一个Web服务,用户可以Ping安全地移动其文件并进行备份。 这样可以避免他们与我联系以运行脚本,并且以后可以与某些工作流程软件集成。

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

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

  • 以我的用户身份运行Docker容器,该容器随处可见密钥
  • 在启动时将Docker密钥提供给任何地方

有人会对上述方法或对该问题的可能解决方案有任何建议吗?

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

如果我们要通过SSH手动运行传输,我们将无法避免某些东西需要密钥的事实。 类似于“在启动时将docker密钥提供给任何地方”,我们可以将密钥作为卷绑定安装到容器中:

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

这使容器对主机上的密钥具有只读访问权限。 它还使我们可以在需要时更新主机上的密钥,而无需重新启动容器。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM