docker registry私服搭建的方法

 更新时间:2018年05月31日 09:34:01   作者:乔巴大大  
这篇文章主要介绍了docker registry私服搭建的方法,docker官方的registry镜像分为两个版本,v2和v2以前的版本,本文将分别搭建基于SSL和登录认证的以上两个版本的docker私服

目前为止,docker官方的registry镜像分为两个版本,v2和v2以前的版本,我管它叫v1,v1使用python编写的,之后的v2用的go语言,而且它们的API也不一样,本文将分别搭建基于SSL和登录认证的以上两个版本的docker私服。

registry(v2)

搭建环境:172.16.71.52 (contos7,docker1.8)

首先下载镜像

docker pull resigtry:2

创建证书

mkdir -p certs && openssl req \
 -newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key \
 -x509 -days 365 -out certs/domain.crt

复制domain.crt到指定目录,172.16.71.52.xip.io为私有仓库所在服务器的域名,5000为registry的端口号

cp /certs/domain.crt /etc/docker/certs.d/172.16.71.52.xip.io:5000/ca.crt

建立登录认证

mkdir auth
docker run --entrypoint htpasswd registry:2 -Bbn 你的用户名 你的密码 > auth/htpasswd

重启docker

systemctl restart docker

run起来

docker run -d -p 5000:5000 --restart=always --name registry \
 -v `pwd`/auth:/auth \
 -e "REGISTRY_AUTH=htpasswd" \
 -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
 -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
 -v `pwd`/certs:/certs \
 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
 -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
 registry:2

先登录,再使用

 docker login 172.16.71.52.xip.io:5000

 docker tag redis 172.16.71.52.xip.io:5000/redis

 docker push 172.16.71.52.xip.io:5000/redis

检查下,image是否进入了我们搭建的私有仓库

# 找到外部挂载的目录
docker inspect --format {{'json .Mounts'}} registry

# push进来的image都安静的躺在这里
cd /tmp/data/docker/registry/v2/repositories

以下是注意事项:

1.创建认证证书时common name应该用registry所在机器的域名,本人用IP测试没有成功。

2.docker run之前确保5000端口没有被占用,启动成功以后用docker logs看下有没有报错

3.push和pull之前要docker login一下

4.想要通过安全认证记得把生成的 domain.crt 复制到/etc/docker/certs.d/172.16.71.52.xip.io:5000/ca.crt,其中172.16.71.52.xip.io为私服的域名,5000为registry的对外端口

5.v2的api变了,访问v1/search会报错404 not found,可以通过/v2/_catalog查看私有仓库的目录,v2的aip参见这里

参考

https://docs.docker.com/registry/deploying/ 
https://docs.docker.com/engine/reference/commandline/inspect/
https://docs.docker.com/registry/spec/api/

registry(V1)

V1版本的registry搭建起来比较费劲(也有可能我没有找到优雅的方法),在网上找了一篇用nginx做SSL和登录认证的博文,感谢博主,可移步这里查看(亲测可用)

搭建docker内网私服(docker-registry with nginx&ssl on centos)

因为版本原因(docker1.8),在ssl认证上还需要把生成的根证书copy到docker指定目录(如搭建V2时描述的)

cp /etc/pki/CA/cacert.pem /etc/docker/certs.d/172.16.71.43.xip.io:5000/ca.crt 

注意在其他主机访问私服时也要做以上操作。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Docker搭建Nginx图片服务器的方法

    Docker搭建Nginx图片服务器的方法

    这篇文章主要介绍了Docker搭建Nginx图片服务器的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • docker compose 使用教程

    docker compose 使用教程

    这篇文章主要介绍了docker compose 使用教程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • Docker容器简单部署nginx过程解析

    Docker容器简单部署nginx过程解析

    这篇文章主要介绍了Docker容器简单部署nginx过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • Docker简单入门使用教程

    Docker简单入门使用教程

    这篇文章主要介绍了Docker简单入门教程,帮助大家开始学习docker容器,感兴趣的朋友可以了解下
    2020-08-08
  • docker-registry使用笔记

    docker-registry使用笔记

    在国内docker-hub是肯定用不了的,不解释:所以最好还是建一个私有的docker-registry,存储一些常用的images方便随时pull
    2016-09-09
  • docker磁盘空间不足的解决办法

    docker磁盘空间不足的解决办法

    linux的磁盘空间挂载后,需要迁移一下docker 镜像原本的位置,因此有此实践,分享操作过程,文章通过代码示例给大家介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • ubuntu22通过docker安装wechat启动后无界面的问题及解决方法

    ubuntu22通过docker安装wechat启动后无界面的问题及解决方法

    这篇文章主要介绍了ubuntu22通过docker安装wechat启动后无界面的解决方法,通过微信创建脚本发现一系列问题,最终在小编的努力下顺利解决,下面把解决过程分享给大家,需要的朋友可以参考下
    2022-07-07
  • 使用Vscode结合docker进行开发的详细过程

    使用Vscode结合docker进行开发的详细过程

    这篇文章主要介绍了如何使用Vscode结合docker进行开发,在本文中,我将提供一个在 Node 环境中运行的 JavaScript 应用程序示例。阅读在容器内开发以获取所有技术堆栈的详细文档,需要的朋友可以参考下
    2021-07-07
  • docker部署mysql问题

    docker部署mysql问题

    这篇文章主要介绍了docker部署mysql问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • Docker compose部署SpringBoot项目连接MySQL及遇到的坑

    Docker compose部署SpringBoot项目连接MySQL及遇到的坑

    这篇文章主要介绍了Docker compose部署SpringBoot项目连接MySQL,文中给大家强调了如果在使用的过程中修改了Dockerfile,一定要把之前的镜像删掉,具体内容详情跟随小编一起看看吧
    2021-09-09

最新评论