Docker 仓库操作
登录仓库
登录仓库使用 docker login
命令:docker login -u 用户名 -p 密码 服务器地址
。如果没有给出镜像仓库服务器的地址,会采用 Docker Daemon 中的默认值。
例如,不使用账号参数登录 Docker Hub:
[root@server4 ~]$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: assassing
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
仓库配置
由于从 Docker Hub 下载慢,可以配置镜像仓库:
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com",
"http://docker.mirrors.ustc.edu.cn",
"https://5ifniqg5.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://mirror.ccs.tencentyun.com"
],
自建的私有仓库一般不会设置 TLS,需要把仓库地址添加到信任列表:
"insecure-registries": [
"192.168.2.241:5000",
"192.168.2.234:5999"
],
一份镜像仓库列表(来源):
阿里云(杭州) https://registry.cn-hangzhou.aliyuncs.com
阿里云(上海) https://registry.cn-shanghai.aliyuncs.com
阿里云(青岛) https://registry.cn-qingdao.aliyuncs.com
阿里云(北京) https://registry.cn-beijing.aliyuncs.com
阿里云(张家口) https://registry.cn-zhangjiakou.aliyuncs.com
阿里云(呼和浩特) https://registry.cn-huhehaote.aliyuncs.com
阿里云(乌兰察布) https://registry.cn-wulanchabu.aliyuncs.com
阿里云(深圳) https://registry.cn-shenzhen.aliyuncs.com
阿里云(河源) https://registry.cn-heyuan.aliyuncs.com
阿里云(广州) https://registry.cn-guangzhou.aliyuncs.com
阿里云(成都) https://registry.cn-chengdu.aliyuncs.com
腾讯云 https://mirror.ccs.tencentyun.com
微软云 https://dockerhub.azk8s.com
网易 https://hub-mirror.c.163.com
上海交通大学 https://mirror.sjtu.edu.cn/docs/docker-registry
❤❤❤南京大学 https://docker.nju.edu.cn
道客 DaoCloud https://f1361db2.m.daocloud.io
阿里云(香港) https://registry.cn-hongkong.aliyuncs.com
阿里云(日本-东京) https://registry.ap-northeast-1.aliyuncs.com
阿里云(新加坡) https://registry.ap-southeast-1.aliyuncs.com
阿里云(澳大利亚-悉尼) https://registry.ap-southeast-2.aliyuncs.com
阿里云(马来西亚-吉隆坡) https://registry.ap-southeast-3.aliyuncs.com
阿里云(印度尼西亚-雅加达) https://registry.ap-southeast-5.aliyuncs.com
阿里云(印度-孟买) https://registry.ap-south-1.aliyuncs.com
阿里云(德国-法兰克福) https://registry.eu-central-1.aliyuncs.com
阿里云(英国-伦敦) https://registry.eu-west-1.aliyuncs.com
阿里云(美国西部-硅谷) https://registry.us-west-1.aliyuncs.com
阿里云(美国东部-弗吉尼亚) https://registry.us-east-1.aliyuncs.com
阿里云(阿联酋-迪拜) https://registry.me-east-1.aliyuncs.com
谷歌云 https://gcr.io
官方 https://registry.hub.docker.com
Docker Registry
可以通过官方提供的开源镜像分发工具 Docker Registry 来简单搭建一套本地私有仓库环境。
镜像存储模块与本地镜像存储相似,Registry 将镜像记录在清单文件中,并同时记录验证信息,形成镜像数据库。
创建仓库
创建镜像仓库时,需要把镜像存放目录挂载出来,例如挂载到 /var/docker_registry
目录下:
[root@server4 ~]$ docker run -d -p 5000:5000 -v /var/docker_registry:/var/lib/registry registry:2
可以通过浏览器访问 http://192.168.2.241:5000/v2/
来确认镜像已经正确启动。
修改配置
要想通过 HTTP 来使用本地私有仓库,需要修改启动配置文件 /etc/docker/daemon.json
:
[root@server4 ~]$ vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://mirror.ccs.tencentyun.com"],
"insecure-registries": ["192.168.2.241:5000"
]
}
[root@server4 ~]$ systemctl restart docker
上传镜像
上传同样使用 tag
修改镜像标记后用 push
上传:
[root@server4 ~]$ docker tag user1:0.1 192.168.2.241:5000/user241:v1.0
[root@server4 ~]$ docker push 192.168.2.241:5000/user241:v1.0
The push refers to repository [192.168.2.241:5000/user241]
c49567fcf544: Pushed
v1.0: digest: sha256:50e4c287c3287307a0af663b479db763335aeb444f64bb00eb19f547553e38c0 size: 527
下载镜像
在另外一台主机上使用 docker pull
来拉取仓库中的镜像:
[root@server1 ~]$ docker pull 192.168.2.241:5000/user241:v1.0
v1.0: Pulling from user241
01b4f4cd1c49: Pull complete
Digest: sha256:50e4c287c3287307a0af663b479db763335aeb444f64bb00eb19f547553e38c0
Status: Downloaded newer image for 192.168.2.241:5000/user241:v1.0
192.168.2.241:5000/user241:v1.0
[root@server1 ~]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.2.241:5000/user241 v1.0 7549e3270b72 7 hours ago 5.6MB
其他操作
对于镜像的创建、更新、分发等操作,Docker Registry 提供 HTTP API 接口来实现操作调用。主要功能如下表:
方法 | 路径 | 说明 |
---|---|---|
GET | /v2/ |
检查是否支持 2.0 接口。 |
GET | /v2/<name>/tags/list |
获得镜像的标签列表。 |
GET/PUT/DELETE | /v2/<name>/manifests/<reference> |
获得/修改/删除镜像的主要信息。 |
GET/DELETE | /v2/<name>/blobs/<digest> |
获得/删除镜像层。 |
POST | /v2/<name>/blobs/uploads/ |
开始分块上传。 |
GET | /v2/catalog |
获得镜像列表。 |