容器化-Docker-4-Docker镜像
Docker镜像
什么是镜像
镜像:
- 只读的(镜像文件禁止修改的)
- 分层的(优化空间使用,相同层使用同一份数据,每层数据都在/var/lib/docker/overlay2/存着)
- 程序以及依赖二进制文件集合(程序打包)
简单点理解:一堆文件
容器:
- 镜像(只读) + 一层读写层 + 程序运行底层基础(内核创建的独立命名空间)
镜像创建
- Dockerfile(推荐)
镜像和容器的区别
用区别来说镜像和容器不太恰当,镜像可以独立于容器存在,但是容器的启动需要镜像,他们更像阶段的概念,容器是为运行的容器,容器是正在运行的镜像
Docker镜像管理(操作对象是镜像)
检索镜像
docker search [image_name]
image_name是
下载镜像
[root@localhost ~]# ntpdate cn.pool.ntp.org
20 Jan 04:11:23 ntpdate[11726]: step time server 10.152.227.178 offset 13370867.149701 sec
[root@localhost ~]# docker pull redis:latest
Trying to pull repository docker.io/library/redis ...
latest: Pulling from docker.io/library/redis
8ec398bc0356: Pull complete
da01136793fa: Pull complete
cf1486a2c0b8: Pull complete
a44f7da98d9e: Pull complete
c677fde73875: Pull complete
727f8da63ac2: Pull complete
Digest: sha256:90d44d431229683cadd75274e6fcb22c3e0396d149a8f8b7da9925021ee75c30
Status: Downloaded newer image for docker.io/redis:latest
如果报错:**x509: certificate has expired or is not yet valid**
本地时间不对同步下时间
# 安装ntpdate工具
yum -y install ntp ntpdate
# 同步
ntpdate cn.pool.ntp.org
下载并运行镜像
# 如果本地没有镜像会去镜像仓库获取镜像
docker run -it busybox /bin/sh
查看/删除本地镜像
# 查看本地镜像有那些
docker images
# 删除本地镜像使用rmi
docker rmi 9b188f5fb1e6
镜像本质
Docker 镜像其实本质就是一个压缩包,我们可以使用下面的命令将一个 Docker 镜像中的文件导出
# busybox 镜像是一个Linux工具文件集合
#docker export $(docker create busybox) | tar -C rootfs -xvf -
#ls
#bin dev etc home proc root sys tmp usr var
你可以看到这个 busybox 镜像中的目录结构与 Linux 操作系统的根目录中的内容并没有太多的区别,可以说 Docker 镜像就是一个文件。