柚子生活

www.pomelolive.com

给局域网Docker镜像仓库服务器配置域名

为什么要配置域名

我给出了下面三个理由:

  1. IP地址不好记,不然为什么要用域名代替IP地址呢;

  2. IP地址输入也很慢,域名我可以盲打,IP地址我要看着小键盘一个一个输入;

  3. 更改镜像仓库服务器,命令也要修改,如果公司很大,就要通知大家修改,成本高。

配置Nginx反向代理

我最开始想到的就是用Nginx反向代理服务器来路由到镜像仓库服务器,因为这样可以统一管理。配置好以后push测试报错

Error: Status 405 trying to push repository registry/openjdk: "<html>\r\n<head><title>405 Not Allowed</title></head>\r\n<body>\r\n<center><h1>405 Not Allowed</h1></cen
ter>\r\n<hr><center>nginx/1.18.0</center>\r\n</body>\r\n</html>\r\n"

查阅相关资料,因为客户端用post请求导致这个错误。当初是想把这个问题解决的。后来想了一下,为什么要这么麻烦呢,还不如直接用一个新的域名或者用一个二级域名来解决问题来的方便。我这里用一个二级域名。

配置二级域名解析

配置域名解析到局域网IP地址,我用的二级域名是加hub前缀hub.youzikeji.net,开始我还想过用images或者registry前缀,主要是太长了书写不方便被我否定掉了,Docker的镜像仓库和github都有hub,于是我就选择了加hub前缀。开始我以为域名要备案,因为接下来我要用80端口,主要是为了写命令时省去5000这个端口。

后来发现域名用了好几天,居然还可以用。备不备案域名都可以解析到IP地址那是肯定的。我拿到IP地址以后就在内网使用,他们怎么查我呀,我不去公网查不到呀。也许这就是不用备案的原因吧。

怎么配置解析大家可以去网上找答案。

重新启动一个容器宿主机80端口映射5000端口

进入服务器终端关闭旧的容器重启一个新的容器

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

重启镜像服务器.png

开启域名HTTP访问,不然push会报错哦

Get https://hub.youzikeji.net/v1/_ping: dial tcp 192.168.0.26:443: connect: connection refused

/etc/docker/daemon.json文件添加域名,以下截图

添加域名.png

重启docker服务

systemctl restart docker

客户端测试

打tag标签

[root@localhost ~]# docker tag 708b hub.youzikeji.net/registry 
[root@localhost ~]# docker images
REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
docker.io/registry           latest              708bc6af7e5e        3 months ago        25.8 MB
hub.youzikeji.net/registry   latest              708bc6af7e5e        3 months ago        25.8 MB
docker.io/openjdk            8-jdk-alpine        a3562aa0b991        12 months ago       105 MB

push上传镜像服务器

[root@localhost ~]# docker push hub.youzikeji.net/registry 
The push refers to a repository [hub.youzikeji.net/registry]
a330d9dc14ce: Pushed 
588f0b714a86: Pushed 
c62467775792: Pushed 
9d08b7a37338: Pushed 
7444ea29e45e: Pushed 
latest: digest: sha256:3a8eef8d0a818b9bbb4bd17667253473e2d99935ccbbd37649af6bcaa064cf0d size: 1363
[root@localhost ~]#

删除本地镜像,pull测试

[root@localhost ~]# docker pull hub.youzikeji.net/registry
Using default tag: latest
Trying to pull repository hub.youzikeji.net/registry ... 
latest: Pulling from hub.youzikeji.net/registry
Digest: sha256:3a8eef8d0a818b9bbb4bd17667253473e2d99935ccbbd37649af6bcaa064cf0d
Status: Downloaded newer image for hub.youzikeji.net/registry:latest
[root@localhost ~]# docker images
REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
docker.io/registry           latest              708bc6af7e5e        3 months ago        25.8 MB
hub.youzikeji.net/registry   latest              708bc6af7e5e        3 months ago        25.8 MB
docker.io/openjdk            8-jdk-alpine        a3562aa0b991        12 months ago       105 MB
[root@localhost ~]#

查看服务器镜像仓库

[root@localhost ~]# curl hub.youzikeji.net/v2/_catalog
{"repositories":["hello-world","login","login_test","registry"]}

查看镜像.png

上传镜像.png

查看某个镜像的所有版本

[root@localhost ~]# curl hub.youzikeji.net/v2/login/tags/list
{"name":"login","tags":["1.0.0"]}
[root@localhost ~]# curl hub.youzikeji.net/v2/registry/tags/list
{"name":"registry","tags":["latest"]}

至此,局域网Docker镜像仓库服务器配置域名完毕。

发表评论:

Powered By Z-BlogPHP

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