共计 2346 个字符,预计需要花费 6 分钟才能阅读完成。
导读 | 作为 Docker 三大核心概念之一,Docker 镜像(Docker Image)是一个面向 Docker 引擎的只读模板,包含文件系统。实际上每个 Docker 镜像包含一个独立的运行环境,如一个镜像包含 centos 操作系统环境,我们称之为一个 centos 镜像。 |
Docker 运行一个容器实例之前,可以以一个镜像为基础环境,如以一个包含 centos 操作系统的 Docker 镜像为模板。建立容器之前,Docker 会检查本地是否存在对应的镜像,如果镜像不存在本地,Docker 会尝试从默认的镜像仓库(Repository,通常默认为 Docker Hub 公共注册服务器中的仓库,用户可以根据具体环境和需求配置自定义镜像仓库)。
下面将介绍关于镜像的相关操作及命令。
docker images命令可以查看本地主机已有的镜像列表,具体查询属性包括来源仓库,标签,ID,创建时间和镜像大小等。
dpcler inspect ID可以获取镜像 的详细信息,执行后得到一个 JSON 格式的消息,如果仅仅需要查询镜像的某一项信息,可以使用 -f 参数来指定。例如,获取镜像的 Author 信息:
$sudo docker inspect -f {{".Author"}} [IMAGE_ID]
docker tag可以给镜像指定自定义(一般情况下用于语义化)的标签,实际上就是给某个镜像添加一个“快捷方式”。
docker search命令可以搜索远程镜像仓库内公共共享和私有的镜像,默认为 Docker Hub 官方镜像仓库,用法为docker search TERM.
通过搜索命令可以查询到镜像的名字、描述、star 数量、是否官方创建、是否自动创建等信息。
docker pull命令可以从网络上下载镜像到本地。命令格式为docker pull NAME[:TAG](如果不显式地指定 TAG,默认会选择 lastest 标签)。
当然,如果需要从非默认的镜像仓库下载镜像,也可以通过 docker pull URL 进行镜像的下载。当然,前提这个 URL 指向的是有效的远程镜像。
docker rmi命令用于删除本地的镜像,用法为docker rmi IMAGE[IMAGES…],其中 IMAGE 可以为标签或镜像 ID。前面我们提及到标签事实上是“快捷方式”,因此通过标签删除镜像时,会先删除这个“快捷方式”,当某个镜像只剩下一个标签时,通过删除该标签才会把镜像从本地移除掉。
如果你的镜像还有正在运行中的容器实例的话,通过 docker rmi 是无法移除掉的,当然,你可以通过 -f 参数强制删除某个镜像,但这往往是不安全的。正确的做法是通过 docker rm CONTAINER 移除对应的容器,再通过 docker rmi 进行镜像的删除。
一般情况下,我们可以通过三种途径进行 Docker 镜像的创建:基于已有镜像的容器的创建,本地模板导入、Dockerfile 创建。
该方法主要依赖于 docker commit 命令,用法为docker commit [OPTIONS] [RESPOSITORY[:TAG]],主要选项包括:
参数 | option | 说明 |
---|---|---|
-a | –author=”” | 作者信息 |
-m | –message=”” | 提交信息 |
-p | –pause=true | 提交时暂停容器运行 |
通过 docker ps 命令获取需要创建镜像的容器 ID,通过执行:
$sudo docker commit -m "[MESSAGE]" -a "[AUTHOR]" [CONTAINER_ID] [IMAGE_NAME]
docker import可以从一个 打包好的镜像文件创建镜像,一般情况下表现为.tar.gz 压缩包。例如,导入一个 ubuntu 操作系统的镜像到本地:
$sudo cat ubuntu-15.04-x86_64.tar.gz | docker import - ubuntu:15.04
Dockerfile 是一个文本格式的配置文件,实际表现为命令集合,用户通过自定义批处理命令来快速创建自定义镜像。Dockerfile 通常包含四部分:基础镜像信息,维护者信息,镜像操作指令和容器启动时指令。编辑完 Dockerfile 文件后,通过 docker build 命令创建镜像,例如:
$sudo docker build -t [TAG_NAME] [DOCKERFILE_PATH]
$sudo docker save -o ubuntu-15.04-x86_64.tar ubuntu:15.04
$sudo docker load --input ubuntu-15.04-x86_64.tar
# 或者
$sudo docker load < ubuntu-15.04-x86_64.tar
docker push命令可以将镜像上传到远程仓库(默认为 DockerHub 官方仓库,需要注册账号)。用法为:docker push NAME[:TAG], 强烈建议添加好语义化的标签名后上传。
镜像是开启 Docker 容器的前提,掌握镜像的概念以及对应的查看、获取、搜索、删除、创建、导入导出、上传等操作对于 Docker 的入门学习有莫大的帮助。我们还可以借助 Docker Hub 等镜像仓库还提供的更全面的镜像服务进行学习和使用,例如 web 查询系统 (http://index.docker.io/) 等,同时我们也可以将日常使用的高质量的镜像资源分享到开源社区共同学习。
本文原创地址:https://www.linuxprobe.com/docker-leaning-image.html作者:杨鹏飞,审核员:岳永
![post-qrcode](https://www.xgss.net/wp-content/uploads/2023/07/二维码-微信公众号256x256.jpg)