CentOs中docker 安装私有仓库,并通过https方式上传镜像

CentOs中docker 安装私有仓库,并通过https方式上传镜像

安装仓库registry, Tag为2

[weshzhu@weshzhu ~]$ docker pull registry:2

2: Pulling from library/registry

Digest: sha256:672d519d7fd7bbc7a448d17956ebeefe225d5eb27509d8dc5ce67ecb4a0bce54

Status: Image is up to date for registry:2

查看仓库,此时先不启动容器。

[zsd@greenvm-z16786v1 certs]$ docker images

REPOSITORY            TAG                IMAGE ID            CREATED            SIZE

registry              2                  d1fd7d86a825        4 weeks ago        33.3MB

通过OpenSSL工具生成自签名的证书,后面将用于对请求进行校验

对于证书以及OpenSSL, 请移目那些证书相关的玩意儿

首先找到OpenSSL工具配置文件openssl.cnf,对于Centos,目录在/etc/pki/tls/中

[weshzhu@weshzhu ~]$ cd /etc/pki/tls/

[weshzhu@weshzhu tls]$ ll

total 12

lrwxrwxrwx. 1 root root    49 Jan 26 19:10 cert.pem -> /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem

drwxr-xr-x. 2 root root  193 Feb  7 21:42 certs

drwxr-xr-x. 2 root root    74 Jan 26 19:10 misc

-rw-r--r--. 1 root root 10955 Feb  7 20:12 openssl.cnf

drwxr-xr-x. 2 root root    6 Aug  4  2017 private

编辑openssl.cnf,在[v3_ca]下面添加:subjectAltName = IP:域名|IP地址

[ v3_ca ]

subjectAltName = IP:172.10.15.110

否则将会报错:

x509: cannot validate certificate for because it doesn't contain any IP SANs

这是因为在证书中,要包含一些信息,比如国家、机构等等,好像访问的私有仓库ip或者域名必须要有,否则不予通过,就会报上面的错误。如果有读者发现此处有错误,请在下方提出。谢谢!

修改完openssl配置文件后,可以生产私有证书,要记住生成证书的目录,后面会用到。

[weshzhu@weshzhu certs]$ sudo openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout registry.key -out registry.crt

[sudo] password for weshzhu:

Generating a 2048 bit RSA private key

.................................................................................................................................................+++

.........................................................................................................................................................+++

writing new private key to 'registry.key'

-----

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) [XX]:      #该处让交互输入国家、省等,可以直接Enter跳过

State or Province Name (full name) []:

Locality Name (eg, city) [Default City]:

Organization Name (eg, company) [Default Company Ltd]:

Organizational Unit Name (eg, section) []:

Common Name (eg, your name or your server's hostname) []:172.10.15.110  #该处输入私有仓库的ip地址或者域名

Email Address []:

可以看到在当前目录中,有*.crt 和 *.key文件

[weshzhu@weshzhu certs]$ ll

total 8

-rw-r--r--. 1 root root 1306 Feb  8 15:04 registry.crt

-rw-r--r--. 1 root root 1704 Feb  8 15:04 registry.key

将生成的私有证书追加到系统的证书管理文件中,否则后面push和login和pull时会报如下错误:

[root@greenvm-z16786v1 certs]# cat ./registry.crt >> /etc/pki/tls/certs/ca-bundle.crt

未cat到系统的crt文件中

[weshzhu@weshzhu ~]$ docker push 192.168.0.123/rabbitmq:3.7

The push refers to repository [192.168.0.123/rabbitmq]

Get https:///v2/: x509: certificate signed by unknown authority

重启docker, 该步骤一定不要省略,否则有可能加载私钥失败 systemctl restart docker

启动私有仓库镜像 registry 注意:在启动时,有参数需要配置

docker run -d -p 443:443 --name registry -v /deploy/certs:/certs -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/registry.crt -e REGISTRY_HTTP_TLS_KEY=/certs/registry.key registry:2

-d 后台运行 -p 443:443 将容器的端口443映射到主机的443端口 --name 给容器起个名字 registry -v /deploy/certs:/certs 主机的目录/deploy/certs映射到容器的/certs ,目的是将生成的私有证书映射到容器中 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/registry.crt 指定TLS协议验证的证书目录:该目录为容器的registry.crt所在的目录 -e REGISTRY_HTTP_TLS_KEY=/certs/registry.key 指定TLS协议使用的key的目录:该目录为容器的registry.key所在的目录

上面的步骤按顺序操作完成后,可以尝试docker push一个镜像到私有仓库中。 查看docker安装了哪些镜像:

[zsd@greenvm-z16786v1 certs]$ docker images

REPOSITORY            TAG                IMAGE ID            CREATED            SIZE

registry              2                  d1fd7d86a825        4 weeks ago        33.3MB

nginx                latest              3f8a4339aadd        6 weeks ago        108MB

将上传的镜像重新Tag一下:

docker tag nginx[:tag] [ipaddress]/nginx

#:tag 为镜像的tag,如果该镜像的tag为latest,则可以省略

#[ipaddress] 为私有仓库的ip地址或域名,也就是上面步骤在openssl中添加的`subjectAltName = IP:172.10.15.110`地址或域名

查看镜像,发现多了一个以ip地址为开头的image

[zsd@greenvm-z16786v1 certs]$ docker images

REPOSITORY            TAG                IMAGE ID            CREATED            SIZE

registry              2                  d1fd7d86a825        4 weeks ago        33.3MB

192.168.0.181/nginx  latest              3f8a4339aadd        6 weeks ago        108MB

nginx                latest              3f8a4339aadd        6 weeks ago        108MB

此时push该带ip地址的镜像到私有仓库中

[root@greenvm-z16786v1 certs]# docker push 172.28.8.124/nginx

The push refers to repository [172.28.8.124/nginx]

a103d141fc98: Pushed

73e2bd445514: Pushed

2ec5c0a4cb57: Pushing [===========================================>      ]  48.2MB/55.26MB

[root@greenvm-z16786v1 certs]# docker push 172.28.8.124/nginx

The push refers to repository [172.28.8.124/nginx]

a103d141fc98: Pushed

73e2bd445514: Pushed

2ec5c0a4cb57: Pushed

latest: digest: sha256:926b086e1234b6ae9a11589c4cece66b267890d24d1da388c96dd8795b2ffcfb size: 948

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,783评论 5 472
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,396评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,834评论 0 333
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,036评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,035评论 5 362
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,242评论 1 278
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,727评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,376评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,508评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,415评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,463评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,140评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,734评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,809评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,028评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,521评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,119评论 2 341

推荐阅读更多精彩内容