Docker私有仓库registry(九)

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 1.docker私有仓库registry###1.1.普通registry所谓普通的registry就是不需要认证,直接就可以上传到仓库1)安装registry镜像

1.docker私有仓库registry

###1.1.普通registry

所谓普通的registry就是不需要认证,直接就可以上传到仓库

1)安装registry镜像

[root@docker01 ~]# docker run -d -p 5000:5000 --restart=always --name registry -v /data/myregistry:/var/lib/registry registry
Unable to find image 'registry:latest' locally
latest: Pulling from library/registry
cbdbe7a5bc2a: Already exists 
47112e65547d: Pull complete 
46bcb632e506: Pull complete 
c1cc712bcecd: Pull complete 
3db6272dcbfa: Pull complete 
Digest: sha256:8be26f81ffea54106bae012c6f349df70f4d5e7e2ec01b143c46e2c03b9e551d
Status: Downloaded newer image for registry:latest
4cdd4a5ec5f5177ae16b998beaed651d5fcfd9633f1d72725024c636fb75d948
[root@docker01 ~]# 
--restart=always  表示即使重启docker容器也会自动启动

2)上传一个镜像

命令格式:


上传镜像的命令格式:docker push 镜像名

下载镜像的命令格式:docker pull 镜像名

步骤:


如果直接指定镜像名则会默认传到docker官方的镜像仓库中,不是人人都可以上传的,需要认证

因此当需要指定上传的镜像仓库时,无法直接跟url路径只能给镜像打个标签,例如1.1.1.1:5000/images

然后在使用docker push上传,由于默认是https,还需要再配置文件指定镜像仓库的地址

小扩展:不在配置文件中配置镜像仓库的地址,看下报错信息

1.先将一个镜像打个标签
docker tag zabbix/zabbix-web-nginx-mysql 192.168.81.210:5000/zabbix-web-nginx-mysql
[root@docker01 ~]# docker images
REPOSITORY                                   TAG                 IMAGE ID            CREATED             SIZE
192.168.81.210:5000/zabbix-web-nginx-mysql   latest              78ef5b16fae8        2 days ago          169MB
2.直接上传镜像
报错内容如下
[root@docker01 ~]# docker push  192.168.81.210:5000/zabbix-web-nginx-mysql
The push refers to repository [192.168.81.210:5000/zabbix-web-nginx-mysql]
Get https://192.168.81.210:5000/v2/: http: server gave HTTP response to HTTPS client
3.解决方法就是再配置文件中指定镜像仓库的地址添加为受信
一定要注意json文件中写多行配置用逗号分隔,只需做一次即可
[root@docker01 ~]# vim /etc/docker/daemon.json  
{
        "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],
        "insecure-registries": ["192.168.81.210:5000"]
}
4.再次推送
[root@docker01 ~]# docker push  192.168.81.210:5000/zabbix-web-nginx-mysql
The push refers to repository [192.168.81.210:5000/zabbix-web-nginx-mysql]
c7d4c4c251eb: Pushed 
110573809d6b: Pushed 
aade1782ce2c: Pushed 
f00e9515db6e: Pushed 
3e207b409db3: Pushed 
latest: digest: sha256:9c88d10ec90159fe60352aa5a70ec02360d2a68b1c589b98fd2b7d06134a82d8 size: 1367

3)完整过程

就是打标签加推送即可

[root@docker01 ~]# docker tag zabbix/zabbix-java-gateway:latest  192.168.81.210:5000/zabbix-java-gateway
[root@docker01 ~]# docker push 192.168.81.210:5000/zabbix-java-gateway
The push refers to repository [192.168.81.210:5000/zabbix-java-gateway]
03ea0be04121: Pushed 
ff6241fd382e: Pushed 
d27aea6a2d4e: Pushed 
96e014442158: Pushed 
7505c2a793ad: Pushed 
3e207b409db3: Mounted from zabbix-web-nginx-mysql 
latest: digest: sha256:cd437020aa5461e5177b9fe99c84b59aa455ffefff3e9fbd1ec81de6d0d31f76 size: 1571
由于刚刚做了数据卷,因此可以在/data/myregistry目录看到上传的镜像
[root@docker01 ~]# ls /data/myregistry/docker/registry/v2/repositories/
zabbix-java-gateway  zabbix-web-nginx-mysql

1.2.带basic认证的registry

1)创建认证用户和认证文件

[root@docker01 ~]# yum -y install httpd-tools
[root@docker01 ~]# mkdir /data/myregistry_auth
[root@docker01 ~]# cd /data/myregistry_auth
[root@docker01 myregistry_auth]# htpasswd -Bbn admin admin >> registry_htpasswd 
[root@docker01 myregistry_auth]# cat registry_htpasswd 
admin:$2y$05$VI3tsyFXIsB12nC5G.ANdexGMr3p2U4IY1FewUOMo5A1PievsFu3m
htpasswd参数
-B 强制对密码进行bcrypt加密(非常安全)。
-n 不更新文件;在标准输出上显示结果。
-b 从命令行使用密码,而不是提示输入密码。

2)运行registry容器

[root@docker01 ~]# docker run -itd -p 7000:5000 -v /data/myregistry:/var/lib/registry -v /data/myregistry_auth/:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/registry_htpasswd" registry
6cc059b68aeecdc410c8be3e06c0398d26158a0dd59b6a6d131efcc1686a0e1c

3)登录容器

因为是认证的所有需要登录一下,只登录一次就可以,会把认证写到/root/.docker/config.jsonimage.png

1.首先在配置文件增加镜像仓库的地址
[root@docker01 ~]# vim /etc/docker/daemon.json 
{
  "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],
  "insecure-registries": ["192.168.81.210:5000"],
  "insecure-registries": ["192.168.81.210:7000"]
}
2.重启docker
[root@docker01 ~]# systemctl restart docker
3.登录registry认证
[root@docker01 ~]# docker login 192.168.81.210:7000
Username: admin
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
4.推送镜像
[root@docker01 ~]# docker push 192.168.81.210:7000/mysql
The push refers to repository [192.168.81.210:7000/mysql]
c90a34afcab0: Pushed 
ac7657905788: Pushed 
8f0182ef7c8c: Pushed 
91ae264962fb: Pushed 
3a2464d8e0c0: Pushed 
44853bb67274: Pushed 
61cbb8ea6481: Pushed 
66c45123fd43: Pushed 
c3f46b20a0d3: Pushed 
365386a39e0e: Pushed 
13cb14c2acd3: Pushed 
latest: digest: sha256:0563b36ec2d1a262f79e1d8562e61f642a0f64f93306d8a709047cdea0444d0a size: 2621
5.查看数据卷上的镜像
[root@docker01 ~]# ls /data/myregistry/docker/registry/v2/repositories/
mysql  zabbix-java-gateway  zabbix-server-mysql  zabbix-web-nginx-mysql
相关实践学习
通过workbench远程登录ECS,快速搭建Docker环境
本教程指导用户体验通过workbench远程登录ECS,完成搭建Docker环境的快速搭建,并使用Docker部署一个Nginx服务。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
3月前
|
存储 数据可视化 数据安全/隐私保护
使用 Docker Compose 部署 Docker Registry
【1月更文挑战第2天】 在内网环境中,我们期望能够在本地共享镜像。为了解决这一问题,Docker Registry成为了我们的救星。Docker Registry是一个用于存储和管理Docker镜像的开源工具。通过在本地部署Docker Registry,您可以轻松地构建、存储和分享自己的Docker镜像。
160 3
使用 Docker Compose 部署 Docker Registry
|
4月前
|
关系型数据库 MySQL Linux
Linux 本地 Docker Registry本地镜像仓库远程连接
Linux 本地 Docker Registry本地镜像仓库远程连接
121 0
|
5月前
|
JSON Kubernetes Docker
k8s 集群中运行 docker registry 镜像仓库
k8s 集群中运行 docker registry 镜像仓库
630 0
|
7月前
|
存储 网络安全 数据安全/隐私保护
Docker harbor私有仓库部署与管理-2
Docker harbor私有仓库部署与管理
113 0
|
7月前
|
应用服务中间件 nginx 数据安全/隐私保护
Docker harbor私有仓库部署与管理-1
Docker harbor私有仓库部署与管理
144 0
|
1月前
|
存储 Java Maven
|
1月前
|
关系型数据库 MySQL Linux
如何在Linux上搭建本地Docker Registry镜像仓库并实现公网访问
如何在Linux上搭建本地Docker Registry镜像仓库并实现公网访问
101 0
|
7月前
|
数据库 数据安全/隐私保护 Docker
Docker harbor私有仓库部署与管理-3
Docker harbor私有仓库部署与管理
110 0
|
3月前
|
关系型数据库 MySQL Linux
Docker Registry本地镜像仓库部署并实现远程连接拉取镜像
Docker Registry本地镜像仓库部署并实现远程连接拉取镜像
161 1
|
4月前
|
Kubernetes 安全 测试技术
Docker|kubernetes|本地镜像批量推送到Harbor私有仓库的脚本
Docker|kubernetes|本地镜像批量推送到Harbor私有仓库的脚本
110 0