查找镜像
通过 docker search
命令来查找官方仓库(Docker Hub)中的镜像。
例如:docker search centos
但此命令无法获得镜像的tag,我们通过定义shell脚本来实现,如下:
新建脚本文件: dockerSearchTag.sh,编辑:
#!/bin/bash # Returns the tags for a given docker image. # Based on http://stackoverflow.com/a/32622147/ print_help_and_exit() { name=`basename "$0"` echo "Usage:" echo " ${name} alpine" echo " ${name} phusion/baseimage" exit } repo="$1" [ "$#" != 1 ] && print_help_and_exit [ "$" = "-h" ] && print_help_and_exit [ "$" = "-help" ] && print_help_and_exit [ "$" = "--help" ] && print_help_and_exit if [[ "${repo}" != */* ]]; then repo="library/${repo}" fi # v2 API does not list all tags at once, it seems to use some kind of pagination. #url="https://registry.hub.docker.com/v2/repositories/${repo}/tags/" ##echo "${url}" #curl -s -S "${url}" | jq '."results"[]["name"]' | sort # v1 API lists everything in a single request. url="https://registry.hub.docker.com/v1/repositories/${repo}/tags" #echo "${url}" curl -s -S "${url}" | jq '.[]["name"]' | sed 's/^"\(.*\)"$/\1/' | sort
授予脚本执行权限:chmod 744 dockerSearchTag.sh
例如执行./dockerSearchTag.sh centos
即可得到centos的所有tag。
(该脚本来源:https://github.com/denilsonsa/small_scripts/blob/master/docker_remote_tags.sh)
下载镜像
docker pull 镜像名
或docker pull 镜像名:tag
例如:docker pull ubuntu
下载指定架构版本的镜像,例如ARM版本的:docker pull --platform=linux/arm64 ubuntu
查看本地镜像
docker images
删除镜像
docker rmi 镜像名:tag
例如:docker rmi centos:latest
打包镜像
将指定容器打包为镜像,类似虚拟机快照。
语法:docker commit [OPTIONS] 容器ID/name [镜像名[:tag]]
OPTIONS说明:
- -a :提交的镜像作者
- -m :提交时的说明文字
- -p :在commit时,将容器暂停
例如将容器con_3打包: docker commit -a "mengmei.moe" -m "这是描述文字" con_3 mm_centos:v3
完成后,镜像名为mm_centos,tag是v3,不需要考虑原始镜像名和tag。
上传镜像
仓库(Repository)是集中存放镜像的地方,官方的Docker Hub提供无限的免费公共空间,注册一个账号即可。
登录和退出
docker login
遵循引导完成登录。
退出是:docker logout
推送自己的镜像
虽然我们刚才创建了mm_centos的本地镜像,但没法直接推送上去。需要按照官方规定的命名格式,即再增加Docker Hub的用户名前缀。
先mm_centos增加一个别名,执行:docker tag mm_centos:v3 username/mm_centos:v3
(将username改为你的用户名)
最后执行:docker push username/mm_centos:v3
我们可以在Docker Hub网站上看到自己上传的所有镜像。
下载自己的镜像也就是:docker pull username/mm_centos:v3
由于是公共空间,任何人都可以下载,因此请勿存放涉及隐私或商业侵权镜像。如需隐私存放,可以购买Docker Hub收费服务。