基于Docker搭建Registry私有镜像仓库
2016-12-05 00:00
1116 查看
镜像库默认保存在容器下
将
文件重命名为 domain.crt domain.key
1. 单服务模式启动
2. Compose服务编排模式(推荐方式)
TLS加密可采用自签名证书
Registry的自签名证书需要手动导入到客户端Docker Daemon的根证书信任列表:
domain.crt 拷贝至 客户端Docker Daemon 的 /etc/docker/certs.d/registry.example.com:5000/ca.crt
部分RedHat系列客户端还需要在系统层面信任:
domain.crt 拷贝至 客户端Docker Daemon 的 /etc/pki/ca-trust/source/anchors/registry.example.com.crt
update-ca-trust enable && update-ca-trust
不做TLS加密,使用普通http通信(不推荐)
此时
Registry 访问无法开放到 localhost 以外的域
配置:
/var/lib/registry路径,并
volumn到宿主机
将
Registry服务开放到
Localhost以外的域要求TLS加密
Registry默认监听 5000 端口
基于Docker两种模式搭建 Registry
这里约定HTTPS证书和秘钥在/etc/certs目录文件重命名为 domain.crt domain.key
1. 单服务模式启动
docker run -d --name registry --hostname registry.example.com \ -e "REGISTRY_STORAGE_DELETE_ENABLED=true" \ -e "REGISTRY_AUTH: htpasswd" \ -e "REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd" \ -e "REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm" \ -e "REGISTRY_HTTP_TLS_KEY: /etc/certs/domain.key" \ -e "REGISTRY_HTTP_TLS_CERTIFICATE: /etc/certs/domain.crt" \ -p 5000:5000 \ -v /etc/certs:/etc/certs \ -v /srv/registry/auth:/auth \ -v /srv/registry/storage:/var/lib/registry \ --restart=always registry:2
2. Compose服务编排模式(推荐方式)
docker pull registry:2 ####################### 多行命令开始 ############################### cat >> docker-compose.yaml <<EOF version: '2' services: Registry: image: 'registry:2' container_name: 'registry' hostname: 'registry.example.com' restart: always ports: - '5000:5000' environment: REGISTRY_STORAGE_DELETE_ENABLED: 'true' REGISTRY_AUTH: htpasswd REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm REGISTRY_HTTP_TLS_KEY: /etc/certs/domain.key REGISTRY_HTTP_TLS_CERTIFICATE: /etc/certs/domain.crt volumes: - /etc/certs:/etc/certs - /srv/registry/auth:/auth - /srv/registry/storage:/var/lib/registry EOF ####################### 多行命令结束 ############################### docker-compose up -d
TLS加密可采用自签名证书
sudo mkdir /etc/certs cd /etc/certs # 如果签发对象还是个IP而不是域名的话 # 自签名证书需要有个备选的IP SANS校验信息 sudo sed -i '/\[ v3_ca \]/a\subjectAltName = IP:121.40.145.76' /etc/pki/tls/openssl.cnf # CentOS7环境下 sudo openssl req -newkey rsa:4096 -nodes -sha256 -keyout domain.key -x509 -days 365 -out domain.crt # 其中Common Name输入 registry.example.com sudo openssl dhparam -out dhparam.pem 1024 # 生成DHE参数文件增强ssl加密
Registry的自签名证书需要手动导入到客户端Docker Daemon的根证书信任列表:
domain.crt 拷贝至 客户端Docker Daemon 的 /etc/docker/certs.d/registry.example.com:5000/ca.crt
部分RedHat系列客户端还需要在系统层面信任:
domain.crt 拷贝至 客户端Docker Daemon 的 /etc/pki/ca-trust/source/anchors/registry.example.com.crt
update-ca-trust enable && update-ca-trust
不做TLS加密,使用普通http通信(不推荐)
此时
Registry不支持
basic authentication
Registry 访问无法开放到 localhost 以外的域
配置:
Docker Damon配置启动选项
DOCKER_OPTS="--insecure-registry registry.example.com:5000"
Registry操作
## 镜像指向私有registry两种方式 ## docker tag 本地镜像 registry_url[:port]/namespace/imagename[:tag] # tag一个本地镜像到registry方式 docker build -t registry_url[:port]/namespace/imagename[:tag] . # 直接build镜像到registry方式 docker push registry_url[:port]/namespace/imagename[:tag] # 推送镜像到仓库 docker pull registry_url[:port]/namespace/imagename[:tag] # 拉取镜像
相关文章推荐
- 使用官方 docker registry 搭建私有镜像仓库及部署 web ui
- 基于 Harbor 搭建 Docker 私有镜像仓库
- 基于 Harbor 搭建 Docker 私有镜像仓库
- 基于 Harbor 搭建 Docker 私有镜像仓库
- 详解基于Harbor搭建Docker私有镜像仓库
- docker:用registry快速搭建私有镜像仓库
- 基于 Harbor 搭建 Docker 私有镜像仓库
- 一步步搭建docker私有仓库并从私有仓库中下载镜像
- 构建 Docker registry 私有镜像,解决docker私有仓库push出错问题
- 搭建 Docker 私有仓库 Registry-v2
- 使用Docker registry镜像创建私有仓库
- docker基础:私有仓库repository搭建(1):registry
- docker registry-v2 搭建私有仓库
- docker 1.12.3版本搭建私有仓库,上传镜像报错:server gave HTTP response to HTTPS client”
- 搭建私有镜像仓库--registry V2
- 使用Harbor搭建Docker私有镜像仓库服务
- Docker私有仓库Registry 搭建
- docker 搭建私有仓库及镜像存储目录结构
- Docker Registry搭建私有仓库
- Docker私有仓库Registry 搭建