Docker 学习之镜像
一、镜像是什么?
1、docker的镜像是什么?
- 一个分层存储的文件
- 一个独立的软件环境,用来打包软件运行环境和基于运行环境开发的软件它包含运行某个软件的所有内容,包括代码,运行时,库,环境变量和配置文件。
- 一个镜像可以创建N个容器
- 一种标准化的交付
- 一个不包含linux内核而又精简的linux操作系统
注释:镜像不是一个单一的文件,而有多层构成。可以通过docker history <ID/NAME> 来查看镜像中个层的内容及大小,每一层对应Dockerfile中的一条指令。Docker镜像默认存储路径:/var/lib/docker/\<storage-driver\>中。
2、镜像的来源?
- Docker官方有公有的镜像仓库:Docker Hub, Docker Hub是由Docker公司负责维护的公共注册中心,包含大量的容器镜像,Docker工具默认从这个公共镜像库下载镜像。
- 地址:https://hub.docker.com/search?q=&type=image
- 命令:docker search centos

3、配置镜像加速器
- https://www.daocloud.io/mirror
- linux
- curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
- 该脚本可以将 --registry-mirror 加入到你的 Docker 配置文件 /etc/docker/daemon.json 中。
适用于Ubuntu14.04、Debian、CentOS6 、CentOS7、Fedora、Arch Linux、openSUSE Leap 42.1,
其他版本可能有细微不同。更多详情请访问文档。
- macOS
- Docker For Mac
- 右键点击桌面顶栏的 docker 图标,选择 Preferences ,在 Daemon 标签(Docker 17.03 之前版本为
Advanced 标签)下的 Registry mirrors 列表中加入下面的镜像地址:http://f1361db2.m.daocloud.io,
点击 Apply & Restart 按钮使设置生效。
- Windows
- 在桌面右下角状态栏中右键 docker 图标,修改在 Docker Daemon 标签页中的 json ,把下面的地址:
http://f1361db2.m.daocloud.io 加到" registry-mirrors"的数组里。点击 Apply 。
- 手动配置加速器
适用于各种 Linux 发行版
- Docker 版本在 1.12 或更高,创建或修改 /etc/docker/daemon.json 文件,修改为如下形式 (请将 加速地址 替换为在加速器页面获取的专属地址)
{
"registry-mirrors": [
"加速地址"
],
"insecure-registries": []
}
- Docker 版本在 1.8 与 1.11 之间
您可以找到 Docker 配置文件,不同的 Linux 发行版的配置路径不同,具体路径请参考 Docker官方文档,在配置文件中的 DOCKER_OPTS 加入:--registry-mirror=加速地址
重启Docker,不同的 Linux 发行版的重启命令不一定相同,一般为:service docker restart
4、镜像 与 容器关系
- 容器和镜像的关系

- 容器与镜像的底层关系

- 说明:
容器是再镜像的最上面加一层读写层,在运行容器里文件改动时会先从镜像里要写的文件复制到容器自己的文件系统
中(读写层);如果容器删除了,最上面的读写层也就删除了,改动也就丢失了。所以无论多少个容器共享的镜像,
所做的写操作都是从镜像的文件系统中复制过来操作的,并不会修改镜像的源文件,这种方式提高磁盘利用率。若想
持久化这些改动,可以通过docker commit将容器保存成一个新的镜像。
5、常用管理镜像命令
| 指令 | 描述 | 实例 |
|---|
| ls | 列出镜像 | docker image ls |
| build | 构建镜像来自Dockerfile | |
| history | 查看镜像历史 | docker image history nginx / docker history nginx |
| inspect | 显示一个或多个镜像的详细信息 | docker image inspect nginx / docker inspect nginx |
| pull | 从镜像仓库拉取镜像 | docker image pull nginx / docker pull nginx |
| push | 推送一个镜像到镜像仓库 | docker push nginx_141 |
| rm | 移除一个或多个镜像 | docker image rm nginx |
| rmi | 移除一个或多个镜像 | docker rmi [镜像名] |
| prune | 移除未使用的镜像。没有被标记或被任何容器引用的。 | docker image prune |
| tag | 创建一个引用源镜像标记目标镜像 | docker image tag 605c77e624dd nginx_141 |
| save | 保存一个或多个镜像到一个tar归档文件 | docker save centos -o centos7.tar |
| load | 加载镜像来自tar归档或标准输入 | docker load -i centos7.tar |