docker获取镜像的命令是pull,命令格式为:nginx
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
具体的选项能够经过 docker pull --help 命令看到,这里咱们说一下镜像名称的格式。redis
示例:docker
docker pull ubuntu:16.04
有了镜像后,咱们就可以以这个镜像为基础启动并运行一个容器。以上面的 ubuntu:16.04 为例,若是咱们打算启动里面的 bash 而且进行交互式操做的话,能够执行下面的命令。ubuntu
$ docker run -it --rm \ ubuntu:16.04 \ bash 说明:
docker run 就是运行容器的命令,后面再细讲。centos
能够经过 docker search
命令来查找官方仓库中的镜像bash
docker search centos NAME DESCRIPTION STARS OFFICIAL AUTOMATED centos The official build of CentOS. 465 [OK] tianon/centos CentOS 5 and 6, created using rinse instea... 28
能够经过 docker push
命令来将本身的镜像推送到 Docker Hub。ui
$ docker tag ubuntu:17.10 USERNAME/ubuntu:17.10 $ docker push USERNAME/ubuntu:17.10
可使用docker image ls
列出镜像。code
$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE redis latest 5f515359c7f8 5 days ago 183 MB nginx latest 05a60462f8ba 5 days ago 181 MB
列表包含了 仓库名、标签、镜像 ID、建立时间 以及 所占用的空间。orm
docker image ls
显示的是镜像下载到本地后,展开的大小,准确说,是展开后的各层所占空间的总和docker image ls
列表中的镜像体积总和并不是是全部镜像实际硬盘消耗。因为 Docker 镜像是多层存储结构,而且能够继承、复用,所以不一样镜像可能会由于使用相同的基础镜像,从而拥有共同的层。因为 Docker 使用 Union FS,相同的层只须要保存一份便可,所以实际镜像硬盘占用空间极可能要比这个列表镜像大小的总和要小的多。可使用docker system df
来便捷的查看镜像、容器、数据卷所占用的空间。继承
$ docker system df TYPE TOTAL ACTIVE SIZE RECLAIMABLE Images 24 0 1.992GB 1.992GB (100%) Containers 1 0 62.82MB 62.82MB (100%) Local Volumes 9 0 652.2MB 652.2MB (100%) Build Cache 0B 0B
在镜像列表中,还能够看到一个特殊的镜像,这个镜像既没有仓库名,也没有标签,均为 <none>。:
<none> <none> 00285df0df87 5 days ago 342 MB
$ docker image ls -f dangling=true REPOSITORY TAG IMAGE ID CREATED SIZE <none> <none> 00285df0df87 5 days ago 342 MB
通常来讲,虚悬镜像已经失去了存在的价值,是能够随意删除的,能够用下面的命令删除。
$ docker image prune
为了加速镜像构建、重复利用资源,Docker 会利用 中间层镜像。docker image ls 列表中只会显示顶层镜像,若是但愿显示包括中间层镜像在内的全部镜像的话,须要加 -a 参数。
$ docker image ls -a
不加任何参数的状况下,docker image ls
会列出全部顶级镜像,可是有时候咱们只但愿列出部分镜像。docker image ls
有好几个参数能够帮助作到这个事情。
$ docker image ls ubuntu REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu 16.04 f753707788c5 4 weeks ago 127 MB ubuntu latest f753707788c5 4 weeks ago 127 MB
$ docker image ls ubuntu:16.04 REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu 16.04 f753707788c5 4 weeks ago 127 MB
除此之外,docker image ls
还支持强大的过滤器参数 --filter,或者简写 -f。以前咱们已经看到了使用过滤器来列出虚悬镜像的用法,它还有更多的用法。好比,咱们但愿看到在 mongo:3.2 以后创建的镜像,能够用下面的命令:
$ docker image ls -f since=mongo:3.2 REPOSITORY TAG IMAGE ID CREATED SIZE redis latest 5f515359c7f8 5 days ago 183 MB nginx latest 05a60462f8ba 5 days ago 181 MB
想查看某个位置以前的镜像也能够,只须要把 since 换成 before 便可。
此外,若是镜像构建时,定义了 LABEL,还能够经过 LABEL 来过滤。
$ docker image ls -f label=com.example.version=0.1
默认状况下,docker image ls 会输出一个完整的表格,可使用-q参数仅列出镜像id:
$ docker image ls -q 5f515359c7f8 05a60462f8ba
另一些时候,咱们可能只是对表格的结构不满意,但愿本身组织列;或者不但愿有标题,这样方便其它程序解析结果等,这就用到了 Go 的模板语法。
示例1:列出镜像结果,而且只包含镜像ID和仓库名
$ docker image ls --format "{{.ID}}: {{.Repository}}" 5f515359c7f8: redis 05a60462f8ba: nginx
示例2:以表格等距显示,而且有标题行,自定义列:
$ docker image ls --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}" IMAGE ID REPOSITORY TAG 5f515359c7f8 redis latest 05a60462f8ba nginx latest
若是要删除本地的镜像,可使用 docker image rm
命令,其格式为:
$ docker image rm [选项] <镜像1> [<镜像2> ...]
其中,<镜像> 能够是 镜像短 ID、镜像长 ID、镜像名 或者 镜像摘要。
也能够用镜像名,也就是 <仓库名>:<标签>,来删除镜像。
像其它能够承接多个实体的命令同样,可使用 docker image ls -q
来配合使用 docker image rm
,这样能够成批的删除但愿删除的镜像。
好比,咱们须要删除全部仓库名为 redis 的镜像:
$ docker image rm $(docker image ls -q redis)