Es gibt ein Problem mit Docker: Die Docker-Datei kann nicht gestartet werden (/ bin / bash wird nach dem Startbefehl hinzugefügt, damit sie nicht gestartet werden kann)

Docker verwendet einen Tutorial-bezogenen Serienkatalog


Problem:

Schreiben Sie eine Docker-Datei, erstellen Sie dann einen Spiegel über die Docker-Datei, der erstellte Spiegel generiert einen Container und startet dann

FROM centos:7
MAINTAINER www.zenghw.com
ENV VERSION=8.5.47
RUN yum install java-1.8.0-openjdk wget curl unzip iproute net-tools -y && \
    yum clean all && \
    rm -rf /var/cache/yum/*
COPY apache-tomcat-8.5.47.zip /tmp
RUN cd /tmp && \
    unzip apache-tomcat-8.5.47.zip  && \
    mv apache-tomcat-8.5.47 /usr/local/tomcat8 && \
    rm -rf apache-tomcat-8.5.47.zip  && \
    cd /usr/local/tomcat8/bin/ && \
    chmod +x *.sh && \
    sed -i '1a JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom"' /usr/local/tomcat8/bin/catalina.sh && \
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
 
ENV PATH $PATH:/usr/local/tomcat8/bin
WORKDIR /usr/local/tomcat8
EXPOSE 8080
CMD ["/usr/local/tomcat8/bin/catalina.sh", "run"]

docker build -t tomcat:v1 -f Dockerfile-tomcat . 
docker run -d -i -t --name=tomcatv1 -p 8888:8080 tomcat:v1 /bin/bash

Analysieren Sie die Gründe

Die Funktion von / bin / bash besteht darin, bash nach dem Laden des Containers auszuführen. Im Docker muss ein Prozess ausgeführt werden, da sonst der gesamte Container sofort nach dem Start beendet wird.

Der Befehl wurde in der Docker-Datei deklariert

CMD ["/usr/local/tomcat8/bin/catalina.sh", "run"]

Lösung

Wenn der Container gestartet wird, fügen Sie nach dem Befehl run nicht / bin / bash hinzu

Ich denke du magst

Origin blog.csdn.net/shi_hong_fei_hei/article/details/114646659
Empfohlen
Rangfolge