Leo*_*lov 1 jenkins docker dockerfile
我正在尝试将配置文件复制到带有主机安装目录的 jenkins/jenkins 映像。我的 Dockerfile 的一部分:
FROM jenkins/jenkins
COPY file.txt /var/jenkins_home/
Run Code Online (Sandbox Code Playgroud)
尝试使用这样的音量:
-v volume_name:/var/jenkins_home
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我确实在 jenkins 中看到了“file.txt”,但如果我使用:
-v /folder:/var/jenkins_home
Run Code Online (Sandbox Code Playgroud)
我根本看不到 jenkins 中的 file.txt。所以我在这里想念什么?
根据您的问题:
...如果我使用:
Run Code Online (Sandbox Code Playgroud)-v /folder:/var/jenkins_home我根本看不到 jenkins 中的 file.txt。所以我在这里想念什么?
主机卷,有时因其底层实现而被称为绑定安装,不会从图像内容初始化卷。只有命名卷提供来自 docker 引擎的初始化支持。但是,可以使用不同的语法将命名卷执行到绑定安装。以下是执行此操作的不同方法的几个示例:
# create the volume in advance
$ docker volume create --driver local \
--opt type=none \
--opt device=/home/user/test \
--opt o=bind \
test_vol
# create on the fly with --mount
$ docker run -it --rm \
--mount type=volume,dst=/container/path,volume-driver=local,volume-opt=type=none,volume-opt=o=bind,volume-opt=device=/home/user/test \
foo
# inside a docker-compose file
...
volumes:
bind-test:
driver: local
driver_opts:
type: none
o: bind
device: /home/user/test
...
Run Code Online (Sandbox Code Playgroud)
在你的情况下,你可以这样做:
docker run -it --rm \
--mount type=volume,dst=/var/jenkins_home,volume-driver=local,volume-opt=type=none,volume-opt=o=bind,volume-opt=device=/folder \
...
Run Code Online (Sandbox Code Playgroud)
要回答您实际尝试做的事情:
也就是说,Jenkins 映像在 /var/jenkins_home 定义了一个卷,它阻止了您使用更改该文件夹的 RUN 命令扩展映像的能力。COPY 和 ADD 恰好可以工作,因为它们没有创建临时容器。作为一种解决方法,Jenkins 开发人员使用/usr/share/jenkins/ref/图像内部作为初始化 /var/jenkins_home 目录的源。所以你的 Dockerfile 应该把你想要的文件复制到那里:
FROM jenkins/jenkins
COPY file.txt /usr/share/jenkins/ref/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8708 次 |
| 最近记录: |