Настройка приватного Docker репозитория

Иногда требуется поднять свой собственный docker репозиторий для хранения своих docker образов.

Создание сети:

docker network create -d bridge --subnet=172.20.0.0/16 dockernet -o "com.docker.network.bridge.name"="dockernet"

Сеть нужна, чтобы у репозитория был статический IP адрес, к которому можно локально подключиться.

Запуск локального репозитория

docker pull bayrell/docker_registry_ui
docker volume create repo_data
docker run -d -it --ip=172.20.10.25 --network="dockernet" --restart=unless-stopped -v repo_data:/var/lib/registry --name registry bayrell/docker_registry_ui

На всех хостах нужно прописать, что этот репозиторий не безопасный, т.к. использует http протокол nano /etc/docker/daemon.json

{
  "insecure-registries" : ["172.20.10.25"],
  "max-concurrent-downloads": 1,
  "max-concurrent-uploads": 1
}

Команды max-concurrent-downloads и max-concurrent-uploads задают количество скачиваемых и закачиваемых одновременных потоков. Если соединение медленное, следует поставить 1.

После изменений в daemon.json следует перезапустить докер.

service docker restart

Загрузка образа в локальный репозиторий

docker pull ubuntu:16.04
docker tag ubuntu:16.04 172.20.10.25/ubuntu:16.04
docker push 172.20.10.25/ubuntu:16.04