繁体   English   中英

我们如何将本地机器中的 aws 地址发送到 docker 容器中运行的 jenkins 映像?

[英]How can we send aws address in my local machine to jenkins image run in docker container?

我正在尝试将主机中的 aws 路径发送到 jenkins ,它将在 docker 容器中运行。 因此,我下载了 jenkins 映像,并尝试在 jenkins 管道中使用 aws cli 命令来构建 nodejs 应用程序,然后将其部署到 s3 存储桶。 对于我正在通过 docker 运行的 jenkins 映像中的我需要 aws cli。 据我所知,一旦你在 docker 容器中运行任何图像,那么它本身就是一个单独的环境,所以 jenkins 不会知道我在我的 mac 中安装了 aws,除非我在我的 mac 中发送它的 aws 地址,这就是我正在尝试做

-v $(which aws): $(which aws)

命令。

docker run -d -p 8080:8080 -p 50000:50000 -v ~/jenkins_directory:/var/jenkins_home -v $(which aws):$(which aws) jenkins/jenkins:2.190.2

但是,在我在命令行中运行此容器后,它显示以下错误响应

docker:来自守护程序的错误响应:安装被拒绝:路径 /usr/local/bin/aws 未从 OS X 共享,并且 Docker 不知道。

根据我在stackoverflow中找到的一些答案,我尝试在Docker文件共享面板中添加aws的地址。 当我在docker中添加aws的地址时,再次显示

路径 /usr 由 Docker 保留,但是可以导出特定的子目录。

我已经能够解决这个问题。 我尝试添加整个

usr/本地/bin/aws

在 docker 文件共享面板中,但仍然显示相同的问题。 有谁知道我们可以做些什么来将本地容器中的 aws 地址发送到我试图在 docker 容器中运行的 jenkins 映像?

您需要在 docker 映像中安装aws-cli ,然后您就可以在容器中使用 aws-cli。

FROM jenkins/jenkins:2.190.2
USER root
RUN apt-get update && \
    apt-get install awscli  -y
USER jenkins

-v或卷并非旨在绑定主机可执行文件,但它们旨在用于持久存储的文件和文件夹。 如果您需要可执行文件,则需要在 docker 映像中添加。

为了能够保存(持久化)数据并在容器之间共享数据,Docker 提出了卷的概念。 很简单,卷是默认联合文件系统之外的目录(或文件),并且作为主机文件系统上的普通目录和文件存在。

理解卷泊坞窗

对于这个问题

我正在尝试在 jenkins 管道中使用 aws CLI 命令来构建 nodejs 应用程序,然后将其部署到 s3 存储桶。

如果您在 AWS 内部,您可以将IAM 角色分配给 Jenkins 服务器,并且您不需要绑定主机密钥。

或者,如果您在 AWS 之外,那么您只需要绑定主机 aws 配置和凭证,

docker run -d -p 8080:8080 -p 50000:50000 -v ~/jenkins_directory:/var/jenkins_home -v $HOME/.aws/:/var/jenkins_home/.aws/ jenkins/jenkins:2.190.2

暂无
暂无

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

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