运行 docker 主机命令
Run docker command on host
我可以 运行 docker 在主机上执行命令吗?我在我的 docker 容器中安装了 aws
,现在我能以某种方式在主机上使用 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-level 权限,并且您将无法访问主机(如 ~/.aws/config
)或环境中的文件具有额外设置的变量(如 $AWS_ACCESS_KEY_ID
)。
您可以直接在主机上安装软件,即可正常使用。绝对没有必要使用 Docker。
我可以 运行 docker 在主机上执行命令吗?我在我的 docker 容器中安装了 aws
,现在我能以某种方式在主机上使用 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-level 权限,并且您将无法访问主机(如 ~/.aws/config
)或环境中的文件具有额外设置的变量(如 $AWS_ACCESS_KEY_ID
)。
您可以直接在主机上安装软件,即可正常使用。绝对没有必要使用 Docker。