docker registry私服搭建的方法

目前为止,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 

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

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

(0)

相关推荐

  • 详解Ubuntu Docker Registry 搭建私有仓库

    服务器版本 Ubuntu 16.04 LTS. 安装命令: 复制代码 代码如下: $ docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry Registry 服务默认会将镜像保存在/var/lib/registry目录下,上面命令设置保存目录在/opt/registry下,我们可以看下 Registry 容器状态: $ docker ps CO

  • 局域网内部署 Docker Registry(推荐)

    在局域网内部署 Docker Registry 可以极大的提升平时 pull.push 镜像的速度,从而缩短自动化操作的过程.同时也可以缓解带宽不足的问题,真是一举多得.本文将从创建单机的 Docker Registry 开始,逐步完成局域网内可用的 Docker Registry 的创建,并重点解释如何使用 IP 地址访问 Registry 的方法. 注意,本文假设你已经在使用的 OS 中安装了 docker 引擎. 创建本机使用的 Docker Registry 这是一个非常简单的过程,简单

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

    本文介绍了搭建docker内网私服的方法,分享给大家.具体如下: 主要思路: 1. Docker Registry 说明 关于如何创建和使用本地仓库,其实已经有很多文章介绍了.因为docker技术正处于发展和完善阶段,所以有些文章要么内容已经过时,要么给出了错误的配置,导致无法正常创建仓库.本文记录的是个人完整的搭建过程,docker version为1.1.2. 官方提供了Docker Hub网站来作为一个公开的集中仓库.然而,本地访问Docker Hub速度往往很慢,并且很多时候我们需要一个

  • Docker Registry 私有仓库搭建详细步骤

    Docker  Registry 私有仓库搭建 官方已经提供了很多版本的 Linux 镜像,直接从官方仓库(Public Repositories)下载就可以了.如果考虑到安全性和速度,我们可能会想在自己局域网里架设一个私有仓库(Private Repositories)来放我们自己的镜像,Docker-Registry 正是我们需要的工具. 本次搭建 docker-registry server (dev) (v0.9.0) 添加docker用户和目录 为了安全起见,我们可以添加一个用户doc

  • docker-registry使用笔记

    相关链接 github:https://github.com/dotcloud/docker-registry api:http://docs.docker.com/reference/api/registry_api/ 安装docker-registry 官方直接给出了一个创建container的命令,在装有docker的机器上运行docker run -d -p 5000:5000 registry, 这个貌似要下载很多东西,大概500M左右,免去了手工安装的过程,很方便. 安装安成之后直接

  • docker registry安装简单命令实现

    本文计划使用3条命令来运行一个Docker registry私服,其实很简单 环境准备: docker 1.11.2 compose文件docker-compose.yml version: '2' services: registry: image: registry:2.5.1 hostname: registry ports: - "5000:5000" environment: - TZ="Asia/Shanghai" - "REGISTRY_AU

  • 详解Docker私有仓库Registry的搭建验证

    1. 关于Registry 官方的Docker hub是一个用于管理公共镜像的好地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去.但是,有时候,我们的使用场景需要我们拥有一个私有的镜像仓库用于管理我们自己的镜像.这个可以通过开源软件Registry来达成目的. Registry在github上有两份代码:老代码库和新代码库.老代码是采用python编写的,存在pull和push的性能问题,出到0.9.1版本之后就标志为deprecated,不再继续开发.从2.0版本开始就到

  • 搭建一个私有的Docker registry教程

    为什么需要搭建一个私有的registry呢?嗯,对于新手来说,Docker Hub(一个Docker公共仓库)只允许你拥有一个免费的私有版本库(repo).其他的公司也开始提供类似服务,但是价格可不便宜.另外,如果你需要用Docker部署一个用于生产环境的应用,恐怕你不希望将这些镜像放在公开的Docker Hub上吧! 这篇文章提供了一个非常务实的方法来处理搭建私有Docker registry时出现的各种错综复杂的情况.我们将会使用一个运行于DigitalOcean(之后简称为DO)的非常小巧

  • 详解Docker 配置国内免费registry mirror

    由于国内特殊的网络环境,往往我们从Docker Hub中拉取镜像并不能成功,而且速度特别慢. 那么我们可以给docker配置一个国内的registry mirror,当我们需要的镜像在mirror中则直接返回,如果没有则从Docker Hub中拉取.是否使用registry mirror对Docker用户来说是透明的. DaoCloud在国内提供了首个Docker Hub镜像服务,而且免费,大大提高了国内Docker用户的使用热情,非常感谢DaoCloud. 使用方法 修改Docker配置文件/

  • 使用Docker registry镜像创建私有仓库的方法

    安装Docker后,可以通过官方提供的registry镜像来简单搭建一套本地私有仓库环境,本文记录简单的搭建过程. 1 使用registry启动私有仓库的容器 docker run -d -p 5000:5000 -v /root/my_registry:/tmp/registry registry 说明:若之前没有安装registry容器则会自动下载并启动一个registry容器,创建本地的私有仓库服务.默认情况下,会将仓库创建在容器的/tmp/registry目录下,可以通过 -v 参数来将

随机推荐