Строительство частного склада Docker

Docker

Статья впервые опубликована на паблике «Программист Фруктов».

адрес:Tickets.WeChat.QQ.com/Yes/TooBH6KT4i5…

1. Введение

В Docker, когда мы запускаем docker pull xxx, он на самом деле ищет адрес register.hub.docker.com, который является общедоступным репозиторием, предоставляемым Docker. На работе мы не можем выкладывать корпоративные проекты на публичные склады для управления. Таким образом, чтобы лучше управлять образами, Docker не только предоставляет центральный репозиторий, но также позволяет нам создавать локальные частные репозитории. В этой статье рассказывается о создании двух частных складов, регистратуры и гавани.

Во-вторых, создание реестра

1. Построить

Docker официально предоставляет образ для создания частного складаregistry, просто скачайте образ, запустите контейнер и выставьте порт 5000, можете пользоваться.

docker pull registry:2
docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --name myregistry registry:2

Служба реестра по умолчанию сохранит загруженный образ в /var/lib/registry контейнера.Мы монтируем каталог хоста /opt/registry в этот каталог, чтобы сохранить образ в каталог хоста /opt/registry.

Доступ к браузеру http://127.0.0.1:5000/v2, и следующие условия имеют следующие условия.

2. Проверка

Теперь проверьте это, отправив образ в реестр.

Посмотрите локальное зеркало:

$ docker images
REPOSITORY                                             TAG                 IMAGE ID            CREATED             SIZE
nginx                                                  latest              568c4670fa80        5 weeks ago         109MB
ubuntu                                                 latest              93fd78260bd1        7 weeks ago         86.2MB
elasticsearch                                          6.5.1               32f93c89076d        7 weeks ago         773MB

Чтобы пометить образ как отправленный в частный репозиторий с помощью тега docker:

docker tag nginx:latest localhost:5000/nginx:latest

Отправьте образ nginx в приватный репозиторий с помощью команды docker push:

docker push localhost:5000/nginx:latest

доступhttp://127.0.0.1:5000/v2/_catalogГлядя на каталог частного репозитория, вы можете увидеть только что загруженное изображение:

Чтобы скачать образ приватного репозитория, используйте следующую команду:

docker pull localhost:5000/镜像名:版本号
例如
docker pull localhost:5000/nginx:latest

Во-вторых, строительство гавани

Реестр частного хранилища, официально предоставляемый докером, прост в использовании, но имеет недостатки в функциях управления. Harbour – это сервер реестра корпоративного уровня для хранения и распространения образов Docker. Для завершения работы Harbour использует официальный сервис реестра Docker (именованный дистрибутив v2). На основе дистрибутива докеров гавань добавляет некоторые функции безопасности, контроля доступа и управления для удовлетворения потребностей предприятий в хранилищах образов.

1. Построить

скачать

адрес:GitHub.com/go гавань/ха…Эта статья есть v1.2.2

настроить

Разархивируйте загруженный установочный пакет гавань-офлайн-установщик-v1.2.2.tgz

tar -xvf harbor-offline-installer-v1.2.2.tgz

Изменить harbour.cfg

#hostname 改为本地ip,非 Mac OS系统 可以不指定端口
hostname = 192.168.31.143:9090
#设置secretkey_path 的路径为 当前目录的data下
secretkey_path = ./data

Следует отметить, что пользователям, не являющимся пользователями Mac, достаточно изменить имя хоста в harbour.cfg, чтобы создать образ и запустить службу напрямую через ./install.sh. Нет необходимости изменять secretkey_path и docker-compose.yml ниже

Изменить docker-compose.yml

Поскольку Harbour использует много каталогов, MAC имеет много каталогов, которые не допускаются, поэтому, если это пользователь MAC, вам нужно изменить каталог монтирования в Docker-Compose.yml, модифицированный Docker-Compose.yml выглядит следующим образом :

version: '2'
services:
  log:
    image: vmware/harbor-log:v1.2.2
    container_name: harbor-log 
    restart: always
    volumes:
      - ./log/:/var/log/docker/:z
    ports:
      - 127.0.0.1:1514:514
    networks:
      - harbor
  registry:
    image: vmware/registry:2.6.2-photon
    container_name: registry
    restart: always
    volumes:
      - ./data/registry:/storage:z
      - ./common/config/registry/:/etc/registry/:z
    networks:
      - harbor
    environment:
      - GODEBUG=netdns=cgo
    command:
      ["serve", "/etc/registry/config.yml"]
    depends_on:
      - log
    logging:
      driver: "syslog"
      options:  
        syslog-address: "tcp://127.0.0.1:1514"
        tag: "registry"
  mysql:
    image: vmware/harbor-db:v1.2.2
    container_name: harbor-db
    restart: always
    volumes:
      - ./data/database:/var/lib/mysql:z
    networks:
      - harbor
    env_file:
      - ./common/config/db/env
    depends_on:
      - log
    logging:
      driver: "syslog"
      options:  
        syslog-address: "tcp://127.0.0.1:1514"
        tag: "mysql"
  adminserver:
    image: vmware/harbor-adminserver:v1.2.2
    container_name: harbor-adminserver
    env_file:
      - ./common/config/adminserver/env
    restart: always
    volumes:
      - ./data/config/:/etc/adminserver/config/:z
      - ./data/secretkey:/etc/adminserver/key:z
      - ./data/:/data/:z
    networks:
      - harbor
    depends_on:
      - log
    logging:
      driver: "syslog"
      options:  
        syslog-address: "tcp://127.0.0.1:1514"
        tag: "adminserver"
  ui:
    image: vmware/harbor-ui:v1.2.2
    container_name: harbor-ui
    env_file:
      - ./common/config/ui/env
    restart: always
    volumes:
      - ./common/config/ui/app.conf:/etc/ui/app.conf:z
      - ./common/config/ui/private_key.pem:/etc/ui/private_key.pem:z
      - ./data/secretkey:/etc/ui/key:z
      - ./data/ca_download/:/etc/ui/ca/:z
      - ./data/psc/:/etc/ui/token/:z
    networks:
      - harbor
    depends_on:
      - log
      - adminserver
      - registry
    logging:
      driver: "syslog"
      options:  
        syslog-address: "tcp://127.0.0.1:1514"
        tag: "ui"
  jobservice:
    image: vmware/harbor-jobservice:v1.2.2
    container_name: harbor-jobservice
    env_file:
      - ./common/config/jobservice/env
    restart: always
    volumes:
      - ./data/job_logs:/var/log/jobs:z
      - ./common/config/jobservice/app.conf:/etc/jobservice/app.conf:z
      - ./data/secretkey:/etc/jobservice/key:z
    networks:
      - harbor
    depends_on:
      - ui
      - adminserver
    logging:
      driver: "syslog"
      options:  
        syslog-address: "tcp://127.0.0.1:1514"
        tag: "jobservice"
  proxy:
    image: vmware/nginx-photon:1.11.13
    container_name: nginx
    restart: always
    volumes:
      - ./common/config/nginx:/etc/nginx:z
    networks:
      - harbor
    ports:
      - 9090:80
      - 443:443
      - 4443:4443
    depends_on:
      - mysql
      - registry
      - ui
      - log
    logging:
      driver: "syslog"
      options:  
        syslog-address: "tcp://127.0.0.1:1514"
        tag: "proxy"
networks:
  harbor:
    external: false

Построение зеркала путем запуска install.sh, и сервис запускается:

./install.sh

2. Используйте

доступhttp://127.0.0.1:9090/следующее:

Пароль пользователя-администратора по умолчанию — Harbor12345, его можно изменить в harbour.cfg. После входа в систему следующим образом:

Проект на картинке загружен ранее, а вновь развёрнутая Харбор пуста под проектом после входа.

Вы можете создавать проекты, создавать пользователей, назначать пользователей проектам и т. д. Операции очень просты.

###3. Загрузить изображение Сначала войдите в частный склад, вы можете использовать пользователя с правами администратора или пользователя, которого мы создали с разрешениями на загрузку:

docker login -u admin -p Harbor12345 127.0.0.1:9090

Чтобы пометить образ как отправленный в частный репозиторий с помощью тега docker, например:

docker tag nginx:latest 127.0.0.1:9090/library/nginx:latest

Загрузить изображение:

docker push 127.0.0.1:9090/library/nginx:latest

доступhttp://127.0.0.1:9090/harbor/projects, вы можете увидеть образ nginx, только что загруженный в проект библиотеки:

Добро пожаловать, чтобы отсканировать код или выполнить поиск в общедоступной учетной записи «Programmer Guoguo» на WeChat и подписаться на меня, вас ждут сюрпризы~