手机扫一扫访问本页内容

微信扫描点右上角"···"分享到好友或朋友圈

关闭
微信扫一扫可打开小程序

微信长按图片或搜“分享录”可打开小程序

关闭

在Nexus上搭Docker私服并push推送镜像到仓库上

关于搭仓库等可以看Nexus系列

首先要先在Nexus上创建仓库,点上面菜单栏的“Server administration and configuration”图标然后点左边菜单“Repository”->“Repositories”->“Create repository”然后选择对应的仓库类型。

主要是填写“Name”、“HTTP”以及为了兼容V1 API而勾选“Enable Docker V1 API:”下面的“Allow clients to use the V1 API to interact with this repository”,其中Name不能修改。

下面依次创建宿主仓库(Hosted)、代理仓库(Proxy)、仓库组(Group)。

创建宿主仓库(Hosted)

仓库类型选“docker (hosted)”,保存后生成的URL为http://localhost:8081/repository/docker-hosted。

创建代理仓库(Proxy)

仓库类型选“docker (proxy)”,“Remote storage”可以用网易http://hub-mirror.c.163.com或者其他厂商的。

创建仓库组(Group)

照上面然后选“docker (group)”。

创建完仓库,通过“sudo vim /etc/docker/daemon.json”修改配置文件,添加“insecure-registries”并把上面创建的仓库配进来。

{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
  "insecure-registries": ["localhost:8082", "localhost:8083", "localhost:8084"]
}

然后重启docker,如果是Linux通过“sudo systemctl restart docker”重启docker,如果是Windows或者macOS直接通过Docker Desktop重启即可。

我们先尝试搜索8082端口的宿主仓库上有没有“alpine”镜像,可以看到没登录直接提示“Error response from daemon: Unexpected status code 401”,这是因为“Security”->“Anonymous Access”->“Access”没勾选“Allow anonymous users to access the server”开启匿名访问,登录后再搜索显示没有,在8083端口的代理仓库则可以搜索到“alpine”镜像。

接着我们尝试把本地的nginx推送到宿主仓库上,先打tag,再push镜像,最后登出,然后在后台点左上角菜单“Browse server contents”再点左边菜单“Browse”打开上面创建的宿主仓库就可以看到刚刚推上来的镜像,点上面的“HTML View”查看具体信息。

这样就在Nexus上搭Docker私服并push推送镜像到仓库上了,下面附上一些操作命令。

//登录
docker login localhost:8082 -u xbt
docker login localhost:8083 -u xbt
docker login localhost:8084 -u xbt
//搜索镜像
docker search localhost:8082/alpine
docker search localhost:8083/alpine
docker search localhost:8084/alpine
//拉镜像
docker pull localhost:8083/alpine
//先打tag
docker tag nginx:latest localhost:8082/nginx:latest
//在推送到宿主仓库
docker push localhost:8082/nginx:latest
//删除tag
docker rmi localhost:8082/nginx:latest
//登出
docker logout localhost:8082
docker logout localhost:8083
docker logout localhost:8084

细心的话,你会发现直接通过docker pull的镜像都会被pull到代理仓库中;通过代理仓库pull镜像第一次会比较慢之后就比较快了,那是因为它先下载到代理仓库再拉到本地;只能通过手动push之后宿主仓库中才会有该镜像;只要宿主仓库或代理仓库中有的镜像,在仓库组才会有,因为仓库组就是宿主仓库和代理仓库的组合。

有个问题,通过代理仓库能search到的镜像,再通过代理仓库pull的时候有的会报“Error response from daemon: manifest for localhost:8083/gogs/gogs:latest not found: manifest unknown: manifest unknown”,但是直接pull却没问题。所以还是直接pull比较好,这样代理仓库就只起到再pull比较快的作用,而且还会拖慢第一次pull,不过搭这样的私库也可以提速其他人pull相同的镜像。

可以设置“Docker – Delete incomplete uploads”、“Docker – Delete unused manifests and images”等定时任务来删除没用数据,也可以通过“Cleanup Policies”清理策略来清理仓库。

另外,可能会因为地址、端口配错,或者是没有映射上面的端口,或者nexus容器没有运行,而报以下的错误。

Error response from daemon: login attempt to http://localhost:8081/v2/ failed with status: 404 Not Found
Error response from daemon: Get "https://192.168.1.101:8081/v2/": http: server gave HTTP response to HTTPS client
Error response from daemon: Get "https://192.168.1.101/v2/": dialing 192.168.1.101:443 with direct connection: connecting to 192.168.1.101:443: dial tcp 192.168.1.101:443: connect: connection refused
Error response from daemon: Get "http://localhost:8082/v2/": dial tcp [::1]:8082: connect: connection refused
Error response from daemon: invalid registry endpoint "http://localhost:8082/v1/". HTTPS attempt: Get "https://localhost:8082/v1/_ping": dial tcp [::1]:8082: connect: connection refused. HTTP attempt: Get "http://localhost:8082/v1/_ping": dial tcp [::1]:8082: connect: connection refused

历史上的今天:

展开阅读全文


上一篇:

下一篇:

服务器又要到期了鼓励一下吧
您还可以访问本站的小程序、公众号等所有端,或者下载APP, 在小程序、APP上可以评论文章以及保存图片还有在线客服哦,如您有任何疑问或建议可向作者提出意见反馈
扫码打开小程序可评论文章保存图片,在“我的”有实时在线客服哦,看效果?
关注我的公众号为您分享各类有用信息
分享录多端跨平台系统