Статья впервые опубликована на паблике «Программист Фруктов».
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 и подписаться на меня, вас ждут сюрпризы~