安装 Docker Registry
创建目录
mkdir -pv /usr/local/docker/registry
mkdir -pv /usr/local/docker/data
创建 docker-compose.yml文件
进入目录创建docker-compose.yml
cd /usr/local/docker/registry
touch docker-compose.yml
编辑docker-compose.yml
vim docker-compose.yml
添加下面内容
version: '3'
services:
registry:
image: registry
restart: always
container_name: registry
ports:
- 5000:5000
volumes:
- /usr/local/docker/data:/var/lib/registry
启动容器
docker-compose up -d
安装 Docker RegistryWeb页面
创建目录
mkdir -pv /usr/local/docker/docker-registry-frontend
创建 docker-compose.yml文件
进入目录创建docker-compose.yml
cd /usr/local/docker/docker-registry-frontend
touch docker-compose.yml
编辑docker-compose.yml
vim docker-compose.yml
添加下面内容
version: '3'
services:
frontend:
image: konradkleine/docker-registry-frontend:v2
ports:
- 8880:80
volumes:
- /usr/local/docker/data:/var/lib/registry
environment:
- ENV_DOCKER_REGISTRY_HOST=127.0.0.1
- ENV_DOCKER_REGISTRY_PORT=5000
注释: - ENV_DOCKER_REGISTRY_HOST=127.0.0.1 :Docker仓库的IP
启动容器
docker-compose up -d
浏览器访问
地址:http://ip:8880
效果如下:
注意事项:
docker-registry-frontend
已停止更新,但它的功能基本上满足一般需求。- 如果需要使用其他端口或地址,确保在
docker-compose.yml
和 Docker 客户端配置中进行相应的更改。 - 如果是生产环境,可能需要进一步配置和优化应用程序和安全设置。
配置客户端
编辑daemon.json
vi /etc/docker/daemon.json
增加内容
{
"registry-mirrors": [
"https://hub-mirror.c.163.com/"
],
"insecure-registries": [
"Docker仓库IP:5000"
]
}
重新启动服务
systemctl daemon-reload
systemctl restart docker
上传私服
查看镜像
docker images
对镜像打tag
语法:docker tag IMAGE[:TAG] [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG]
注意:如果 Registry 监听在默认的 5000 端口上,通常不需要在地址中显式指定端口号。
docker tag demo:v1 192.168.0.1:5000/demo:v1
镜像push
语法:docker push <registry-host>:<registry-port>/<repository>:<tag>
docker push 192.168.22.179:5000/demo:v1
查看镜像
curl 192.168.0.1:5000/v2/_catalog
浏览器查看
问题1:
推送的时候
Get "https://192.168.0.1:5000/v2/": http: server gave HTTP response to HTTPS client
-
客户端期望 HTTPS:客户端(在这种情况下是 Docker 客户端)明确期望通过 HTTPS 进行通信,可能是因为配置了 HTTPS 或者使用了
https://
作为 URL 的前缀。 -
服务器仅支持 HTTP:服务器配置为仅接受 HTTP 请求,而不是 HTTPS。
要解决这个问题,你可以采取以下几种方法之一:
方法 1:更改客户端以使用 HTTP
如果你的 Docker Registry 服务器没有配置 SSL/TLS(即没有 HTTPS 支持),你需要确保 Docker 客户端使用 HTTP 而不是 HTTPS 来访问它。这意味着你需要将所有的 https://
替换为 http://
。
例如,如果你之前使用命令:
docker push https://192.168.0.1:5000/demo:tag
你需要更改为:
docker push http://192.168.0.1:5000/demo:tag
方法 2:配置服务器以支持 HTTPS
如果你希望 Docker Registry 通过 HTTPS 提供服务,你需要在服务器上安装 SSL 证书并配置它以接受 HTTPS 请求。这通常涉及到以下步骤:
- 获取或生成 SSL 证书。
- 配置 Docker Registry 以使用 SSL 证书。
方法 3:强制 Docker 客户端接受 HTTP
作为临时解决方案,你可以尝试在 Docker 客户端配置文件中添加一个不安全的项,以允许通过 HTTP 连接到 Registry。这可以通过编辑 /etc/docker/daemon.json
文件来实现,添加以下内容:
{ "insecure-registries" : ["192.168.0.1:5000"] }
然后,重启 Docker 服务:
sudo systemctl restart docker
请注意,这种方法可能会带来安全风险,因为它允许不安全的连接,所以不推荐在生产环境中使用。
方法 4:检查 Docker Registry 配置
确保 Docker Registry 配置正确。如果你使用的是 Docker Registry 的默认配置,通常它不会自动配置 HTTPS。你可能需要手动编辑配置文件来添加 HTTPS 支持。
下面是最近更新的文章:
【docker 】 安装docker(centOS7)-CSDN博客
【docker】常用命令-CSDN博客
【docker】centos7配置docker镜像加速_docker仓库加速地址-CSDN博客
【docker】Hello World-CSDN博客
【docker 】Compose 使用介绍_docker compose 使用-CSDN博客
【docker 】Compose安装-CSDN博客
【docker 】Dockerfile指令学习-CSDN博客
【docker】网络使用和配置_docker 启动使用host mode-CSDN博客
【docker】数据管理-CSDN博客
【docker】安装openjdk-CSDN博客
【docker】Spring Boot3.x 打包 Docker容器-CSDN博客
【docker】docker compose 搭建私服-CSDN博客
【docker】开放Docker端口-CSDN博客
【docker】maven 打包docker的插件学习-CSDN博客
【docker 】Windows10安装Docker Desktop - WSL update failed-CSDN博客