docker容器镜像的分类
▶ 容器镜像获取的方法
主要有几种:
-
在 DokcerHub 直接下载
-
把操作系统中文件系统打包为容器镜像
-
把正在运行的容器打包为容器镜像,即 docker commit
-
通过 Dockerfile 实现容器镜像的自定义及生成。
▶ 容器镜像获取方法演示
▷ 在 DockerHub 直接下载
直接在官网上找,有多个 tag 版本的。
[root@server ~]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
a1d0c7532777: Pull complete
Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest
默认的就是 latest
这个 tag
。
▷ 把操作系统系统打包为容器镜像
▷▷ 安装一个最小化的操作系统
安装完后把操作系统进行打包,打包完成后将打包后的文件加载到本地的文件系统中去然后就可以成为本地的容器镜像了,最后验证即可。
首先应该要有一个最小化安装的系统。
将操作系统中文件系统进行打包:
这是示列中的最小化安装系统:
[root@server ~]# cat /etc/redhat-release
Rocky Linux release 9.4 (Blue Onyx)
[root@server ~]# tar --numeric-owner --exclude=/proc --exclude=/sys -cvf rocky9.4 /
把打包后文件加载至本地文件系统生成本地容器镜像:
[root@server ~]# ll -h
total 1.8G
-rw-------. 1 root root 895 Aug 15 09:20 anaconda-ks.cfg
-rw-r--r--. 1 root root 1.8G Oct 28 22:24 rocky9.4.tar
[root@server ~]# docker import rocky9.4.tar rocky:9.4
通过上面的操作基于操作系统的镜像就创建成功了。
[root@server ~]# docker import rocky9.4.tar rocky:9.4
sha256:917e9c0aad05dc57861ab203971aa0a64e92b1298a79d243a62202943f96887c
[root@server ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
rocky 9.4 917e9c0aad05 9 seconds ago 1.81GB
尝试运行一下:
[root@server ~]# docker run -it rocky:9.4 bash
[root@a6c2c6ef8a9b /]#
[root@a6c2c6ef8a9b /]# ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
6: eth0@if7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever
▷ 把正在运行的容器打包为容器镜像
运行一个容器:
[root@server ~]# docker run -it rocky:9.4 bash
[root@ef08240f408f /]#
在容器中安装应用
[root@ef08240f408f /]# dnf -y install httpd
Docker CE Stable - x86_64 8.5 kB/s | 3.5 kB 00:00
把正在运行的容器打包为容器镜像
在运行的容器内 ctrl+p+q
就能退出容器,这个容器不会停止运行。
[root@server ~]# docker commit ef08240f408f rocky-httpd
sha256:41e3d58e497f8ca645ab30fa2cb6b6ce6903127da3ba7c533fb98b56a52d64d4
[root@server ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
rocky-httpd latest 41e3d58e497f 5 seconds ago 1.91GB
rocky 9.4 917e9c0aad05 25 minutes ago 1.81GB
▷ 通过Dockerfile实现容器镜像的自定义及生成
▷▷ Dockerfile介绍
Dockerfile
是一种能够被 Docker 程序解释的脚本。
Dockerfile
由一条一条的指令组成,并且有自己的书写格式和支持的命令。当我们需要在容器镜像中指定自己额外的需求时,只需要在 Dockerfile
上添加或修改指令,然后通过 docker build 生成我们自定义的容器镜像 image
。