搭建Docker私有仓库的详细教程
1.Docker registry 说明
本文记录的个人完整搭建docker registry操作过程,官方虽然提供了Docker Hub作为一个公开的集中仓库,但是天朝的网络可想而知,第一次pull一个镜像不是失败就是时间很长,为了解决这个问题需要创建一个私有的仓库在本地pull 本地push。我使用的docker版本是:1.5.0
2、安装docker-registry
# 如果本地没有下载过docker-registry,则首次会pull registry 运行时会映射路径和端口,以后就可以从/data/registry下找到私有仓库
3、客户端上的操作
#从本地仓库上获取有哪些镜像
curl http://registry.wpython.com:5000/v1/search
{"num_results": 1, "query": "", "results": [{"description": "", "name": "library/centos6"}]}
# 拉取到本地
# tag 一个镜像
# 将新的docker images push 到本地仓库
4、加入nginx认证
Docker 启动监听端口后,使用的是 http,可以远程来管理 Docker 主机。
这样的场景存在弊端,API 层面是没有提供用户验证、Token 之类身份验证功能,任何人都可以通过地址加端口来控制 Docker 主机,为了避免这样的情况发生,Docker 官方也支持 https 方式,不过需要我们自己来生成证书。
新版本的docker 也强制必须使用https否则会报错
# 安装nginx过程略
创建一个登陆用户(如果没有htpasswd命令 请安装httpd-tools这个包)
New password:
Re-type new password:
Adding password for user admin
# 生成根密钥
openssl genrsa -out private/cakey.pem 2048
# 生成根证书
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:Brijing
Locality Name (eg, city) []:Chaoyang
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:registry.wpython.com
Email Address []:
# 为nginx服务器生成ssl密钥
openssl genrsa -out nginx.key 2048
# 为nginx生成的证书签署请求
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:Beijing
Locality Name (eg, city) []:Chaoyang
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:registry.wpython.com
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
# 私有CA根据请求来签发证书
# 如果报如下错误:
Using configuration from /usr/local/ssl/openssl.cnf
/etc/pki/CA/index.txt: No such file or directory
unable to open '/etc/pki/CA/index.txt'
140137408210600:error:02001002:system library:fopen:No such file or directory:bss_file.c:398:fopen('/etc/pki/CA/index.txt','r')
140137408210600:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:400:
# 执行以下命令
mkdir newcerts
touch index.txt
touch serial
echo 01 > serial
cd -
openssl ca -in nginx.csr -out nginx.crt
Using configuration from /usr/local/ssl/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number: 1 (0x1)
Validity
Not Before: May 12 04:15:08 2015 GMT
Not After : May 11 04:15:08 2016 GMT
Subject:
countryName = CN
stateOrProvinceName = Beijing
organizationName = Internet Widgits Pty Ltd
commonName = registry.wpython.com
emailAddress = 739827282@qq.com
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
B5:20:C7:47:26:D9:26:54:12:F7:36:7E:4E:3A:F0:D9:0E:2C:F7:BD
X509v3 Authority Key Identifier:
keyid:93:F7:86:72:1B:2B:24:CD:AF:24:EF:53:F4:E1:FA:EC:E7:70:1A:90
Certificate is to be certified until May 11 04:15:08 2016 GMT (365 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
# 发现根证书
# cat /etc/pki/CA/cacert.pem >> /etc/pki/tls/certs/ca-bundle.crt
# 创建nginx配置文件
upstream docker-registry {
server localhost:5000;
}
server {
listen 8080;
server_name registry.wpython.com;
# enabled ssl
ssl on;
ssl_certificate /alidata/server/nginx/ssl/nginx.crt;
ssl_certificate_key /alidata/server/nginx/ssl/nginx.key;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 0;
chunked_transfer_encoding on;
location / {
auth_basic "Restricted";
auth_basic_user_file docker-registry.htpasswd;
proxy_pass http://docker-registry;
}
location /_ping {
auth_basic off;
proxy_pass http://docker-registry;
}
location /v1/_ping {
auth_basic off;
proxy_pass http://docker-registry;
}
}
# 完成测试
Username: admin
Password:
Email: 739827282@qq.com
Login Succeeded
相关文章

轻松玩转虚拟机套娃! 在Hyper-V中开启嵌套虚拟化的技巧
有办法在虚拟机中创建虚拟机吗?答案是肯定的,在虚拟机中运行虚拟机是可能的,我们将其称为嵌套虚拟化,下面我们就来看看详细操作方法2025-02-19
龙蜥操作系统Anolis OS-23.x安装配置图解教程(保姆级)
本文主要介绍了安装和配置AnolisOS 23.2系统,包括分区、软件选择、设置root密码、网络配置、主机名设置和禁用SELinux的步骤,具有一定的参考价值,感兴趣的可以了解一下2025-01-20
在处理文件拷贝复制到VMware虚拟机中的任务时,有多种方法可以实现文件的高效传输,使用这些方法,可以在不同的操作系统和环境下,实现文件的快速、安全迁移,详细请看下文2024-09-24
统信 UOS V20 桌面专业版(1070u1)正式发布,支持微信扫码登录、应用窗口缩略图,海量功能修复,详细请看下文介绍2024-08-08
怎么看自己IP地址? 不同的操作系统中查看路由器的IP地址的方法
在互联网上进行网络连接,每个设备都有一个唯一的标识,即IP地址,本文介绍了如何在不同平台上查找路由器的IP地址,包括Windows、Mac、iPhone、iPad、Android、Chrome OS和2024-07-16
很多人在使用虚拟机系统的时候,经常对虚拟机的运行速度不甚满意,甚至经常很恼火,虚拟机速度慢有很多原因,每个人需要根据自己的情况具体分析,本文根据笔者的使用经验将2024-02-21
使用虚拟机的时候,遇到了错误,想要把错误的代码或是运行情况复制粘贴到Windows的网上论坛区求助大神,该怎么操作呢?详细请看下文介绍2024-02-21
统信UOS V20桌面专业版(1060)11月更新发布(附更新内容汇总)
国产桌面操作系统统信 UOS V20 专业版(1060)11月更新发布,这是统信 UOS V20 专业版(1060)2023 年度最后一次更新,下面我们就来看看详细的更新内容2023-12-01
统信 UOS 将推 Rust 版 Bash 命令行工具 utshell(附下载地址)
统信 UOS 服务器版将于不久后推出 Rust 版 Bash,名为 utshell,旨在突破传统 Shell 所面临的安全限制,详细请看下文介绍2023-09-20
UOS开机进入busybox界面怎么办 uos无法进入桌面的解决办法
UOS开机进入busybox界面怎么办?UOS系统开机黑屏进入busybox界面了,该怎么办呢?下面我们就来看看uos无法进入桌面的解决办法2023-09-06









最新评论