我在docker中运行tomcat服务器8,当我使用docker run命令运行时它运行正常并且命令提示符没有回来,现在我按ctrl + c并提示返回,但是现在tomcat服务器已经停止了当我检查http://localhost:8080时,tomcat页面没有出现。那么如何让它在容器中连续运行或称为系统级进程。 这是我的docker文件。帮帮我这个
FROM scratch
FROM ubuntu:16.04
RUN mkdir /opt/java8
RUN mkdir /opt/tomcat8
ENV JAVA_HOME /opt/java8
ENV CATALINA_HOME /opt/tomcat8
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
ADD jdk1.8.0_112 /opt/java8
ADD apache-tomcat-8.0.38 /opt/tomcat8
ADD M_UserTP.war /opt/tomcat8/webapps
EXPOSE 8080
CMD ["catalina.sh", "run"]
运行startup.sh甚至没有帮助我。
答案 0 :(得分:1)
而不是ctrl
+ c
,您应该输入ctrl
+ p
和ctrl
+ q
来分离
答案 1 :(得分:1)
有两种方法可以进入正在运行的容器:
用于使用容器的ID或名称将终端的标准输入,输出和错误附加到正在运行的容器。这允许您查看其正在进行的输出或以交互方式控制它,就像命令直接在您的终端中运行。
要停止容器,请使用CTRL-c。此密钥序列将SIGKILL发送到容器。 您可以使用CTRL-p CTRL-q键序列从容器中分离并使其保持运行。
# docker run -it ubuntu:15.0 /bin/bash
root@9391b08536ae:/#
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9391b08536ae ubuntu:15.0 "/bin/bash" 6 seconds ago Up 6 seconds 0/tcp confident_albattani
# docker attach 939
root@9391b08536ae:/#
root@9391b08536ae:/# exit
exit
root@labadmin-VirtualBox:~/RAGHU/python# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
docker exec命令在正在运行的容器中运行新命令。
# docker exec -it 939 /bin/bash
root@9391b08536ae:/# exit
exit
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9391b08536ae ubuntu:15.0 "/bin/bash" 25 seconds ago Up 25 seconds 0/tcp confident_albattani
希望这有帮助。
答案 2 :(得分:1)
docker run
区分前景和分离模式(source)。您的麻烦是由于您在前台模式下运行容器引起的。要在后台作为守护程序运行它,请使用分离的模式:
docker run -d [IMAGE] [COMMAND]
这会在后台启动容器,只要内部进程继续运行,它就会保持运行状态。您可以通过查看其日志(docker logs [CONTAINER_ID]
)或跳过容器内的shell(docker exec -it [CONTAINER_ID] /bin/sh
)来查看容器内部的内容。
如果您已完成容器的使用,请使用docker stop [CONTAINER_ID]
来阻止它。如果您不确定是否有容器在运行,请使用docker ps
。