Docker实战系列镜像images详解】

网友投稿 815 2022-05-30

镜像

docker 把应用程序及其依赖,打包在 image 文件里面。只有通过这个文件,才能生成 Docker 容器。image 文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例。

image 是二进制文件。实际开发中,一个 image 文件往往通过继承另一个 image 文件,加上一些个性化设置而生成。举例来说,你可以在 Ubuntu 的 image 基础上,往里面加入 Apache 服务器,形成你的 image。

镜像和容器

上图从顶层设计层面展示了镜像和容器间的关系。通常使用docker container run和docker service create命令从某个镜像启动一个或多个容器。

一旦容器从镜像启动后,二者之间就变成了互相依赖的关系,并且在镜像上启动的容器全部停止之前,镜像是无法被删除的。尝试删除镜像而不停止或销毁使用它的容器,会导致出错。

Docker实战系列【镜像images详解】

当运行容器时,使用的镜像如果在本地中不存在,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 

各个选项说明:

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

将压缩包作为镜像导入

构建镜像 docker build

我们使用命令 docker build , 从零开始来创建一个新的镜像。为Dockerfile 文件配合使用

Docker 镜像服务

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SQL入门之概念篇--00
下一篇:Node.js 子进程(exec、spawn、fork)
相关文章