3.1 镜像是什么
简单说,Docker镜像是一个不包含Linux内核而又精简的Linux操作系统。
3.2 镜像从哪里来
Docker Hub 是由Docker公司负责维护的公共注册中心,包含大量的容器镜像,Docker工具默认从这个公共镜像库下载镜像。
https://hub.docker.com/explore 默认是国外的源,下载会慢
3.2.1 建议配置国内镜像仓库:
- vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
-
配置镜像后需要重启
systemctl daemon-reload | 刷新deamon ,保证配置文件修改生效 |
systemctl restart docker | 启动 docker |
3.3 镜像与容器联系
1. 镜像
- 多层构成
- 通过docker history <ID/NAME> 查看镜像中各层内容及大小
- 每层对应着Dockerfile中的一条指令。
- 默认存储在/var/lib/docker/<storage-driver>中
2. 容器
- 读写层
在镜像的最上面加了一层读写层,在运行容器里做的任何文件改动,都会写到这个读写层。如果容器删除了,最上面的读写层也就删除了,改动也就丢失了。 Docker使用存储驱动管理镜像每层内容及可读写层的容器层。
3.4 存储驱动
3.5 镜像管理命令
指令 | 描述 |
docker image --help | 查看docker image的指令帮助 |
docker image ls | 列出镜像 = docker images |
docker image build | 构建镜像来自Dockerfile |
docker image history | 查看镜像历史(分层) |
docker image inspect | 显示一个或多个镜像详细信息 |
docker image pull | 从镜像仓库拉取镜像 |
docker image push | 推送一个镜像到镜像仓库 |
docker image rm | 移除一个或多个镜像 |
docker image prune | 移除未使用的镜像。没有被标记或被任何容器引用的。 |
docker image tag | 创建一个引用源镜像标记目标镜像(持续集成时需要) |
docker export | 容器 - 导出容器文件系统到tar归档文件 |
docker image import | 容器 - 导入容器文件系统tar归档文件创建镜像 |
docker image save | 镜像 - 导出所有的镜像到一个tar归档文件 docker image save nginx:1.11 > nginxl.11.tar du -sh nginx1.11.tar #当前(目录下的所有)文件占用磁盘大小和总大小 |
docker image load | 镜像 - 加载镜像来自tar归档或标准输入 |
3.6 实战
- 保存镜像
docker image save nginx:1.11 > nginxl.11.tar
- 加载镜像(如果已存在镜像则不会新增)
docker load < nginx1.11.tar
- 导出容器(CONTAINER ID = 6832bbd31762 )
docker export 6832bbd31762 busybox.tar
- 导入容器
docker image import busybox.tar
docker image import busybox.tar busybox:self