物欲横流,南浔一方净土。静心习字,方悟百态人生。
镜像是 Docker 三大核心概念中最重要的,自Docker诞生之日起镜像就是相关社区最为热门的关键词。
Docker 运行容器前需要本地存在对应的镜像, 如果镜像不存在,Docker会尝试先从默认镜像仓库下载(默认使用 Docker Hub 公共注册服务器中的仓库),用户也可以通过配置,使用自定义的镜像仓库。
可以使用 docker [image] pull
命令直接从 Docker Hub 镜像源来下载镜像。该命令的格式为 docker [image] pull NAME [ :TAG]
。
其中, NAME 是镜像仓库名称(用来区分镜像),TAG是镜像的标签(往往用来表示版本信息) 。通常情况下,描述 个镜像需要包括 名称+标签
。
例如, 获取一个 Ubuntu 18.04 系统的基础镜像可以使用如下的命令:
$ docker pull ubuntu: 18. 04
对于Docker镜像来说, 如果不显式指定TAG, 则默认会选择latest标签,这会下载仓库中最新版本的镜像。
$ docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubun七U
...
Digest:sha256:e27e9d7f7f28d67aa9e2d7540bdc2b33254b452ee8e60f388875e5b7d9b2b696
Status: Downloaded newer image for ubun七u:latest
该命令实际上下载的就是 ubuntu:latest镜像。
镜像文件一般由若干层(layer)组成
,6c953ac5d795这样的串是层的唯一id(实际上完整的id包括256比特,64个十六进制字符组成)。使用docker pull
命令下载中会获取并输出镜像的各层信息。当不同的镜像包括相同的层时,本地仅存储了层的一份内容,减小了存储空间。
使用images命令列出镜像
$ docker images
我的电脑上没有镜像。镜像信息包括,仓库
,标签
,镜像ID
,创建时间
,镜像大小
。
docker images
可以跟子命令。-a
表示列出所有镜像。--digests==true|false
表示列出镜像的数字摘要等等。
添加镜像标签
为了方便在后续工作中使用特定镜像,还可以使用docker tag命令来为本地镜像任 意添加新的标签。例如,添加一 个新的myubuntu: latest镜 像标签:
$ docker tag ubuntu:latest myubuntu:latest
查看详细信息
使用docker [image] inspect
命令可以获取该镜像的详细信息,包括制作者 、 适应架构、各层的数字摘要等:
$ docker [image] inspect ubuntu:18.04
[
{
"Id": "sha256:452a96d81c30ale426bc250428263ac9ca3f47c9bf086f876dllcb39cf57aeec",
" RepoTags": [
"ubuntu: 18.04",
"ubuntu:la七est"
],
...
}
]
查看镜像历史
既然镜像文件由多个层组成, 那么怎么知道各个层的内容具体是什么呢?这时候可以使用hisotry
子命令,该命令将列出各层的创建信息。
$ docker history ubuntu: 18. 04
使用 docker search
命令可以搜索 Docker Hub 官方仓库中的镜像。语法为 docker search [option] keyword
。支持的命令选项主要包括:-f
filter过虑。-format
格式化输出内容。-limit
限制输出个数。-no-trunc
不截断输出结果。
使用 docker rmi
或 docker image rm
命令可以删除镜像,命令格式为 docker rmi IMAGE [IMAGE ... ]
,其中 IMAGE 可以为标签或 ID。
创建镜像的方法主要有三种:基于已有镜像的容器创建、 基于本地模板导入、 基于Dockerfile创建。
基于已有镜像的容器创建
该方法主要是使用 docker [container] commit
命令。-a
作者信息。-c
提交时执行Dockerfile指令,-p
提交时暂停容器运行。-m
提交信息。
首先, 启动一个镜像, 并在其中进行修改操作。例如,创建一个test文件,之后退出, 代码如下:
$ docker run -it ubuntu:18.04 /bin/bash
root@a925cb40b3f0:/# touch test
root@a925cb40b3f0:/# exit
容器的 ID 为 a925cb40b3£0 。
此时该容器与原 ubuntu:18.04 镜像相比, 已经发生了改变, 可以使用 docker [container] commit
命令来提交为一个新的镜像。提交时可以使用 ID 或名称来指定容器:
$ docker [container] commit -m "Added a new file" -a "Docker Newbee" a925cb40b3f0 test:0.1
基于本地模板导入
基于 Dockerfile 创建是最常见的方式。Dockerfile 是一个文本文件, 利用给定的指令描 述基于某个父镜像创建新镜像的过程。
FROM nginx:alpine
COPY www /usr/share/nginx/html
可以使用 docker [image] push
命令上传镜像到仓库, 默认上传到 Docker Hub 官方仓库(需要登录)。命令格式为 docker [image] push NAMEE [:TAG] [REGISTRY_HOST [ :REGISTRY_PORT] / ]NAME [:TAG ]
。
第一次上传时, 会提示输入登录信息或进行注册, 之后登录信息会记录到本地~/.docker
目录下。
镜像是使用 Docker 的前提,也是最基本的资源 。所以,在平时的Docker使用中, 要注意积累自己定制的镜像文件,并将自己创建的高质量镜像分享到社区中 。
javascript基础知识总结
本文分享自 JavaScript高级程序设计 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!