Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使docker保持在前端运行而不退出,以便我可以看到运行日志输出_Docker - Fatal编程技术网

如何使docker保持在前端运行而不退出,以便我可以看到运行日志输出

如何使docker保持在前端运行而不退出,以便我可以看到运行日志输出,docker,Docker,现在,我想让docker命令在前端运行,以便查看日志输出。现在我使用此命令运行docker容器: docker run -p 11110:11110 -p 11111:11111 -p 11112:11112 --name canal-server dolphinjiang/canal-server:v1.1.5 这是我的项目的Dockerfile: FROM centos:7 RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime R

现在,我想让docker命令在前端运行,以便查看日志输出。现在我使用此命令运行docker容器:

docker run -p 11110:11110 -p 11111:11111 -p 11112:11112 --name canal-server dolphinjiang/canal-server:v1.1.5
这是我的项目的Dockerfile:

FROM centos:7

RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo ZONE=\"Asia/Shanghai\" > /etc/sysconfig/clock


RUN rm -rf /etc/yum.repos.d/*.repo 
COPY CentOS6-Base-163.repo /etc/yum.repos.d/
RUN yum clean all



RUN groupadd -g 2500 canal; useradd -u 2501 -g canal -d /home/canal -m canal
RUN echo canal:De@2018er | chpasswd; echo root:dockerroot | chpasswd


RUN yum -y update && yum -y install wget vi openssl.x86_64 glibc.x86_64 tar tar.x86_64 inetutils-ping net-tools telnet which file
RUN yum clean all


COPY jdk-8u291-linux-x64.tar.gz /opt
RUN tar -zvxf /opt/jdk-8u291-linux-x64.tar.gz -C /opt && \
        rm -rf /opt/jdk-8u291-linux-x64.tar.gz && \
                        chmod -R 755 /opt/jdk1.8.0_291 && \
                                        chown -R root:root /opt/jdk1.8.0_291
RUN echo 'export JAVA_HOME=/opt/jdk1.8.0_291' >> /etc/profile                       
RUN echo 'export JRE_HOME=$JAVA_HOME/jre' >> /etc/profile
RUN echo 'export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH' >> /etc/profile
RUN echo 'export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH' >> /etc/profile
RUN source /etc/profile


RUN yum install kde-l10n-Chinese -y
RUN yum install glibc-common -y
RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
ENV JAVA_HOME /opt/jdk1.8.0_291
ENV PATH $PATH:$JAVA_HOME/bin
ENV LANG zh_CN.UTF-8
ENV LC_ALL zh_CN.UTF-8


ADD canal-server /home/canal/
RUN chmod 755 /home/canal/bin


WORKDIR /home/canal/bin
RUN chmod 777 /home/canal/bin/restart.sh
RUN chmod 777 /home/canal/bin/startup.sh
RUN chmod 777 /home/canal/bin/stop.sh
RUN chmod 777 /home/canal/bin/config.sh
CMD  /home/canal/bin/config.sh
这是config.sh:

这是start.sh:

启动docker后,它会自动退出,docker不会启动,也不会输出日志。我应该怎么做才能让它在前端运行。成功后,切换到后端。我还尝试像这样在deamon中运行(使容器在后台运行,而不是退出):

docker run -it -d -p 11110:11110 -p 11111:11111 -p 11112:11112 --name canal-server canal/canal-server:v1.1.5

进程仍然自动退出。docker容器没有启动。

基本上,您应该根据最新的评论得出结论。 Docker基于某个命令,当它完成时,它会停止容器

因此,要使其持续运行,您应该拥有命令并无限运行

也请检查这个答案,还有更多的解释

最简单的解决方案之一是跟踪一些日志。 像


基本上,你应该根据你最新的评论得出结论。 Docker基于某个命令,当它完成时,它会停止容器

因此,要使其持续运行,您应该拥有命令并无限运行

也请检查这个答案,还有更多的解释

最简单的解决方案之一是跟踪一些日志。 像

摘自

您可以使用tail-f/dev/null阻止容器停止,请尝试以下操作

docker run -it -d -p 11110:11110 -p 11111:11111 -p 11112:11112 --name canal-server canal/canal-server:v1.1.5 tail -f /dev/null
另请参见此

您可以使用tail-f/dev/null阻止容器停止,请尝试以下操作

docker run -it -d -p 11110:11110 -p 11111:11111 -p 11112:11112 --name canal-server canal/canal-server:v1.1.5 tail -f /dev/null

另请参见此

从docker run命令中删除-d开始。我已尝试删除-d,但进程仍将退出@最后,我使用此脚本保持容器的活动状态,不退出:虽然为true:do sleep 1 done,但我不知道是否有更好的方法来执行此操作。从docker run命令中删除-d开始。我已尝试删除-d,但进程仍然退出@最后,我使用这个脚本来保持容器的活动状态,并且不退出:虽然为true:do sleep 1 done,但我不知道是否有更好的方法。
docker run -it -d -p 11110:11110 -p 11111:11111 -p 11112:11112 --name canal-server canal/canal-server:v1.1.5
tail -f /dev/null
docker run -it -d -p 11110:11110 -p 11111:11111 -p 11112:11112 --name canal-server canal/canal-server:v1.1.5 tail -f /dev/null