作者: 耗子007
所有命令均基于docker1.11版本
镜像相关的命令主要包括三类:
- 镜像registry相关命令
- 镜像构建相关命令
- 镜像操作相关命令
镜像registry操作
在使用docker的过程中,可能需要从镜像registry获取镜像,或者把自己构建的镜像保存到registry。
包括下面几个命令:
1 | login Log in to a Docker registry |
login和logout
这两个命令主要是用于登录和退出Docker registry的,比较简单,这里只给出基本用法。
- login命令
1 | Usage: docker login [OPTIONS] [SERVER] |
如果没有指定服务器地址,默认服务器地址为:https://index.docker.io/v1/。服务器地址可以是自己搭建的本地仓库。
- logout命令
1 | Usage: docker logout [SERVER] |
pull、push和search
- pull命令:用于从registry下拉镜像或者
1 | Usage: docker pull [OPTIONS] NAME[:TAG] | [REGISTRY_HOST[:REGISTRY_PORT]/]NAME[:TAG] |
注:如果是在内网,需要配置代理,可以参考上篇文章。
用pull下载单个镜像
1 | #获取默认debian:latest |
上面的pull镜像的方式,可以保证你获取的镜像永远是最新的版本的。但是,如果你想获取某个特定版本的,可以通过digest的方式获取。
1 | $ docker pull ubuntu:14.04 |
上面的镜像会包含一个Digest信息:sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2
为了获取固定版本的镜像,可以通过下面的方式:
1 | docker pull ubuntu@sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2 |
从其他registry获取镜像或者仓库
1 | docker pull myregistry.local:5000/testing/test-image |
注:
- docker pull默认从Docker hub上面下拉镜像。
- myregistry是否是支持insecure方式,如果不支持可能需要一些配置才能pull成功
获取一个仓库的所有镜像
1 | $ docker pull --all-tags fedora |
- push命令:往registry推送镜像或者仓库
1 | Usage: docker push [OPTIONS] NAME[:TAG] |
注:
- 默认推送到Docker hub,可以推送的自己构建的registry。
- –disable-content-trust=true可以跳过镜像签名
- search命令:在Docker hub搜索镜像
1 | Usage: docker search [OPTIONS] TERM |
注意:search的说明是在Docker hub上搜索,其实也可以用来搜索自己搭建的registry,但是,如果用registry容器镜像搭建的registry是没有打开search模块的。
因此,search功能在这样的registry上面是不能工作的。
通过镜像名搜索
1 | $ docker search ubuntu |
通过镜像名和stars次数搜索
1 | $ docker search --stars=3 busybox |
这里stars表示该镜像在Docker Hub上被人关注的次数。
查询自动构建的镜像
1 | $ docker search --stars=3 --automated busybox |
automated感觉用来标识非官方镜像
查询未截断描述的镜像
1 | $ docker search --stars=3 --no-trunc busybox |
tag
tag命令用于修改镜像的仓库名和tag
1 | Usage: docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG] |
注:如果需要把镜像push到一个自定的registry,首先需要就是tag镜像到该registry的一个仓库(参考文章:搭建本地的Docker registry)。