docker-搭建-本地-registry

Docker hub 虽然使用很方便,但由于国内网络原因,有时候下载镜像会很慢,所以需要搭建一个内网的镜像仓库

环境

Linux版本:Centos7
Docker版本:1.13.1

部署registry

下载镜像

1
# docker pull registry:2.6.2

启动容器

1
2
3
4
## -d 是后台启动容器
## -p 将容器的 5000 端口映射到 Host 的 5000 端口。5000 是 registry 服务端口。
## -v 将容器 /var/lib/registry 目录映射到 Host 的 /myregistry,用于存放镜像数据。
# docker run -d -p 5000:5000 -v /opt/registry:/var/lib/registry --restart=always --name registry registry:2.6.2

查看启动的容器

1
2
3
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
88a14d70070d registry:2.6.2 "/entrypoint.sh /e..." 13 minutes ago Up 9 minutes 0.0.0.0:5000->5000/tcp registry

网页查看镜像

打开浏览器,输入192.168.170.159:5000/v2/_catalog,可以查看到{“repositories”: []}表示现在仓库中,没有镜像images

下载镜像并上传到本地registry

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
## 下载镜像
# docker pull busybox
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/busybox latest 8c811b4aec35 12 days ago 1.15 MB
## 重命名镜像,使之与本地registry匹配
# docker tag docker.io/busybox 192.168.170.159:5000/busybox
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/busybox latest 8c811b4aec35 12 days ago 1.15 MB
192.168.170.159:5000/busybox latest 8c811b4aec35 12 days ago 1.15 MB
## 上传镜像
# docker push 192.168.170.159:5000/busybox
The push refers to a repository [192.168.170.159:5000/busybox]
Get https://192.168.170.159:5000/v1/_ping: http: server gave HTTP response to HTTPS client
出现上述提示,表示本地的仓库默认使用的是https进行上传,如果是非https就会出现以上的提示
解决方式,可以参考一下方式
修改文件/usr/lib/systemd/system/docker.service,在ExecStart=/usr/bin/dockerd后面添加--insecure-registry 192.168.170.159:5000,然后重启docker服务
## 上传镜像
# docker push 192.168.170.159:5000/busybox
打开浏览器,访问http://IP:5000/v2/_catalog,可以查看到{"repositories": ["busybox"]}表示现在仓库中,存在镜像busybox这一个

批量上传镜像

1
# for i in `docker images|grep 172.28.7.238|awk '{print $1":"$2}'`;do dockker push $i;done