第一步:拉取镜像、查看镜像
[root@localhost ~]# docker pull tomcat
Using default tag: latest
Trying to pull repository docker.io/library/tomcat ...
latest: Pulling from docker.io/library/tomcat
d6ff36c9ec48: Pull complete
c958d65b3090: Pull complete
edaf0a6b092f: Pull complete
80931cf68816: Pull complete
bf04b6bbed0c: Pull complete
8bf847804f9e: Pull complete
6bf89641a7f2: Pull complete
3e97fae54404: Pull complete
10dee6830d45: Pull complete
680b26b7a444: Pull complete
Digest: sha256:cbdcddc4ca9b47e42c7d0c2db78cbc0f7a8b4bbe1fa395f4a53c5a236db29146
Status: Downloaded newer image for docker.io/tomcat:latest
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/tomcat latest d5eef28cf41d 5 days ago 647 MB
第二步:启动镜像(注意端口映射)
[root@localhost ~]# docker run -d -p 8080:8080 tomcat
第三步:拷贝容器中的文件
拉取tomcat镜像并启动后会产生容器,这个容器是无法访问的。
原因:容器挂载目录中有一个webapps和webapps.dist,实际要访问的是webapps,但对应的文件却在webapps.dist。
所以需要以下操作:
[root@localhost ~]# docker exec -it 8799975cbdbb /bin/bash
root@8799975cbdbb:/usr/local/tomcat# cp -r webapps.dist/* webapps
再次通过ip+端口访问即可。
第四步:commit(提交)
输入exit,退出挂载目录
root@8799975cbdbb:/usr/local/tomcat/webapps# exit
exit
[root@localhost ~]#
提交容器副本并产生新的镜像,一劳永逸的解决了404问题
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8799975cbdbb tomcat "catalina.sh run" 36 minutes ago Up 35 minutes 0.0.0.0:8080->8080/tcp sleepy_hugle
[root@localhost ~]# docker commit 8799975cbdbb mytomcat
sha256:530150cad938888092c162912b343fb00a912468497c160d1891e0f6b93cd822
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mytomcat latest 530150cad938 About a minute ago 652 MB
docker.io/tomcat latest d5eef28cf41d 5 days ago 647 MB
[root@localhost ~]#