docker pull的时候,如果没有明确指定镜像仓库,就会使用默认的“Docker Hub”(https://hub.docker.com/),是docker公司官方搭建的服务。
【如何在Docker Hub上挑选镜像】
docker hub上有三类镜像,根据下载量、星数、更新历史来挑选比较稳妥:
1、官方镜像(official image):docker公司提供;
2、认证镜像(verified publisher):各大公司提供,如ubuntu等;
3、非官方镜像:又分为半官方(是大公司提供,但没有给docker公司交钱,没有正式认证)和纯民间(个人上传的)。
【Docker Hub命名规范】
1、形式为“用户名/应用名”,如ubuntu/nginx,所以使用docker pull的时候,命令为:docker pull ubuntu/nginx;
2、增加标签,不写为latest,但这样版本不好管理。版本号应为:主版本号+次版本号+补丁号,举例:
- nginx:1.21.6-alpine,表示版本号是 1.21.6,基础镜像是最新的 Alpine;
- redis:7.0-rc-bullseye,表示版本号是 7.0 候选版,基础镜像是 Debian 11;
- node:17-buster-slim,表示版本号是 17,基础镜像是精简的 Debian 10,如果是fat,就是有较多辅助工具的,镜像会比较大。
【如何往Docker Hub上传镜像】
1、docker hub上注册用户;
2、本机使用docker login -u 用户名,用刚刚注册的用户名,密码进行身份登录;
3、用docker tag,吧镜像改成带用户名的完整名字,如:docker tag ngx-app chronolaw/ngx-app:1.0;
4、使用docker push把这个镜像推上去,完成。如:docker push chronolaw/ngx-app:1.0
【离线环境如何使用Docker Hub】
可以在内网环境创建一个私有registry服务,来管理我们的镜像。自建registry有很多成熟的方案,如docker registry。docker提供了save和load两个镜像归档命令,可以把镜像导出成压缩包,也可以从压缩包导入docker。命令如下:
- docker save ngx-app:latest -o ngx.tar
- docker load -i ngx.tar