【docker】docker compose 搭建私服

本文详细指导如何在CentOS上安装DockerRegistry,创建数据存储,配置docker-compose,设置前端界面,以及处理HTTPS与不安全连接的问题,包括如何在客户端和服务器端进行相应的调整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装 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
 

  1. 客户端期望 HTTPS:客户端(在这种情况下是 Docker 客户端)明确期望通过 HTTPS 进行通信,可能是因为配置了 HTTPS 或者使用了 https:// 作为 URL 的前缀。

  2. 服务器仅支持 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 请求。这通常涉及到以下步骤:

  1. 获取或生成 SSL 证书。
  2. 配置 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博客




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值