本地(私有) Docker 镜像仓库搭建和使用
本地(私有) Docker 镜像仓库搭建和使用
有时候测试一些本地项目时,需要在局域网进行 Docker 项目调试,每次拉取代码进行构建也比较麻烦,所以需要一个私有仓库来进行这些项目的调试,故作以下记录。
前提条件
- 已安装
Docker
安装 registry
registry 是 Docker 官网出的用于管理镜像的工具,可以直接用 docker 拉起,配置简单,适合个人内部测试使用;
- 以
Synology DSM 7.2.x为例,在系统中创建一个用于运行registry的目录,如:/volume1/docker/registry; - 然后在
Container Manager的项目中新增项目,填写名称,选择目录后,选择创建 docker-compose.yml,内容如下version: "3.3" services: registry: image: registry:3 container_name: registry restart: always volumes: - ./data:/var/lib/registry # 数据持久化 - ./certs:/certs # TLS证书 - ./auth:/auth # 认证文件 environment: REGISTRY_HTTP_ADDR: 0.0.0.0:80 REGISTRY_HTTP_SECRET: 1234567890 networks: default: ipv4_address: 192.168.1.45 networks: default: external: name: macvlan-net - 注:如果是其他版本的
docker compose可使用以下配置:services: registry: image: registry:2 container_name: registry restart: always volumes: - ./data:/var/lib/registry # 数据持久化 - ./certs:/certs # TLS证书 - ./auth:/auth # 认证文件 environment: REGISTRY_HTTP_ADDR: 0.0.0.0:80 networks: default: ipv4_address: 192.168.1.45 networks: default: name: macvlan-net external: true - 等待创建完成,需要保持网络畅通;
- 完成后,可访问
http://192.168.1.45/v2/_catalog看是否正常,如返回{}表示创建成功; - 此时默认没有使用
SSL加密,一般用于内网;
使用仓库
在本地使用私有仓库之前,需要在本地的 Docker 上进行一些配置才可以正常使用;
- 修改
/etc/docker/daemon.json文件(Windows直接在Settings->Docker Engine配置上修改),增加以下内容:{ "insecure-registries" : ["192.168.1.45:80"] } - 注意,一定要加上端口号,否则
Docker会报错 - 然后重启
Docker服务; - 使用以下命令测试仓库是否可用:
# 1. 构建测试镜像 docker pull nginx:alpine docker tag nginx:alpine 192.168.1.45:80/mynginx # 2. 推送镜像到仓库 docker push 192.168.1.45:80/mynginx # 3. 验证 curl http://192.168.1.45:80/v2/_catalog # 应该返回 {"repositories":["mynginx"]} - 如果没有错误,表示仓库已正常使用;
- 局域网内的设备都可在 compose.yaml 文件里使用
192.168.1.45:80作为仓库源来拉取镜像
进阶
更高级的用法可以使用 sonatype/nexus3 ,具体可参考:
https://hub.docker.com/r/sonatype/nexus3/
浙公网安备 33010602011771号