如何将软件或其他包添加到docker容器中?

2024-05-23 15:10:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经把詹金斯集装箱从码头枢纽拉过来了:

docker pull jenkins

容器运行,我可以在以下位置访问Jenkins UI:

http://localhost:8080

我的问题是:

如果我想创建一个从github repo中提取的jenkins作业,并且想从该repo的一个测试文件中运行一些python测试,那么如何安装诸如virtualenvwrapper, pip, pytest, nose, selenium等额外的包?

docker容器似乎不与本地主机文件系统共享任何引用。

如何在这个运行容器中安装这样的软件包?

谢谢


Tags: 文件dockergithublocalhosthttpui集装箱作业
1条回答
网友
1楼 · 发布于 2024-05-23 15:10:50

您需要在docker容器构建时安装所有依赖项。

你可以在詹金斯图书馆制作自己的Dockerfile,然后把定制的东西放进去。你的Dockerfile看起来像

FROM jenkins:latest
MAINTAINER Becks

RUN apt-get update && apt-get install -y {space delimited list of package}

然后,你可以做一些像。。。

docker build -t jenkins-docker --file Dockerfile .
docker run -it -d --name=jenkins-docker jenkins-docker

我可能没有写好所有的语法,但这基本上是你需要做的。如果您想让run步骤启动jenkins,请按照它们在现有Dockerfilehere中所做的操作,并将相关部分添加到dockerfile中,以添加一些运行jenkins的RUN步骤。

遇到了this page,它也会遇到类似的问题,尽管它也会将docker sock安装到另一个容器中,以便将一个容器连接到另一个容器。考虑到它是一个外部链接,这里是相关的dockerfile

FROM jenkins:1.596

USER root
RUN apt-get update \
      && apt-get install -y sudo \
      && rm -rf /var/lib/apt/lists/*
RUN echo "jenkins ALL=NOPASSWD: ALL" >> /etc/sudoers

USER jenkins
COPY plugins.txt /usr/share/jenkins/plugins.txt
RUN /usr/local/bin/plugins.sh /usr/share/jenkins/plugins.txt

这就是你可以把它旋转起来的方法。

docker build -t myjenk .
...
Successfully built 471fc0d22bff
$ docker run -d -v /var/run/docker.sock:/var/run/docker.sock \
                -v $(which docker):/usr/bin/docker -p 8080:8080 myjenk

我强烈建议通过那个职位。太棒了。

相关问题 更多 >