我正在尝试使用Docker运行Jenkins服务器.
我已经构建了映像,并尝试使用以下命令运行它:
docker run -p 8080:8080 62a4e44bf4bf
62a4e44bf4bf是docker映像ID
每当我运行此命令时,它都会立即关闭.
我已经尝试过使用以下命令:
docker run -i -t -p 8080:8080 62a4e44bf4bf
这将保持图像运行,但是我似乎无法使用此ip从我的浏览器访问jenkins:localhost:8080
DOCKERFILE:
FROM ubuntu:latest
#Oracle Java7 install
RUN apt-get install software-properties-common -y
RUN apt-get update
RUN add-apt-repository -y ppa:webupd8team/java
RUN apt-get update
RUN echo oracle-java7-installer shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections
RUN apt-get install -y oracle-java7-installer
#Jenkins install
RUN wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -
RUN sudo echo "deb http://pkg.jenkins-ci.org/debian binary/" >> /etc/apt/sources.list
RUN apt-get update
RUN apt-get install --force-yes -y jenkins
#Zip support install
RUN apt-get update
RUN apt-get -y install zip
#Unzip hang.zip
#RUN cp /shared/hang.zip /var/lib/jenkins
#RUN unzip -o /var/jenkins/hang.zip -d /var/lib/jenkins/
#Restart jenkins server
RUN service jenkins start
EXPOSE 8080
但是您的Dockerfile有问题. Docker容器必须以pid 1的身份运行一个进程(在容器内部),并且它必须在前台运行(无守护程序).
而且,映像代表文件系统,而不是状态.如果在构建映像的步骤中(在Dockerfile中)启动某个进程,则不会/ persisted /事实运行该进程,因此在基于该映像运行容器时不会再次启动该进程. docker在启动容器时将运行的默认命令是使用CMD定义的.
RUN service jenkins start
上面的行不起作用.它将在构建的这一步骤启动jenkins并创建一层(甚至可能是空的).但是将要创建的下一层(下一步或实际的docker运行)将不会运行jenkins服务/进程.
对于/ inspiration /对于Jenkins Dockerfile,您可以查看https://github.com/aespinosa/docker-jenkins/blob/master/Dockerfile.注意ENTRYPOINT [“ java”,“-jar”,“ / opt / jenkins.war”]也可以是
CMD [“ java”,“ / opt / jenkins.war”].
我鼓励您阅读以下文档,以更全面地了解docker:https://docs.docker.com/userguide/dockerimages/、https://docs.docker.com/reference/builder/和https://docs.docker.com/articles/dockerfile_best-practices/.