一、Docker Registry 私服简介

官方的 Docker Hub 是一个用于管理公共镜像的地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去。但是,有时候我们的服务器无法访问互联网,或者你不希望将自己的镜像放到公网当中,那么你就需要 Docker Registry,它可以用来存储和管理自己的镜像。

二、安装Docker Registry

1)使用docker compose安装:

version: '3.1'
services:
  registry:
    image: registry
    restart: always
    container_name: registry
    ports:
      - 5000:5000
    volumes:
      - /usr/local/docker/registry/data:/var/lib/registry

2)测试

3)部署 Docker Registry WebUI:

私服安装成功后就可以使用 docker 命令行工具对 registry 做各种操作了。然而不太方便的地方是不能直观的查看 registry 中的资源情况。如果可以使用 UI 工具管理镜像就更好了。

我们以 docker-registry-fontend 为例:docker-compose如下:

version: '3.1'
services:
  frontend:
    image: konradkleine/docker-registry-frontend:v2
    ports:
      - 8080:80
    volumes:
      - ./certs/frontend.crt:/etc/apache2/server.crt:ro
      - ./certs/frontend.key:/etc/apache2/server.key:ro
    environment:
      - ENV_DOCKER_REGISTRY_HOST=192.168.75.133
      - ENV_DOCKER_REGISTRY_PORT=5000

注意:请将配置文件中的主机和端口换成自己仓库的地址

运行成功后在浏览器访问:http://ip:8080

三、测试

1)我另一台客户机使用的是 Ubuntu Server 16.04 LTS 版本,属于 systemd 系统,需要在 /etc/docker/daemon.json 中增加如下内容(如果文件不存在新建该文件)

{
  "registry-mirrors": [
    "https://registry.docker-cn.com"
  ],
  "insecure-registries": [
    "ip:5000"
  ]
}

2)重新启动服务:

sudo systemctl daemon-reload
sudo systemctl restart docker
或
service docker restart

3)使用 docker info 命令手动检查:

4)测试镜像上传:

我们以 Tomcat为例测试镜像上传功能:

## 拉取一个镜像
docker pull tomcat

## 查看全部镜像
docker images

## 标记本地镜像并指向目标仓库(ip:port/image_name:tag,该格式为标记版本号)
docker tag tomcat 192.168.75.133:5000/tomcat

## 提交镜像到仓库
docker push 192.168.75.133:5000/tomcat

WebUI界面:

4)测试镜像拉取:

先删除镜像,在拉取:

docker pull 192.168.75.133:5000/nginx
01-20 18:02