在主机上运行docker命令

问题描述 投票:0回答:2

我可以在主机上运行 docker 命令吗?我在 docker 容器内安装了

aws
,现在我可以以某种方式在主机上使用
aws
命令(在幕后将使用 docker 容器的 aws)吗?

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

docker jenkins docker-container
2个回答
2
投票

您不能直接执行此操作。 Docker 容器和镜像具有隔离的文件系统,主机和容器不能直接访问彼此的文件系统和二进制文件。

理论上,您可以编写一个封装

docker run
的 shell 脚本,将其命名为
aws
,然后将其放入您的
$PATH

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

但这不能很好地扩展,需要您在主机上拥有根级权限,并且您将无法使用以下命令访问主机上的文件(如

~/.aws/config
)或环境变量(如
$AWS_ACCESS_KEY_ID
)额外的设置。

您只需在主机上安装软件即可正常工作。没有必要使用 Docker 来完成所有事情。


0
投票

由于 docker 主机是一个有用户的服务器,您可以通过容器中的

ssh
在主机上远程执行命令。示例:

docker_hostname="my-host"
docker_host_user="jimmyneutron"
ssh $docker_host_user@$docker_hostname 'echo $HOSTNAME' # returns: my-host

现在您还可以从容器中执行 docker 命令,就像在主机上一样。示例:

ssh $docker_host_user@$docker_hostname "docker exec myOtherContainer sh -c 'aws ...'

如果需要,您可以设置基于公钥的身份验证,以在主机上进行无密码 ssh 访问。请参阅 https://linuxize.com/post/how-to-setup-passwordless-ssh-login/

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