部署 Docker Registry 并配置认证登录

简介: 部署 Docker Registry 并配置认证登录
Docker Registry 官网

Docker Registry 需要 Docker 版本高于等于 1.6.0

Registry是一个无状态、高度可扩展的服务器侧应用程序,用于存储和允许您分发Docker镜像

内网环境下,可以使用 Docker Registry 来解决k8s集群的镜像拉取问题,当然,公网情况下, Docker Registry 私密性更高,比共有仓库更适合

如果需要 Docker Registry 开启认证功能,可以直接看配置 Docker Registry 认证

搭建 Docker Registry

创建本地映射目录

这个目录可以自定义,根据自身实际磁盘空间情况进行创建,将容器内的文件映射到本地,以此来达到持久化的效果
# mkdir /var/lib/registry

启动 Docker Registry

docker命令中,冒号前面的为本地路径或端口,冒号后面的为容器内部的路径或端口

-p:将本地5000端口映射给容器内的5000端口(Docker Registry默认端口),本地端口可以自定义,只要是空闲的端口即可

--restart:容器的重启策略

--name:启动的容器名称

-v:将本地目录映射到容器内的/var/lib/registry目录

-d:将容器放到后台运行

registry:镜像名,不加tag,默认拉取latest,如果本地不存在,启动容器前,会自动拉取

# docker run -p 5000:5000 \
--restart=always \
--name registry \
-v /var/lib/registry:/var/lib/registry \
-d registry

配置 Docker Registry

# vim /etc/docker/daemon.json
注意json语法格式

如果重启docker失败,日志有如下输出,表示daemon.json文件的格式有错误,注意最后是否需要加上逗号

unable to configure the Docker daemon with file /etc/docker/daemon.json: invalid character '"' after object key:value pair

"insecure-registries": ["ip:端口"]
重启docker
# systemctl daemon-reload
# systemctl restart docker

配置 Docker Registry 认证

创建 Docker Registry 认证文件目录
# mkdir /var/lib/registry_auth
创建 Docker Registry 认证文件

使用 Apache 的 htpasswd 来创建加密文件

# yum install -y httpd-tools
# htpasswd -Bbn admin admin > /var/lib/registry_auth/htpasswd

启动带认证的 Docker Registry

  • REGISTRY_AUTH=htpasswd # 以 htpasswd 的方式认证
  • REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm # 注册认证
  • REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd # 认证的用户密码
# docker run -p 5000:5000 \
--restart=always \
--name registry \
-v /var/lib/registry:/var/lib/registry \
-v /var/lib/registry_auth/:/auth/ \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
-d registry

配置 Docker Registry

# vim /etc/docker/daemon.json
注意json语法格式

如果重启docker失败,日志有如下输出,表示daemon.json文件的格式有错误,注意最后是否需要加上逗号

unable to configure the Docker daemon with file /etc/docker/daemon.json: invalid character '"' after object key:value pair

"insecure-registries": ["ip:端口"]
重启docker
# systemctl daemon-reload
# systemctl restart docker

登录 Docker Registry

  • 登录可以是免交互式,也可以是交互式的

    • docker login -u 用户名 -p 密码 ip:端口 # 一般不建议使用明文密码
    • docker login -u 用户名 -p ip:端口 # 不输入密码,回车后,使用交互式输入密码(输入的密码不会显示)
    • docker login ip:端口 # 不输入密码和用户名,回车后,使用交互式输入用户名和密码(输入的密码不会显示)
# docker login ip:端口
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
退出登录
# docker logout ip:端口

测试 Docker Registry

给镜像打上 Docker Registry 的仓库标签
# docker tag centos:7 ip:端口/centos:7
将新打标签的镜像上传镜像到仓库
# docker push ip:端口/centos:7
查看镜像,可以看到我们上传的 centos 7 这个镜像了
# curl ip:端口/v2/_catalog -u admin
Enter host password for user 'admin':
{"repositories":["centos"]}
查看镜像包含的tag

需要先使用_catalog查看镜像的名称

# curl ip:端口/v2/centos/tags/list -u admin
Enter host password for user 'admin':
{"name":"centos","tags":["8","7","7.1"]}

需要先使用_catalog查看镜像的名称

# curl ip:端口/v2/centos/tags/list -u admin
Enter host password for user 'admin':
{"name":"centos","tags":["8","7","7.1"]}
目录
相关文章
|
18小时前
|
Java 关系型数据库 Docker
docker打包部署spring boot应用(mysql+jar+Nginx)
docker打包部署spring boot应用(mysql+jar+Nginx)
|
1天前
|
监控 Cloud Native 持续交付
云原生之使用Docker部署Magma导航页
【5月更文挑战第19天】云原生之使用Docker部署Magma导航页
17 0
|
1天前
|
Java Maven Docker
Docker化Spring Boot3应用:从镜像构建到部署
本文介绍了如何在Linux上通过命令行构建和运行Spring Boot 3服务的Docker镜像。首先,基于Ubuntu创建包含JDK 21的基础镜像,然后使用Maven打包Spring Boot应用。接着,构建服务镜像,将应用和依赖添加到镜像中,并设置工作目录和暴露端口。最后,利用docker-compose部署服务,挂载宿主机目录以方便更新静态文件。Docker简化了应用部署,确保了不同环境的一致性。
29 2
Docker化Spring Boot3应用:从镜像构建到部署
|
2天前
|
Cloud Native 搜索推荐 测试技术
云原生之使用Docker部署homarr个人导航页
【5月更文挑战第18天】云原生之使用Docker部署homarr个人导航页
22 1
|
3天前
|
Cloud Native 测试技术 数据库
【云原生之Docker实战】使用Docker部署flatnotes笔记工具
【5月更文挑战第17天】使用Docker部署flatnotes笔记工具
36 8
|
4天前
|
JSON 测试技术 定位技术
【好用的个人工具】在Docker环境下部署Simple mind map思维导图工具
【5月更文挑战第16天】在Docker环境下部署Simple mind map思维导图工具
22 1
【好用的个人工具】在Docker环境下部署Simple mind map思维导图工具
|
5天前
|
监控 物联网 测试技术
【好用的个人工具】使用Docker部署Dashdot服务器仪表盘
【5月更文挑战第15天】使用Docker部署Dashdot服务器仪表盘
39 12
|
18小时前
|
网络协议 Docker 容器
Ubantu docker学习笔记(七)容器网络
Ubantu docker学习笔记(七)容器网络
|
18小时前
|
Docker 容器
Ubantu docker学习笔记(六)容器数据卷——补充实验
Ubantu docker学习笔记(六)容器数据卷——补充实验
|
18小时前
|
安全 Linux Docker
Ubantu docker学习笔记(六)容器数据卷
Ubantu docker学习笔记(六)容器数据卷
Ubantu docker学习笔记(六)容器数据卷