云服务器部署可视化Docker私有仓库(Ubuntu)

云服务器部署可视化Docker私有仓库(Ubuntu)

这里测试的机器为ubuntu22.04

一、环境安装

docker安装就不赘述了
先升级,再从官方仓库安装docker compose

language-bash
1
2
3
apt update
apt upgrade
apt install docker-compose

二、部署私有仓库UI

Docker提供了一个叫registry的镜像,给大家搭建私有仓库,但是没有可视化界面。
https://hub.docker.com/r/joxit/docker-registry-ui
这个镜像在registry基础之上,开发了网页可视化。

1. 创建一个文件夹Docker_Registry

2. 进入其中继续创建registry-data文件夹和docker-compose.yaml文件

3. yaml文件

language-yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
version: '3.8'

services:
registry-ui:
image: joxit/docker-registry-ui:main
restart: always
ports:
- 8090:80 #这里8090改成可视化网页服务端口
environment:
- SINGLE_REGISTRY=true
- REGISTRY_TITLE=Xiamu Docker Registry UI #这里可以修改标题
- DELETE_IMAGES=true
- SHOW_CONTENT_DIGEST=true
- NGINX_PROXY_PASS_URL=http://registry-server:5000
- SHOW_CATALOG_NB_TAGS=true
- CATALOG_MIN_BRANCHES=1
- CATALOG_MAX_BRANCHES=1
- TAGLIST_PAGE_SIZE=100
- REGISTRY_SECURED=false
- CATALOG_ELEMENTS_LIMIT=1000
container_name: registry-ui
depends_on:
- registry-server

registry-server:
image: registry:2.8.2
restart: always
environment:
REGISTRY_HTTP_HEADERS_Access-Control-Origin: '[http://your_server_ip]' # 这里改成你的云服务ip,启用CORS
REGISTRY_HTTP_HEADERS_Access-Control-Allow-Methods: '[HEAD,GET,OPTIONS,DELETE]'
REGISTRY_HTTP_HEADERS_Access-Control-Credentials: '[true]'
REGISTRY_HTTP_HEADERS_Access-Control-Allow-Headers: '[Authorization,Accept,Cache-Control]'
REGISTRY_HTTP_HEADERS_Access-Control-Expose-Headers: '[Docker-Content-Digest]'
REGISTRY_STORAGE_DELETE_ENABLED: 'true'
volumes:
- ./registry-data:/var/lib/registry
container_name: registry-server

4. 部署

进入Docker_Registry目录,执行

language-bash
1
docker-compose -f ./docker-compose.yaml up

三、访问

通过http://your_server_ip:8090 访问UI

四、上传和拉取镜像

打开vi /etc/docker/daemon.json添加以下内容:

language-txt
1
"insecure-registries":["http://your_server_ip:8090"]

这样docker才会信任你的私有仓库。

假设你的服务器ip为192.168.750.101,port为8090
推送镜像到私有镜像服务必须先tag,步骤如下:

  1. 重新tag本地镜像,名称前缀为私有仓库的地址: 192.168.150.101:8090/
language-dart
1
docker tag nginx:latest 192.168.150.101:8090/nginx:1.0
  1. 推送镜像
language-dart
1
docker push 192.168.150.101:8090/nginx:1.0
  1. 拉取镜像
language-dart
1
docker pull 192.168.150.101:8090/nginx:1.0