Docker 生成的映像在之后立即启动和退出

Docker 生成的映像在之后立即启动和退出,docker,Docker,我想创建一个图像,我可以复制我的文件,并与我的朋友一起用于项目 我用这个图像作为镜子来指导我,但他安装了太多,我真的很想xampp 所以我不能在这里解决这个问题: 当我使用命令运行构建的映像时 docker run -t -d -p 3000:80 xampp-model Powershell返回给我: 95ec81d365025c0452efafe7ae91f7b50f7d469add7494c7a380bf44b8af43be 及 我的dockerfile: #image that

我想创建一个图像,我可以复制我的文件,并与我的朋友一起用于项目 我用这个图像作为镜子来指导我,但他安装了太多,我真的很想xampp

所以我不能在这里解决这个问题:

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

 docker run -t -d -p 3000:80 xampp-model
Powershell返回给我:

95ec81d365025c0452efafe7ae91f7b50f7d469add7494c7a380bf44b8af43be

我的dockerfile:

 #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"]
和CMD来启动和构建我使用的

 docker run -d -t -p 3000:80 xampp-model
 docker build -t xampp-model .
那么,为什么状态是退出的(0)?

您以
/usr/bin/supervisord-n
结束,它假定有一些东西需要主管来。。。监督

我只看到,它运行着
sshd-D
:不应该立即退出。
如果是这样,(即使
-n
应该足够了,但这样更安全)

我宁愿使用类似的脚本来明确地为Apache配置管理器。

您的结尾是
/usr/bin/supervisord-n
,它假定管理器可以。。。监督

我只看到,它运行着
sshd-D
:不应该立即退出。
如果是这样,(即使
-n
应该足够了,但这样更安全)


我宁愿使用类似的脚本来明确地为Apache配置supervisor。

如果您检查是否
startup.sh
它将变为

/opt/lampp/lampp start
这将在后台启动堆栈,因此您的容器将
退出,状态代码为0

您需要添加Github中提到的缺少的行,而不是Dockerfile中的行

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

如果您检查
startup.sh
它将变为

/opt/lampp/lampp start
这将在后台启动堆栈,因此您的容器将
退出,状态代码为0

您需要添加Github中提到的缺少的行,而不是Dockerfile中的行

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

如果在shell提示符下运行
xampp start
命令,它是否会在后台启动服务并立即返回新的提示符?如果发生这种情况,实际上会导致容器立即成功退出,这就是您所看到的。尝试直接作为前台进程运行服务,而不是通过init类型脚本。如果在shell提示符下运行
xampp start
命令,它是否在后台启动服务并立即返回新的提示符?如果发生这种情况,实际上会导致容器立即成功退出,这就是您所看到的。尝试直接作为前台进程运行服务,而不是通过init类型脚本。