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