12.Docker提交(commit)镜像
场景介绍:
在前面使用Docker部署tomcat时,我们发现,从dockerhub官方下载下来的tomcat镜像中,webapps目录下是没有任何文件的,而webapps.dist下面是有的,因此我们在使用docker部署并启动好tomcat之后,访问tomcat地址会出现404页面,所以,我们自己做一个tomcat镜像,使得我们每次下载下来的tomcat镜像,使用docker部署并启动好tomcat之后,可以直接访问tomcat地址。
12.1. commit命令介绍
docker commit
提交一个容器成为一个新的镜像
语法:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS说明:
- -a :提交的镜像作者;
- -c :使用Dockerfile指令来创建镜像;
- -m :提交时的说明文字;
- -p :在commit时,将容器暂停。
CONTAINER说明:
- 容器ID
REPOSITORY说明:
- 目标镜像名称
- TAG说明:镜像的版本号
示例:
将容器a404c6c174a2 保存为新的镜像,并添加提交人信息和说明信息。
docker commit -a "runoob.com" -m "my apache" a404c6c174a2 mymysql:v1
该命令表示:将容器id=“a404c6c174a2”做为一个新的镜像提交,镜像的名称是:mymysql,版本号是:v1。
12.2.制作tomcat镜像
# 查看正在运行的容器
[root@iZ8vb6lqqya4rvreq9ra6gZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
381cff6289c0 portainer/portainer "/portainer" 47 hours ago Up 47 hours 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp portainer
967e9d855838 elasticsearch:7.6.2 "/usr/local/bin/dock…" 2 days ago Up 2 days 0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp elasticsearch
cb19a16a04d1 tomcat:9.0.58-jdk8-corretto "catalina.sh run" 4 days ago Up 4 days 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp tomcat01
040788c26e85 nginx "/docker-entrypoint.…" 4 days ago Up 4 days 0.0.0.0:3031->80/tcp, :::3031->80/tcp nginx01
# 进入tomcat01容器
[root@iZ8vb6lqqya4rvreq9ra6gZ ~]# docker exec -it cb19a16a04d1 /bin/bash
bash-4.2# ls
BUILDING.txt CONTRIBUTING.md LICENSE NOTICE README.md RELEASE-NOTES RUNNING.txt bin conf lib logs native-jni-lib temp webapps webapps.dist work
# 进入webapps目录下
bash-4.2# cd webapps
# 查看tomcat01容器中的webapps目录下的文件,可以看到是有ROOT等这些文件的
bash-4.2# ls
ROOT docs examples host-manager manager
bash-4.2# exit
exit
[root@iZ8vb6lqqya4rvreq9ra6gZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
381cff6289c0 portainer/portainer "/portainer" 47 hours ago Up 47 hours 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp portainer
967e9d855838 elasticsearch:7.6.2 "/usr/local/bin/dock…" 2 days ago Up 2 days 0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp elasticsearch
cb19a16a04d1 tomcat:9.0.58-jdk8-corretto "catalina.sh run" 4 days ago Up 4 days 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp tomcat01
040788c26e85 nginx "/docker-entrypoint.…" 4 days ago Up 4 days 0.0.0.0:3031->80/tcp, :::3031->80/tcp nginx01
[root@iZ8vb6lqqya4rvreq9ra6gZ ~]#
访问tomcat地址:http:[ip]:8080,如下图:
经过上面的一系列验证,当前运行的容器tomcat01,是可以访问http:[ip]:8080地址的;因此,我们将这个容器打包为一个镜像进行提交。
12.3.提交tomcat镜像
# 查看当前所有的镜像
[root@iZ8vb6lqqya4rvreq9ra6gZ ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat 9.0.58-jdk8-corretto 41702c6af95e 8 days ago 379MB
nginx latest 605c77e624dd 6 weeks ago 141MB
redis latest 7614ae9453d1 7 weeks ago 113MB
centos latest 5d0da3dc9764 5 months ago 231MB
portainer/portainer latest 580c0e4e98b0 11 months ago 79.1MB
elasticsearch 7.6.2 f29a1ee41030 22 months ago 791MB
# 查看所有的容器
[root@iZ8vb6lqqya4rvreq9ra6gZ ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
381cff6289c0 portainer/portainer "/portainer" 2 days ago Up 2 days 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp portainer
967e9d855838 elasticsearch:7.6.2 "/usr/local/bin/dock…" 3 days ago Up 3 days 0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp elasticsearch
cb19a16a04d1 tomcat:9.0.58-jdk8-corretto "catalina.sh run" 4 days ago Up 4 days 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp tomcat01
040788c26e85 nginx "/docker-entrypoint.…" 4 days ago Up 4 days 0.0.0.0:3031->80/tcp, :::3031->80/tcp nginx01
# 将容器ID=cb19a16a04d1打包并提交成为一个新的镜像,镜像名称是:tomcat_v
[root@iZ8vb6lqqya4rvreq9ra6gZ ~]# docker commit -a "person" -m "update webapps" cb19a16a04d1 tomcat_v:v1
sha256:aed546e632575db89861786dd89591606b20e064965b3a0c326af0932f03dbc1
# 查看当前所有的镜像,可以看到,增加了tomcat_v这个镜像
[root@iZ8vb6lqqya4rvreq9ra6gZ ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat_v v1 aed546e63257 4 seconds ago 384MB
tomcat 9.0.58-jdk8-corretto 41702c6af95e 8 days ago 379MB
nginx latest 605c77e624dd 6 weeks ago 141MB
redis latest 7614ae9453d1 7 weeks ago 113MB
centos latest 5d0da3dc9764 5 months ago 231MB
portainer/portainer latest 580c0e4e98b0 11 months ago 79.1MB
elasticsearch 7.6.2 f29a1ee41030 22 months ago 791MB
[root@iZ8vb6lqqya4rvreq9ra6gZ ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
381cff6289c0 portainer/portainer "/portainer" 2 days ago Up 2 days 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp portainer
967e9d855838 elasticsearch:7.6.2 "/usr/local/bin/dock…" 3 days ago Up 3 days 0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp elasticsearch
cb19a16a04d1 tomcat:9.0.58-jdk8-corretto "catalina.sh run" 4 days ago Up 4 days 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp tomcat01
040788c26e85 nginx "/docker-entrypoint.…" 4 days ago Up 4 days 0.0.0.0:3031->80/tcp, :::3031->80/tcp nginx01
[root@iZ8vb6lqqya4rvreq9ra6gZ ~]#
至此,现在算是docker入门了
---------------------------EOF-------------------------