概念
镜像是容器运行的基石。镜像是一个包含程序运行必要依赖环境和代码的只读文件,它采用分层的文件系统,将每一次改变以读写层的形式增加到原来的只读文件上。
镜像的本质是磁盘上一系列文件的集合。不难理解,创建新的镜像其实也就是对已有镜像文件进行增、删、改操作。镜像之间并不是孤立的,而是存在单向的文件依赖关系。
相关命令
# 查看本机所有镜像
$ docker images
- REPOSITORY:仓库名称.
- TAG:用于区分同一仓库中的不同镜像。如果未指定,默认为latest。
- IMAGE ID:每个镜像都有一个字符串类型、长为64位的HashID,用来全网标识一个镜像。
- CREATED:镜像的创建时间。
- VIRTUAL SIZE:镜像所占用的虚拟大小,该大小包含了所有共享文件的大小。
# 通过通配符找出一系列符合条件的镜像
$ docker images ub*
# 搜索符合要求的镜像
$ docker search wordpress
- NAME:镜像的名称。由命名空间和仓库名构成,如果没有命名空间,说明该镜像属于Docker Hub的官方镜像。
- DESCRIPTION:镜像的简要描述,创建者可以登录Docker Hub修改该项。
- STARS:用户对镜像的评分。评分越高,说明质量越高。
- OFFICIAL:是否为官方镜像。一般情况下,官方镜像更可靠、更稳定。
- AUTOMATED:是否使用了自动构建,这将在3.4.3节中介绍。
# 预先拉取指定的镜像
$ docker pull ubuntu
# 删除不再需要的镜像(可以是名称或id,多个用使用空格隔开)
$ docker rmi c20fd090cbb6
# 强制删除被依赖的镜像(或者先将依赖它的镜像和容器移除)
$ docker rmi -f c20fd090cbb6
# 一次性删除所有容器
$ docker rm $(docker ps -a -q)
# 创建本地镜像(使用commit命令将容器里的所有修改提交到本地库中,形成一个全新的镜像)
$ docker commit -m="Message" --author="XIXIHE" 0ddf83b837fe xixihe/sqlite3:v1
# 使用 Dockerfile 创建镜像
使用docker run命令运行一个镜像时,Docker首先会在本机寻找该镜像,如果本机不存在,会继续去Docker Hub上面搜索符合条件的镜像并将其下载下来运行。为了在运行镜像时不用再费时等待下载镜像,可以通过pull命令预先将镜像拉回到本地。镜像名必须完整地包含命名空间和仓库名。如果一个仓库中存在多个镜像,还必须指定TAG,否则使用默认的TAG——latest。
我们更推荐使用Dockerfile来构建镜像。将需要对镜像进行的操作全部写到一个文件中,然后使用docker build 命令从这个文件中创建镜像。这种方法可以使镜像的创建变得透明和独立化,并且创建过程可以被重复执行。Dockerfile文件以行为单位,行首为Dockerfile命令,命令都是大写形式,其后紧跟着的是命令的参数。
网友评论