Docker

Docker - How to Deploy a Private

2020-12-30  本文已影响0人  红薯爱帅
Docker Registry

1. 概述

公开的docker镜像仓库有很多,资源也很丰富,例如dockerhub

但是,基于各种需求,我们可能需要搭建自己的私有镜像仓库,可能是为了镜像文件的安全,也可能是为了节省集群对外的网络带宽。

本文简单介绍docker私有仓库的搭建步骤,入门学习而已,高级玩法还需要深入研究。

Docker

2. 通过docker启动registry

2.1. 创建htpasswd文件

$ mkdir docker-repo
$ cd docker-repo
$ sudo apt install apache2-utils
$ htpasswd -Bbn testuser testpassword > htpasswd

2.2. 两种启动方式

$ docker pull registry:2.7
$ docker run -d \
  -p 5000:5000 \
  --restart=always \
  --name registry:2.7 \
  -v /mnt/registry:/var/lib/registry \
  -v "$(pwd)"/htpasswd:/auth/htpasswd \
  -e "REGISTRY_AUTH=htpasswd" \
  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
  -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
  registry:2
$ docker pull registry:2.7
$ cat docker-compose.yml
version: '2.3'
services:
  docker-repo:
    image: 'registry:2.7'
    restart: always
    volumes:
      - ./registry:/var/lib/registry
      - ./htpasswd:/auth/htpasswd
    environment:
      - REGISTRY_AUTH=htpasswd
      - REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm
      - REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd
    ports:
      - 5000:5000
$ docker-compose up -d

3. 测试

3.1. login private registry

$ cat /etc/hosts
127.0.0.1 test-vm1

$ cat /etc/docker/daemon.json
{
    "insecure-registries": ["test-vm1:5000"]
}
$ cat /etc/docker/daemon.json
{
    "insecure-registries": ["127.0.0.1:5000"]
}
$ docker login test-vm1:5000
Username: testuser
Password: 

Login Succeeded

3.2. push images to private registry

$ docker pull ubuntu:20.04
$ docker pull redis:5.0
$ docker tag ubuntu:20.04 test-vm1:5000/ubuntu:20.04
$ docker tag redis:5.0 test-vm1:5000/redis:5.0
$ docker push test-vm1:5000/ubuntu:20.04
$ docker push test-vm1:5000/redis:5.0

3.3. docker pull from private registry

$ docker pull test-vm1:5000/ubuntu:20.04
$ docker pull test-vm1:5000/redis:5.0
$ tree registry/ -L 5
registry/
└── docker
    └── registry
        └── v2
            ├── blobs
            │   └── sha256
            └── repositories
                ├── redis
                └── ubuntu
$ curl -u 'testuser:testpassword' localhost:5000/v2/_catalog
{"repositories":["redis","ubuntu"]}
$ curl -u 'testuser:testpassword' localhost:5000/v2/redis/tags/list
{"name":"redis","tags":["5.0"]}

4. References

上一篇 下一篇

猜你喜欢

热点阅读