当前位置: 首页 > 面试题库 >

在主机上运行docker命令

胡翔
2023-03-14
问题内容

我可以在主机上运行docker命令吗?我安装aws在Docker容器中,现在可以以某种方式aws在主机上使用命令(在后台使用Docker容器的aws)吗?

我的情况是这样的:我在生产主机上有数据库备份。现在我有Jenkins
cron作业,它将从db容器中获取sql文件,并将其放入服务器文件夹中。现在我还希望jenkins将此备份文件上传到AWS存储上,但是在主机上我没有安装aws,也不想在主机上安装除docker以外的任何东西,因此我认为aws应该安装在容器内。


问题答案:

您不能直接这样做。Docker容器和映像具有隔离的文件系统,并且主机和容器无法直接访问彼此的文件系统和二进制文件。

从理论上讲,您可以编写一个shell脚本,将其包装docker run,命名aws并放入您的$PATH

#!/bin/sh
exec docker run --rm -it awscli aws "$@"

但这不能很好地扩展,需要您在主机上具有root级权限,并且您将无法通过其他设置访问主机上的文件(如~/.aws/config)或环境变量(如$AWS_ACCESS_KEY_ID)。

您可以只在主机上安装软件,它可以正常运行。不需要绝对将Docker用于所有内容。



 类似资料:
  • 是否可以在 Ansible 主机上运行命令? 我的场景是,我想从内部托管的git服务器(并且不能在公司防火墙之外访问)进行结帐。然后我想将结账(tarbated)上传到正式服(托管在外部)。 目前,我正在考虑运行一个脚本,执行签出、tarballs,然后运行部署脚本-但如果我可以将其集成到Ansible中,那将是更好的选择。

  • 机器A和B之间的通信工作良好。我可以运行像或这样的命令,它会给出预期的结果: 我听说过,但还没有尝试过,但据我所知,这并不能解决我的问题。 有什么方法可以直接使用来实现这一点。解决办法可能是使用连接到远程主机,并直接从远程主机使用客户机,但我希望尽可能避免这种解决方案。 在上运行,而不是在本地计算机上运行。

  • 问题内容: 是否可以(直接使用命令或API)从远程主机启动容器? 假设我有两台具有不同体系结构的机器:-A是一台机器-B是一台机器 我想使用我的A机器在B机器上运行一个容器。起初,我认为可以使用以下命令: 但这个命令实际上拉图像,并试图在其中一些最终的机器运行它的原因很明显,你不能运行的图像所特有的一种机器。 机器A和B之间的通信正常。我可以运行诸如或的命令,它可以给我预期的结果: 我听说过并且还

  • 问题内容: 创建映像时是否可以创建在主机上执行命令的命令? 现在我正在做: 使用Dockerfile: 我希望能够做到: 使用Dockerfile: 当然,此脚本与Dockerfile位于同一目录中。 问题答案: (只是一个建议) 通常,我们使用以下结构来构建docker映像: build.sh :这是您应该调用的。其他常见任务包括下载所需文件或从主机临时复制ssh密钥。最后,此脚本将调用 Doc

  • 问题内容: 感谢您收看这个问题。 所以我的问题与如何在docker-compose up指令上运行脚本的最佳实践有关。 目前,我正在主机和容器之间共享一个卷,以使脚本更改对主机和容器均可见。与监视脚本轮询配置文件中的更改类似。 该脚本必须根据预定义规则对主机进行更改。 所以我的问题是: 我如何才能在docker-compose up指令上甚至从服务的dockerfile上启动此脚本,以便每当容器启

  • 我们有一个gitlab-ci运行器,它托管在服务器a下运行的docker容器上。现在,我们希望将gitlab-ci运行器配置为一个容器,以便在主机上执行命令。 我们尝试使用下面的命令将运行器注册为“shell”执行器,但它仍然试图只访问gitlab-ci运行器容器中的shell,而不是主机服务器shell。 sudo gitlab-runner注册 --非交互式 --URL“https://git