1.commit方式镜像创建
docker commit 提交容器成为一个新的副本
docker commit -m "提交信息" -a="作者" 容器id 目标镜像名 : TAG
例如:
root@bogon \~# docker commit -a="ericliux" -m="add webapps" ffbd435c60fd test_tomcat:1.1
查看提交的镜像:

利用新提交的镜像创建新的容器:

该方法并不提倡,因为操作步骤比较繁琐,三步走方式:
-
运行容器
-
修改容器
-
将容器保存为新的镜像
该方法并不推荐,实际开发中可跟根据实际情况决定是否应用。
不推荐的原因:
纯手工方式,容易出错,每次都要进行着三步方式。也比较繁琐。效率低下。
安全性也较低,如果基础容器存在恶意程序,那么安全性也存在。
2.Dockerfile创建镜像
Dockerfile内容:

上图语句解释:
FROM 表示以ubuntu镜像为基础
RUN 表示当创建新容器时在执行两条命令为新容器系统更新&安装vim编辑工具
构建新镜像:
命令:docker build -t 新镜像名:Tag名 -f Dockerfile文件路径
// 该处表示当前路径下默认时Dockerfile,当前路径可以省略-f参数
[root@bogon docker]# docker build -t ubuntu-vim .
[+] Building 0.0s (6/6) FINISHED docker:default
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 154B 0.0s
=> [internal] load metadata for docker.io/library/ubuntu:latest 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [1/2] FROM docker.io/library/ubuntu:latest 0.0s
=> CACHED [2/2] RUN apt-get update && apt-get install -y vim 0.0s
=> exporting to image 0.0s
=> => exporting layers 0.0s
=> => writing image sha256:632e922b2191f3a01d047b28daf812423523799a8d78efbfc443d6fb2212a74a 0.0s
=> => naming to docker.io/library/ubuntu-vim
Dockerfile:
内容:
FROM centos
VOLUME ["volume01","volume02"]
CMD echo "---end---"
CMD /bin/bash
利用创建镜像启动一个容器:
[root@localhost docker]# docker run -it centos_liu:1.0 /bin/bash
[root@13ce6928177c /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var volume01 volume02
[root@13ce6928177c /]# ll
bash: ll: command not found
[root@13ce6928177c /]# ls -l
total 0
lrwxrwxrwx. 1 root root 7 Nov 3 2020 bin -> usr/bin
drwxr-xr-x. 5 root root 360 Mar 8 07:56 dev
drwxr-xr-x. 1 root root 66 Mar 8 07:56 etc
drwxr-xr-x. 2 root root 6 Nov 3 2020 home
lrwxrwxrwx. 1 root root 7 Nov 3 2020 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Nov 3 2020 lib64 -> usr/lib64
drwx------. 2 root root 6 Sep 15 2021 lost+found
drwxr-xr-x. 2 root root 6 Nov 3 2020 media
drwxr-xr-x. 2 root root 6 Nov 3 2020 mnt
drwxr-xr-x. 2 root root 6 Nov 3 2020 opt
dr-xr-xr-x. 307 root root 0 Mar 8 07:56 proc
dr-xr-x---. 2 root root 162 Sep 15 2021 root
drwxr-xr-x. 11 root root 163 Sep 15 2021 run
lrwxrwxrwx. 1 root root 8 Nov 3 2020 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 Nov 3 2020 srv
dr-xr-xr-x. 13 root root 0 Nov 9 08:43 sys
drwxrwxrwt. 7 root root 171 Sep 15 2021 tmp
drwxr-xr-x. 12 root root 144 Sep 15 2021 usr
drwxr-xr-x. 20 root root 262 Sep 15 2021 var
drwxr-xr-x. 2 root root 6 Mar 8 07:56 volume01 # 生成镜像时挂载的目录
drwxr-xr-x. 2 root root 6 Mar 8 07:56 volume02 # 同上
上述通过Dockerfile构建的镜像,也能实现卷挂载,从而在使用镜像构建容器是,实现数据同步。