生成的映像将立即启动和退出

  • 本文关键字:启动 退出 映像 docker
  • 更新时间 :
  • 英文 :


我想创建一个图像,我可以复制我的文件并与我的朋友一起用于项目 我用这张图片作为镜子来指导我 https://hub.docker.com/r/tomsik68/xampp/dockerfile,但他安装得太多了,我真的很想要 xampp......

所以我无法在这里解决这个问题:

当我使用命令运行构建的映像时

docker run -t -d -p 3000:80 xampp-model

Powershell回到我身边:

95ec81d365025c0452efafe7ae91f7b50f7d469add7494c7a380bf44b8af43be

PS D:ProgrammingmyPortfolio> docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              
PORTS               NAMES
PS D:ProgrammingmyPortfolio> docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     
PORTS               NAMES
95ec81d36502        xampp-model         "sh /startup.sh"    4 seconds ago       Exited (0) 2 seconds ago          

我的码头工人文件:

#image that initialize
FROM ubuntu
MAINTAINER bruno02souto@gmail.com
# Where will be downloaded xampp
RUN cd home
# update and upgrade to be available to install some features
RUN apt-get update --fix-missing
# curl is needed to download the xampp installer, net-tools provides netstat command for xampp
RUN apt-get -y install curl net-tools
# install wget to download xampp
RUN apt-get -y install wget
# download xampp
RUN wget https://www.apachefriends.org/xampp-files/7.4.7/xampp-linux-x64-7.4.7-0-installer.run
# concede permission to xampp installer
RUN chmod +x xampp-linux-x64-7.4.7-0-installer.run
# initialize xampp installer
RUN ./xampp-linux-x64-7.4.7-0-installer.run
# remove xampp installer
RUN rm xampp-linux-x64-7.4.7-0-installer.run
# back to /
RUN cd ..
# create a dir where will be all data for webpages
RUN mkdir /www
# links previous folter to htdocs (where originally stands for web service)
RUN ln -s /www /opt/lampp/htdocs/
# copy 
COPY . /www
EXPOSE 80
RUN echo '/opt/lampp/xampp start' >> /startup.sh
CMD ["sh", "/startup.sh"]

和 cmds 来启动和构建我使用的

docker run -d -t -p 3000:80 xampp-model
docker build -t xampp-model .

那么,为什么状态是退出(0(?

您的startup.sh/usr/bin/supervisord -n结尾,假设主管有一些东西要...监督。

我只看到 openssh 服务器,它运行sshd -D:它不应该立即退出.
如果是这样,请将您的主管配置为在 nodaemon 模式下运行(即使-n应该足够了,这样更安全(

我宁愿使用类似于docker-lampsupporting_files的脚本来显式地为 Apache 配置主管。

问题出在您使用上述内容的 Dockerfile 中,如果您检查它是否会startup.sh它会变成

/opt/lampp/lampp start

这将在后台启动堆栈,因此您的容器将exit with status code 0

您需要添加 Github 中提到的缺失行,但不在 Dockerfile 中。

RUN echo '/opt/lampp/lampp start' >> /startup.sh
RUN echo '/usr/bin/supervisord -n' >> /startup.sh