Docker6️⃣私有镜像仓库
1、搭建
基于 DockerHub 提供的 DockerRegistry 来实现。
以下 2 种搭建方式
- 简化版,没有 UI 界面。
- 带 UI 界面(建议)
1.1、简化版
具备仓库管理的完整功能,没有 UI 界面。
-
-v
:将容器的 /var/lib/registry 目录,挂载到数据卷 registry-data(私有镜像仓库的数据存放目录) -
访问
http://YourIp:5000/v2/_catalog
,查看当前私有镜像仓库中的镜像。docker run -d \ --restart=always \ --name registry \ -p 5000:5000 \ -v registry-data:/var/lib/registry \ registry
1.2、UI 界面版(❗)
基于
DockerCompose
,部署带 UI 界面的 DockerRegistry。
1.2.1、配置 Docker 信任地址
服务器采用 http 协议,默认不被 Docker 信任。
-
添加配置内容
vi /etc/docker/daemon.json # 添加内容 "insecure-registries":["http://服务器IP:8080"]
-
重启:daemon 和 Docker
systemctl daemon-reload systemctl restart docker
1.2.2、Docker Compose
新建空文件夹,用于创建私有镜像仓库
切换到该文件夹
-
编写
docker-compose.yml
version: '3.0' services: registry: image: registry volumes: - ./registry-data:/var/lib/registry ui: image: joxit/docker-registry-ui:static ports: - 8080:80 environment: - REGISTRY_TITLE=仓库名 - REGISTRY_URL=http://registry:5000 depends_on: - registry
-
部署
docker-compose up -d
-
访问私有仓库:地址为
宿主机 IP:映射端口号
2、推拉镜像
2.1、步骤
-
重命名镜像:前缀为私有仓库的地址(
宿主机 IP:映射端口号
)docker tag 原镜像名 前缀/镜像名
-
推拉镜像
docker push 前缀/镜像名 docker pull 前缀/镜像名
2.2、case
以 Nginx 为例
2.2.1、推送
-
重命名:从镜像详情可见,是在原镜像基础上拷贝并重命名。
-
推送:若报错,检查 http 信任地址,镜像命名。
-
docker push 192.168.88.10:8080/mynginx
-
2.2.2、拉取
-
删除本地所有 Nginx 镜像
docker rmi -f nginx:latest 192.168.88.10:8080/mynginx:1.0
-
拉取镜像
-
docker pull 192.168.88.10:8080/mynginx:1.0
-