Docker 基础 : 镜像

前端之家收集整理的这篇文章主要介绍了Docker 基础 : 镜像前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

目录

镜像是 Docker 的三大核心概念之一。Docker 运行容器前需要本地存在对应的镜像,如果本地没有对应的镜像,Docker 会尝试从默认的镜像仓库下载。当然用户也可以通过配置,使用自定义的镜像仓库。本文将介绍镜像的具体操作,包括使用 pull 命令从 Docker Hub 的镜像仓库中拉取(下载)公共镜像;查看本地已有的镜像信息;使用 search 命令搜索镜像;删除镜像标签和镜像文件;创建用户自定义镜像并上传到 Docker Hub 镜像仓库。docker image 子命令中,虽然不带 image 的格式依然被兼容,但带上 image 后会让命令更容易理解,也会有更好的自动补全效果

获取镜像

$ docker image pull ubuntu

$ docker image pull registry.hub.docker.com/ubuntu:latest

$ docker image pull registry.docker-cn.com/library/ubuntu:latest

$ docker run -- ubuntu hello docker

docker image ls(或 docker images) 命令可以列出本地存储的镜像:

$ docker image

输出的信息中包含的内容有:REPOSITORY:说明镜像来自哪个仓库,比如 ubuntu 或 registry.docker-cn.com/library/ubuntu。TAG:镜像的标签信息,比如 14.04 或 latest。IMAGE ID:标识镜像的 ID 号。CREATED:创建镜像的时间。SIZE:镜像大小。标记来自同一个仓库(比如 ubuntu)的不同镜像。例如 ubuntu 仓库中有多个镜像,可以通过 TAG 信息来区分它们,TAG 13.04、14.04 和 16.04 都代表了不同的发行版本。

docker image tag 命令为本地的镜像添加新的标签还可以方便我们的使用,比如为 ubuntu:14.04 镜像添加下面的标签

$ docker image tag ubuntu: oldubuntu

输出中我们可以看到,它们引用的是同一个镜像 ID:

添加的新标签就像给镜像取了个别名一样。

docker image inspect 命令可以获取镜像的详细信息,比如查看 ubuntu:latest 镜像的信息:

$ docker image inspect ubuntu:latest

输出很长,上图只是截取了一小部分的信息。它输出的是一个 JSON 格式的信息,一般情况下我们会有的放矢的通过 -f 选项取其中的某一部分。比如只获取镜像的 Architecture 信息:

$ docker image inspect -f {{}} ubuntu:latest

搜索镜像

docker search 命令以命令行的方式进行搜索,比如搜索 mysql 镜像:

$ docker search mysql

docker image rm 命令进行删除,以释放镜像占用的磁盘空间。我们可以为 docker image rm 命令传递镜像的标签或 ID,这两种方式略微有些区别,下面我们将分别介绍。

标签删除镜像删除标签MysqL:5.6 的镜像:

$ docker image MysqL:

内容一下就被删除了(很多镜像层被删除掉),再来删除 ubuntu:14.04 试试:

$ docker image ubuntu:

删除了一点点东西?再去看看进行列表,oldubuntu 还在,并且引用着 ID 为 3b853789146f 的镜像:

标签引用的镜像 ID,删除标签时只是把那个标签删掉了,并会真正删除镜像文件。现在再删除一次 oldubuntu 试试:

标签,所以删除标签会同时删除该镜像的所有文件

删除镜像标签引用着它,分别是 ubuntu:latest 和 newubuntu:

删除它:

$ docker image c9d990395902

删除操作。同样如果由其它的镜像引用了该 ID 的镜像, docker 同样会报错并终止删除操作。所以,只有当一个镜像不被多个标签引用,也没其它镜像引用它时,才可以被通过镜像 ID 删除

》一文中介绍过通过 docker build 命令利用 Dockerfile 文件创建镜像,所以这里只介绍如何通过 docker container commit 命令基于已有容器创建镜像。文件:

$ docker run -it ubuntu:latest bash

文件创建后退出容器,但要记住该容器的 ID 为:7e26732e14e6。然后执行下面的命令创建镜像:

$ docker container commit -m 7e26732e14e6 nickimage

名称为 nickimage 的镜像:

$ docker run -- nickimage

文件 nickfile 已经被成功的添加到 nickimage 镜像中了。

docker image save 命令可以把镜像导出为本地文件,比如导出 ubuntu:latest 镜像为 ubuntu1604.tar:

$ docker image save -o ubuntu1604. ubuntu:latest

$ -czf ubuntu1604..gz ubuntu1604.

$ -xf ubuntu1604..gz

docker image load 命令执行镜像的导入操作:

$ docker image load -i ubuntu1604.

docker image push 命令把镜像上传到镜像仓库服务器,默认是上传到 Docker Hub 的镜像仓库,此时事先需要注册用户并进行登录上传镜像的命令格式为:注册了账号 ljfpower,并通过 docker login 命令完成了登录操作(需要输入用户名和密码进行验证)。接下来就可把本地的镜像上传到镜像仓库服务器了。在上传前需要给镜像打上合法的标签(用户账号/仓库名称:TAG),比如:

$ docker image tag azcli: ljfpower/azcli:latest

上传这个标签就行了:

$ docker image push ljfpower/azcli:latest

上传后你就可以在 Docker Hub 上看到这个镜像了:

包括获取、查看、搜索、创建、删除、导出、导入等。希望对大家了解、学习 docker 有所帮助。

猜你在找的Docker相关文章