Il y a un problème avec docker: le dockerfile ne peut pas être démarré (/ bin / bash est ajouté après la commande start pour empêcher son démarrage) solution

Docker utilise le catalogue de séries liées au didacticiel


problème:

Écrivez un fichier docker, puis créez un miroir via le fichier dockerfile, le miroir intégré génère un conteneur, puis démarre

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

Analysez les raisons

La fonction de / bin / bash est d'exécuter bash après le chargement du conteneur. Un processus doit continuer à s'exécuter dans le menu fixe, sinon le conteneur entier sera tué immédiatement après son démarrage.

La commande a été déclarée dans le fichier dockerfile

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

Solution

Lorsque le conteneur démarre, n'ajoutez pas / bin / bash après la commande d'exécution

Je suppose que tu aimes

Origine blog.csdn.net/shi_hong_fei_hei/article/details/114646659
conseillé
Classement