柚子生活

www.pomelolive.com

CentOS7.4运用registry搭建局域网Docker镜像仓库服务器

前言

这两天用阿里云的镜像仓库,上传真心的慢,于是就有了搭建私有镜像仓库服务器的想法。镜像放在内网也比较安全一些。

安装镜像仓库服务器

进入服务器linux终端,下载registry镜像,没有安装docker的参考CentOS7.4安装Docker

docker pull registry

下载registry镜像.png

创建镜像仓库目录/var/registry,用来存放镜像。

mkdir /var/registry

运行registry镜像

docker run --name registry -d -v /var/registry:/var/lib/registry -p 5000:5000 --restart=always --privileged=true 708b

运行registry镜像.png

参数说明:

--name: 给容器取一个名字;

-d: 容器后台运行;

-v: 目录映射,宿主机目录:容器目录;

-p: 端口映射,宿主机端口:容器端口;

--restart=always: 容器异常自动重启;

--privileged=true: 添加权限,没有添加后面会报错:filesystem: mkdir /var/lib/registry/docker: permission denied

708b: 镜像id(前四位)。


查看镜像仓库所有镜像

[root@localhost ~]# curl http://127.0.0.1:5000/v2/_catalog
{"repositories":[]}

出现上面的结果,则安装成功了。

修改镜像源

修改镜像源,然后重启docker服务。这里不修改也可以,但是从外网pull可能会比较慢。

官方中国镜像:"https://registry.docker-cn.com"

阿里镜像:"https://udzo26et.mirror.aliyuncs.com",

网易镜像:"https://hub-mirror.c.163.com",

道客镜像:"http://f1361db2.m.daocloud.io",

[root@localhost ~]# vim /etc/docker/daemon.json

添加以下内容

{

"registry-mirrors":[

"https://udzo26et.mirror.aliyuncs.com", 

"https://hub-mirror.c.163.com", 

"http://f1361db2.m.daocloud.io",

"https://registry.docker-cn.com"

]

}

[root@localhost ~]# systemctl restart docker #重启docker服务

测试push和pull

下载hello-world镜像,并给镜像打tag标签,然后push。

[root@localhost ~]# docker pull hello-world
Using default tag: latest
Trying to pull repository docker.io/library/hello-world ... 
latest: Pulling from docker.io/library/hello-world
Digest: sha256:8e3114318a995a1ee497790535e7b88365222a21771ae7e53687ad76563e8e76
Status: Image is up to date for docker.io/hello-world:latest
[root@localhost ~]# docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
docker.io/registry      latest              708bc6af7e5e        3 months ago        25.8 MB
docker.io/hello-world   latest              bf756fb1ae65        4 months ago        13.3 kB
[root@localhost ~]# docker tag hello-world 192.168.0.26:5000/hello-world
[root@localhost ~]# 
[root@localhost ~]# docker push 192.168.0.26:5000/hello-world
The push refers to a repository [192.168.0.26:5000/hello-world]
Get https://192.168.0.26:5000/v1/_ping: http: server gave HTTP response to HTTPS client
[root@localhost ~]#

提示错误Get https://192.168.0.26:5000/v1/_ping: http: server gave HTTP response to HTTPS client

意思是registry服务器用HTTP协议不能给用HTTPS客户端响应,把客户端也改成HTTP协议就可以解决问题了。

文件/etc/docker/daemon.json添加

"insecure-registries": ["192.168.0.26:5000"]

配置结果

{
"registry-mirrors":[
	"https://udzo26et.mirror.aliyuncs.com", 
	"https://hub-mirror.c.163.com", 
	"http://f1361db2.m.daocloud.io",
	"https://registry.docker-cn.com"
	],
"insecure-registries": ["192.168.0.26:5000"],
"hosts": ["tcp://0.0.0.0:2375", "unix://var/run/docker.sock"]
}

Docker配置结果.png

然后重启docker

[root@localhost ~]# systemctl restart docker #重启docker服务

重新push,可以看到push成功了。

[root@localhost ~]# docker push 192.168.0.26:5000/hello-world
The push refers to a repository [192.168.0.26:5000/hello-world]
9c27e219663c: Pushed 
latest: digest: sha256:90659bf80b44ce6be8234e6ff90a1ac34acbeb826903b02cfa0da11c82cbc042 size: 525
[root@localhost ~]#

查看镜像仓库,可以看到镜像仓库已经创建了hello-world目录

查看上传的镜像仓库.png

[root@localhost ~]# curl http://127.0.0.1:5000/v2/_catalog
{"repositories":["hello-world"]}

上传镜像成功.png


把本地的hello-world删除,从镜像仓库下载。

[root@localhost ~]# docker images
REPOSITORY                      TAG                 IMAGE ID            CREATED             SIZE
docker.io/registry              latest              708bc6af7e5e        3 months ago        25.8 MB
192.168.0.26:5000/hello-world   latest              bf756fb1ae65        4 months ago        13.3 kB
docker.io/hello-world           latest              bf756fb1ae65        4 months ago        13.3 kB
[root@localhost ~]# docker rmi -f bf75
Untagged: 192.168.0.26:5000/hello-world:latest
Untagged: 192.168.0.26:5000/hello-world@sha256:90659bf80b44ce6be8234e6ff90a1ac34acbeb826903b02cfa0da11c82cbc042
Untagged: docker.io/hello-world:latest
Untagged: docker.io/hello-world@sha256:8e3114318a995a1ee497790535e7b88365222a21771ae7e53687ad76563e8e76
Deleted: sha256:bf756fb1ae65adf866bd8c456593cd24beb6a0a061dedf42b26a993176745f6b
Deleted: sha256:9c27e219663c25e0f28493790cc0b88bc973ba3b1686355f221c38a36978ac63
[root@localhost ~]# docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
docker.io/registry   latest              708bc6af7e5e        3 months ago        25.8 MB
[root@localhost ~]# docker pull 192.168.0.26:5000/hello-world
Using default tag: latest
Trying to pull repository 192.168.0.26:5000/hello-world ... 
latest: Pulling from 192.168.0.26:5000/hello-world
0e03bdcc26d7: Pull complete 
Digest: sha256:90659bf80b44ce6be8234e6ff90a1ac34acbeb826903b02cfa0da11c82cbc042
Status: Downloaded newer image for 192.168.0.26:5000/hello-world:latest
[root@localhost ~]#

至此,局域网Docker镜像仓库服务器搭建成功。

发表评论:

Powered By Z-BlogPHP

© CopyRight 2019-2020 pomelolive.com, 京ICP备19052672号