ubuntu-在Docker中运行Jenkins-立即退出

我正在尝试使用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
最佳答案
@Detilium Dockerfile中没有CMD或ENTRYPOINT,这就是为什么它自动退出的原因,因为您的容器没有任何运行.根据您自己的答案,您可能是通过使用exec或运行bash并手动启动它来使其工作的,我猜?

但是您的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/.

相关文章

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Li...
1、什么是docker?答:docker是开源的应用容器引擎;开发人员把他们的应用及依赖包打包发布到容器当中。...
1、什么是namespace? 答:名称空间,作用隔离容器 2、namespace隔离有那些? 答:ipc:共享内存、消息队...
1、Docker能在非Linux平台(Windows+MacOS)上运行吗? 答:可以 2 、如何将一台宿主机的docker环境...
环境要求: IP hostname 192.168.1.1 node1 项目规划: 容器网段:172.16.10.0/24 NGINX:172.16.10.10...
文档上传地址:https://files.cnblogs.com/files/lin-strive/07-docker%E8%B7%A8%E4%B8%BB%E6%9C%BA%E7...