我在Docker中运行tomcat但是当我关闭终端时它会停止,所以如何让它连续运行

时间:2017-06-17 10:05:17

标签: docker tomcat8

我在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甚至没有帮助我。

3 个答案:

答案 0 :(得分:1)

而不是ctrl + c,您应该输入ctrl + pctrl + q来分离

答案 1 :(得分:1)

有两种方法可以进入正在运行的容器:

  

1)Attach to the process/container

用于使用容器的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
  

2)Execute the container

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