Docker的镜像常用操作笔记

查找镜像

通过 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收费服务。

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注