一.在docker中运行相应的镜像,为何无法输入命令

docker ctrl p docker ctrl p q无效_docker


因为目前已经进入了tomcat应用,和之前在linux中运行rabbitmq一样的问题。如下我试过ctrlZ和ctrlC,只有CtrlC起作用,于是去了解C和Z之前的区别

Ctrl+C比较暴力,就是发送Terminal到当前的程序,比如你正在运行一个查找功能,文件正在查找中,Ctrl+C就会强制结束当前的这个进程。
Ctrl+Z是把当前的程序挂起,暂停执行这个程序,

docker ctrl p docker ctrl p q无效_docker_02


当使用ctrlC后去访问localhost:8080端口不起作用,因为此时tomcat进程已经被销毁,相当于tomcat应用被关闭了,但如果ctrl+p+q,容器不停止退出

二.当我解决完上述问题之后,另一个问题出现了就是404,但tomcat是已经运行了的只是首页并未能访问的到

docker ctrl p docker ctrl p q无效_docker_03


1.使用命令: docker exec -it 运行的tomcat容器ID /bin/bash 进入到tomcat的目录(exec 该命令进入运行中的容器并以命令行交互,若需进入容器,则docker attcah 容器id)

docker ctrl p docker ctrl p q无效_linux_04

2.当我进入webapps文件夹,发现里面是空的(tomcat默认的欢迎页面实际上放在的路径应该是:webapps/ROOT/index.jsp或者index.html)

docker ctrl p docker ctrl p q无效_docker ctrl p_05

解决方案:由于新版的tomcat有个webapps.dist的文件,原本应该在webapps文件中的文件都在webapps.dist文件中,所以将webapp,rmdir命令删了,dist文件改成webapps即可


由于最新版本的镜像,本次的修改只能在当前镜像创建的实例中生效,但当关闭docker容器或者关闭tomcat重新启动一个实例,那么依然如此。

解决方案:远程镜像库中的镜像我们可以看成是基础版本,按我们所需可以在上面添加修改操作,相当于对基础版本进行添加自己的装备库。然后添加完成后需要自己生成相应新的镜像,就好比反射一般。

通过命令行docker commit -a="" -m="" 容器实例id:tag(version版本号要指定,不然还是latest)

docker ctrl p docker ctrl p q无效_tomcat_06


利用命令docker stop 容器id或者一次性删除所有容器docker rm -f $(docker ps -a -q)

docker ctrl p docker ctrl p q无效_docker_07


之后生成的tomcat实例都是可以直接访问首页内容

docker ctrl p docker ctrl p q无效_docker ctrl p_08