【八】docker私有化镜像仓库部署

docker私有化镜像仓库部署

部署docker仓库,并添加http访问认证

为 Registry 添加 HTTP 基本认证

创建 htpasswd 认证文件

bash 复制代码
# 1. 安装 htpasswd 工具(如果没有)
sudo apt update && sudo apt install apache2-utils -y

# 2. 创建认证文件存放目录
mkdir -p ~/DockerRegistry/auth

# 3. 创建用户(替换 your-username 和 your-password)
htpasswd -Bbn your-username your-password > ~/DockerRegistry/auth/htpasswd

# 4. 添加更多用户(可选)
htpasswd -Bbn another-user another-password >> ~/DockerRegistry/auth/htpasswd

# 5. 查看已创建的用户
cat ~/DockerRegistry/auth/htpasswd

docker-compose.yml编排文件

yml 复制代码
version: '3.8'

services:
  registry-server:
    image: registry:2.8.2
    container_name: docker-registry
    restart: always
    ports:
      - "5000:5000"
    volumes:
      - ./registry-data:/var/lib/registry
      - ./auth:/auth
    environment:
      # 仅需启用删除功能,无需任何CORS配置
      - REGISTRY_STORAGE_DELETE_ENABLED=true
      # 启用 htpasswd 认证
      - REGISTRY_AUTH=htpasswd
      - REGISTRY_AUTH_HTPASSWD_REALM="Registry Realm"
      - REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd
 
  registry-ui:
    image: joxit/docker-registry-ui:main
    container_name: docker-registry-ui
    restart: always
    ports:
      - "8888:80"
    environment:
      # 关键:启用代理模式,UI将作为Registry的反向代理
      - SINGLE_REGISTRY=true
      - REGISTRY_TITLE=My Private Docker Registry
      - DELETE_IMAGES=true
      # 指向Registry服务,UI会代理此地址
      - NGINX_PROXY_PASS_URL=http://registry-server:5000
    depends_on:
      - registry-server

UI 界面如何使用认证

(1)登录:http://192.168.11.103:8888/ 弹窗提醒输入账号密码即可

(2)或者修改 UI 的环境变量,让它自动携带认证信息

yml 复制代码
registry-ui:
  image: joxit/docker-registry-ui:main
  container_name: docker-registry-ui
  restart: always
  ports:
    - "8080:80"
  environment:
    - SINGLE_REGISTRY=true
    - REGISTRY_TITLE=My Private Docker Registry
    - DELETE_IMAGES=true
    - NGINX_PROXY_PASS_URL=http://registry-server:5000
    # 添加认证信息(注意:密码会明文存在于环境变量中)
    - REGISTRY_USERNAME=your-username
    - REGISTRY_PASSWORD=your-password
  depends_on:
    - registry-server

客户端使用方式

配置 insecure-registries

由于使用的是 HTTP 而非 HTTPS,Docker 客户端需要配置信任:

Linux下:

bash 复制代码
sudo nano /etc/docker/daemon.json
bash 复制代码
{
    "registry-mirrors": [
        "https://ghcr.nju.edu.cn",
        "https://docker.1ms.run"
    ],
    "runtimes": {
        "nvidia": {
            "args": [],
            "path": "nvidia-container-runtime"
        }
    },
    "insecure-registries": ["localhost:5000","192.168.11.103:8888","localhost:8888"]

}

window下:

配置之后重启docker

sudo systemctl restart docker

操作镜像

bash 复制代码
# 1. 登录(会提示输入密码)
docker login 192.168.11.103:8888
# 输入用户名: xxx
# 输入密码: xxxxx

# 2. 推送镜像
docker tag ghcr.io/open-webui/open-webui:v0.8.12-cuda   192.168.11.103:8888/open-webui:v0.8.12-cuda
docker push 192.168.11.103:8888/open-webui:v0.8.12-cuda

# 3. 拉取镜像
docker pull 192.168.11.103:8888/open-webui:v0.8.12-cuda

# 4. 登出(可选)
docker logout 192.168.11.103:8888
相关推荐
艾莉丝努力练剑2 小时前
【Linux线程】Linux系统多线程(四):线程ID及进程地址空间布局,线程封装
java·linux·运维·服务器·c语言·c++·学习
SCBAiotAigc2 小时前
2026.4.10:docker desktop内网环境安装教程
人工智能·docker·容器·具身智能
饼瑶2 小时前
Isaac Sim 5.0.0 Docker 部署手册(实验室服务器)
服务器·docker·容器
dddddppppp1232 小时前
linux head.s 从第一条指令到start_kernel
linux·运维·服务器
BioRunYiXue2 小时前
AlphaGenome:DeepMind 新作,基因组学迎来 Alpha 时刻
java·linux·运维·网络·数据库·人工智能·eclipse
此刻觐神2 小时前
IMX6ULL开发板学习-04(Linux磁盘管理相关命令)
linux·运维·学习
wb1892 小时前
docker-ce容器技术重习
运维·笔记·docker·容器·云计算
jiayong232 小时前
第 4 课:怎么把一个大页面拆成多个组件
运维·服务器·前端
qq_8573058192 小时前
ubuntu 22 源码安装bochs
linux·运维·ubuntu
A-刘晨阳2 小时前
麒麟v10桌面版2403版本运行程序提示权限不足(KYSEC)
运维·云计算·操作系统·银河麒麟·麒麟桌面系统