Docker实战系列【镜像images详解】
镜像
Docker 把应用程序及其依赖,打包在 image 文件里面。只有通过这个文件,才能生成 Docker 容器。image 文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例。
image 是二进制文件。实际开发中,一个 image 文件往往通过继承另一个 image 文件,加上一些个性化设置而生成。举例来说,你可以在 Ubuntu 的 image 基础上,往里面加入 Apache 服务器,形成你的 image。
镜像和容器
上图从顶层设计层面展示了镜像和容器间的关系。通常使用docker container run和docker service create命令从某个镜像启动一个或多个容器。
一旦容器从镜像启动后,二者之间就变成了互相依赖的关系,并且在镜像上启动的容器全部停止之前,镜像是无法被删除的。尝试删除镜像而不停止或销毁使用它的容器,会导致出错。
当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。
官方,非官方镜像仓库和本地仓库
Docker Hub 也分为官方仓库(Official Repository)和非官方仓库(Unofficial Repository),本地仓库。
镜像的操作
Docker 是服务器----客户端架构。命令行运行docker命令的时候,需要本机有 Docker 服务。如果这项服务没有启动,可以用下面的命令启动。
# service 命令的用法
$ sudo service docker start
# systemctl 命令的用法
$ sudo systemctl start docker
搜索镜像: docker search [image_name]
我们也可以使用 docker search 命令 以CLI 的方式搜索 Docker Hub里的镜像。比如我们需要一个 python 的镜像。我们可以通过 docker search 命令搜索 python来寻找适合我们的镜像。
获取镜像:docker pull [image_name]
当我们在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像。如果我们想预先下载这个镜像,我们可以使用 docker pull 命令来下载它。
列出镜像:docker images <image_name>
各个选项说明:
- REPOSITORY:表示镜像的仓库源
- TAG:镜像的标签
- IMAGE ID:镜像ID
- CREATED:镜像创建时间
- SIZE:镜像大小
同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如 ubuntu 仓库源里,有 15.10、14.04 等多个不同的版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。
镜像历史 docker history [image_name]
查看镜像的修改历史
所有的 Docker 镜像都起始于一个基础镜像层,当进行修改或增加新的内容时,就会在当前镜像层之上,创建新的镜像层。
举一个简单的例子,假如基于 Ubuntu Linux 16.04 创建一个新的镜像,这就是新镜像的第一层;如果在该镜像中添加 Python 包,就会在基础镜像层之上创建第二个镜像层;如果继续添加一个安全补丁,就会创建第三个镜像层。
镜像标签 docker tag [image_name]
为镜像添加一个新的标签,可以理解为一个新版本
删除镜像 docker rmi [image_id/image_name:image_version]
删除操作会在当前主机上删除该镜像以及相关的镜像层,如果某个镜像层被多个镜像共享,那只有当全部依赖该镜像层的镜像都被删除后,该镜像层才会被删除。
镜像导出 docker save -o [包文件] [image_name]
将本地镜像导出为一个压缩包
镜像导入 docker load <image.tar_name>
将压缩包作为镜像导入
构建镜像 docker build
我们使用命令 docker build , 从零开始来创建一个新的镜像。为Dockerfile 文件配合使用
- 点赞
- 收藏
- 关注作者
评论(0)