电脑教程
位置:首页>> 电脑教程>> 软件教程>> 搭建Docker私有仓库的详细教程

搭建Docker私有仓库的详细教程

  发布时间:2023-09-28 02:55:18 

标签:Docker,私有仓库

这篇文章主要介绍了搭建Docker私有仓库的详细教程,主要依靠Docker Registry这个工具,需要的朋友可以参考下

1.Docker registry 说明
本文记录的个人完整搭建docker registry操作过程,官方虽然提供了Docker Hub作为一个公开的集中仓库,但是天朝的网络可想而知,第一次pull一个镜像不是失败就是时间很长,为了解决这个问题需要创建一个私有的仓库在本地pull 本地push。我使用的docker版本是:1.5.0

2、安装docker-registry


复制代码代码如下:

docker run -d -e SETTINGS_FLAVOR=dev -e STORAGE_PATH=/tmp/registry -v /alidata/registry:/tmp/registry  -p 5000:5000 registry
# 如果本地没有下载过docker-registry,则首次会pull registry 运行时会映射路径和端口,以后就可以从/data/registry下找到私有仓库

3、客户端上的操作
#从本地仓库上获取有哪些镜像
 

复制代码代码如下:

curl -X GET http://registry.wpython.com:5000/v1/search

curl http://registry.wpython.com:5000/v1/search
{"num_results": 1, "query": "", "results": [{"description": "", "name": "library/centos6"}]}

# 拉取到本地
 

复制代码代码如下:

docker pull library/centos6

# tag 一个镜像
 

复制代码代码如下:

docker tag 8552ea9a16f9  registry.wpython.com:5000/centos6_x86_64.mini

# 将新的docker images push 到本地仓库
 

复制代码代码如下:

docker push registry.wpython.com:5000/centos6_x86_64.mini

4、加入nginx认证
Docker 启动监听端口后,使用的是 http,可以远程来管理 Docker 主机。
这样的场景存在弊端,API 层面是没有提供用户验证、Token 之类身份验证功能,任何人都可以通过地址加端口来控制 Docker 主机,为了避免这样的情况发生,Docker 官方也支持 https 方式,不过需要我们自己来生成证书。
新版本的docker 也强制必须使用https否则会报错

# 安装nginx过程略
创建一个登陆用户(如果没有htpasswd命令 请安装httpd-tools这个包)

 

复制代码代码如下:

htpasswd -c /alidata/server/nginx/docker-registry.htpasswd admin
New password:
Re-type new password:
Adding password for user admin

# 生成根密钥
 

复制代码代码如下:

cd /etc/pki/CA/
openssl genrsa -out private/cakey.pem 2048

# 生成根证书
 

复制代码代码如下:

openssl req -new -x509 -key private/cakey.pem -out cacert.pem
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密钥
 

复制代码代码如下:

cd /alidata/server/nginx/ssl
openssl genrsa -out nginx.key 2048

# 为nginx生成的证书签署请求
 

复制代码代码如下:

openssl req -new -key nginx.key -out nginx.csr
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根据请求来签发证书
 

复制代码代码如下:

openssl ca -in nginx.csr -out nginx.crt
 
 
# 如果报如下错误:
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:
 
# 执行以下命令

复制代码代码如下:

cd /etc/pki/CA/
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

# 发现根证书
 


复制代码代码如下:

# cp /etc/pki/tls/certs/ca-bundle.crt{,.bak}    备份以防出错
# cat /etc/pki/CA/cacert.pem >> /etc/pki/tls/certs/ca-bundle.crt

# 创建nginx配置文件
 

复制代码代码如下:

# vi /alidata/server/nginx/conf/vhosts/www.wpython.com.conf
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;
}
}

# 完成测试

 

复制代码代码如下:

# docker login https://registry.wpython.com:8080
Username: admin
Password:
Email: 739827282@qq.com
Login Succeeded

0
投稿

猜你喜欢

  • 我们在wps文字中编辑文档的时候,常常需要对统一段落的格式,wps文字为我们提供了段落格式复制的功能,那么具体怎么使用复制格式功能呢?下面就
  • Win10专业版任务管理器不显示启动项怎么解决?最近有用户询问这个问题,在使用电脑的时候遇到任务管理器没有启动选项的情况,这是怎么回事呢?针
  • Win10输入法失效只能打英文,打不了中文怎么办?相信很多朋友都遇到过这种情况,确实令人非常的苦恼,那么如何解决这个问题呢?其实方法非常的简
  • Win7系统禁用IE加载项的方法?禁用IE加载项可以提高运行速度,同时也会屏蔽一些弹窗广告,那么要怎么禁用IE加载项呢?一起来看下详细的步骤
  • 很多网友在使用win7系统时候都容易遇上一个问题,那便是速度慢的问题,诚然,速度慢已经成为了咱们win7旗舰版电脑的一大软肋了,系统太大,不
  • 开启熄屏显示后,当手机处于锁定状态时屏幕部分区域就会保持长亮而显示时间和通知等信息。一般来说,AOD显示在手机息屏的情况下也能允许手机展示一
  • 现在,很多人都在使用手机百度输入法。而现在,很多人都不知道,怎么将自己的手机百度输入法切换成繁体字。今天,小编就来跟大家分享手机百度输入法怎
  • 在使用 Word 文档时,我们为了找到某一个关键字,经常需要使用查找功能,那么它的具体操作是怎么样的?下面我们就一起来学习一下。打开一个Wo
  • 电脑开机黑屏只有鼠标这个问题还是很好解决的,这是进入了系统桌面,只是没有显示出来,我们对其简单设置一下就可以快速进入系统。1、按下Ctrl+
  • excel中vollkup函数返回值全部是错误值如何处理 有时候在使用vlookup时 函数的第一个参数和第二个参数首列的单元格虽然都是数字
  • 幻灯片母版主要作用是:统一多页幻灯片风格,当多页内容出现重复一样的元素时,为了制作方便都要使用母版,而且后其修改也比较方便。PPT封面页,目
  • QQ输入法手机版卸载的方法如下:进入手机工具或者设置目录,运行程序管理,选择删除QQ输入法(手机版)。如果在卸载过程中,系统提示:无法卸载,
  • 不会开启透明效果及透明效果不明显的问题,困扰着许多安装了Win10 1909系统的用户。那么,Win10 1909透明效果要怎么开启?又要如
  • 目前大多采用公章生成软件、PS软件或word等方法,为扩宽大家思路,增加WPS文字公章制作的方法。具体要怎么做呢?其实不难下面小编马上就告诉
  • 在Excel表格中,在使用时常常需要进行各种操作,今天就给大家介绍Excel时间格式转换的方法,一起来学学吧。如下表中的过磅时间,想要改成日
  • 我们在制作PPT的时候经常会遇到各种各样的问题,其中之一就是我们输入文字之后,经常会出现标点符号前置,位于一段话的开头,这样是十分不美观,也
  • protools如何导出音频?protools是一款适用于不同电脑系统的音频后期处理工具。protools采用硬件运算和处理,用户可利用区段
  • 1、打开excel,在空白单元格中输入“=SIGN”,然后双击SIGN调用函数2、选择需要确定数字符号的单元格3、按回车键后,就能得出结果4
  • 现今人们都喜欢在移动产品上浏览阅读,但很多产品都不支持doc或docx格式,今天小编为大家介绍一下在Word2010中将doc文件转换成pd
  • Win8系统新增的Metro界面是专门为平板电脑所设计的,不过Metro界面很适合触摸操作对于我们一般PC电脑中操作确实有些不一样,很多朋友
手机版 电脑教程 asp之家 www.aspxhome.com