【问题标题】:How can we send aws address in my local machine to jenkins image run in docker container?我们如何将本地机器中的 aws 地址发送到在 docker 容器中运行的 jenkins 映像?
【发布时间】:2020-09-29 03:30:37
【问题描述】:

我正在尝试将主机中的 aws 路径发送到将在 docker 容器中运行的 jenkins。因此,我下载了 jenkins 映像,并尝试在 jenkins 管道中使用 aws cli 命令来构建 nodejs 应用程序,然后将其部署到 s3 存储桶。对于我需要通过 docker 运行的 jenkins 映像中的 aws cli。据我所知,一旦你在 docker 容器中运行任何图像,那么它本身就是一个单独的环境,所以詹金斯不会知道我在我的 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/local/bin/aws

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

【问题讨论】:

  • 目前还不清楚您要达到的目标。请在您的问题中添加更多详细信息。具体来说,“向 Jenkins 发送 aws 地址”是什么意思? Docker 的-v src:dst (==--volume=src:dst) 将主机 (src) 上的卷(目录)挂载到容器(也在主机上运行)目录 (dst) 中。我怀疑这不是你想要的。要将配置数据(例如地址)传递给容器,您可以使用环境变量(即docker run ... --env=ADDR=${ADDR} ...,其中ADDR 是环境变量名称,${ADDR} 是它的值),但图像必须预期这一点。

标签: macos amazon-web-services docker jenkins


【解决方案1】:

您需要在您的 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 提出了卷的概念。相当 简单地说,卷是目录(或文件)之外的 默认联合文件系统并作为普通目录和文件存在 主机文件系统。

understanding-volumes-docker

关于这个问题

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

如果您在 AWS 内部,您可以将 IAM role 分配给 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

【讨论】:

  • 内部aws和外部aws是什么意思?进入 aws 意味着什么?
  • Inside 表示您是在 Aws VPC 内还是在 aws 帐户下运行 jenkins。
猜你喜欢
  • 1970-01-01
  • 2020-09-09
  • 1970-01-01
  • 1970-01-01
  • 2021-09-06
  • 1970-01-01
  • 2020-08-22
  • 2019-04-14
  • 2022-01-22
相关资源
最近更新 更多