当前位置: 首页 > 知识库问答 >
问题:

在Jenkins容器中运行docker容器,如何从主机设置卷?

程赞
2023-03-14

我在用“docker外面的docker”和jenkins运行一个容器。我的docker是:

---
version: '2'
services:
  jenkins-master:
    build:
      context: .
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /dev/urandom:/dev/random
      - /home/jj/jenkins/jenkins_home/:/var/jenkins_home
    ports:
      - "8080:8080"

所以所有从“jenkins容器”启动的容器都在主机中运行。

但是,当我试图在需要卷的作业中运行“jenkins容器”中的docker compose时,它采用的是来自主机的路径,而不是jenkins的路径。我是说,当我和docker合作时

volumes:
  - .:/app

它安装在主机的/var/jenkins_home/workspace/JOB_NAME中,但我希望它安装在/home/jj/jenkins/jenkins_home/workspace/JOB_NAME中

有什么想法用“干净”模式来做这件事吗?

我用环境变量做了一个变通方法

共有1个答案

微生永春
2023-03-14

主机上的Docker将按照请求的原样映射路径,docker-comact将使用它在容器内看到的路径发出请求。这给你留下了几个选择:

>

使主机上的路径与容器的路径匹配。在主机上,如果您有权在var中创建符号链接,则可以ln-s/home/jj/jenkins/jenkins\u home/var/jenkins\u home,然后更新撰写文件以具有相同的路径(您可能需要指定/var/jenkins\u home/。以遵循符号链接)。

使容器的路径与主机的路径匹配。这可能是最简单的选择,但我不确定它是否会起作用(取决于comment认为它在哪里运行)。jenkins主文件的Dockerfile可以包括以下内容:

运行mkdir-p/home/jj/jenkins\

如果easy选项不起作用,您可以从jenkins重建图像,并更改jenkins_HOME变量以匹配您的环境。

volumes:-${CUR\u DIR:-.}:/应用程序

 类似资料:
  • 问题内容: 如何从Docker容器控制主机? 例如,如何执行复制到主机的bash脚本? 问题答案: 那真的取决于您需要该bash脚本执行的操作! 例如,如果bash脚本仅回显某些输出,则可以执行 另一种可能性是您希望bash脚本安装某些软件-例如要安装docker-compose的脚本。你可以做类似的事情 但是,此时,您真的必须深入了解脚本在做什么,以允许容器从容器内部对其主机授予特定权限。

  • 如何从docker容器控制主机? 例如,如何执行复制到主机的bash脚本?

  • 问题内容: 我正在研究Centos7。我有一个运行Jenkins的Docker容器。在那个Jenkins容器中,我必须构建并运行其他Docker容器。但是詹金斯不认识码头工人。我能够执行一个shell并将docker安装在容器中。但是,是否有可能让容器在主机上使用我的docker- engine?如何使用? 在Jenkins-(docker)-容器中安装Docker的最佳选择是什么? 问题答案:

  • 我正在我的机器上的docker容器中运行服务器。我想从我的机器(主机)向容器内的服务器发送HTTP请求。当我在容器中使用HTTP发送GET请求时,它会检测服务器。但是,如果我向容器的IP地址发送相同的请求(这次是从容器外部的主机),它会告诉我: 或者这个: 下面是我启动容器时使用的命令: 以及我为发送请求而运行的Python脚本: 下面是我用来查找容器IP地址的命令: 我知道这个问题,但我没有使用

  • 问题内容: 我看到很多人都在为此苦苦挣扎,好像在redis容器映像中可能有一个错误,而其他人似乎在追寻类似的问题。 我在DockerHub上使用标准Redis映像。(https://github.com/dockerfile/redis) 像这样运行它: 进入服务器后,就可以启动服务器,并从容器映像进行Redis ping了。 不幸的是,我无法从主机连接到Redis容器。 我已经尝试设置,例如下面

  • 问题内容: 我对Docker中的整个数据量过程有疑问。基本上,这里有两个Dockerfile及其各自的运行命令: Dockerfile 1- 命令1- Dockerfile 2- 命令2- 因此,奇怪的是第一个dockerfile和命令按预期工作。docker守护程序将目录从容器装载到主机的位置。因此,我可以根据需要编辑配置文件,它们将在重新启动后保留在容器中。 但是,对于第二个dockerfil