У меня есть изображение докера, помеченное как me/my-image
, и у меня есть личное хранилище с именем dockerhub me-private
.
Когда я толкаю свою me/my-image
, я всегда оказываюсь в публичном репо.
Каков точный синтаксис для передачи моего изображения в частное хранилище?
docker
docker-registry
Евгений Гольдберг
источник
источник
Ответы:
Сначала вам нужно правильно пометить изображение с помощью
registryhost
:Затем нажмите Docker, используя тот же тег.
Пример:
источник
docker tag 518a41981a6a me-private.com/myPrivateImage && docker push me-private.com/myPrivateImage
docker login
сначала, а затемdocker tag 518a41981a6a me-private/myPrivateImage
docker push me-private/myPrivateImage
Всего три простых шага:
docker login --username username
--password
что рекомендуется, поскольку он не сохраняет его в истории командdocker tag my-image username/my-repo
docker push username/my-repo
источник
--password
флажок, если вы не хотите, чтобы ваш пароль отображался в истории. это подскажет вам.Сначала зайдите в свою учетную запись Docker Hub и сделайте репо. Вот скриншот моей учетной записи Docker Hub:
На картинке видно, что мой репо - «чуанг»
Теперь зайдите в репозиторий и сделайте его приватным, нажав на название вашего изображения. Поэтому я нажал «chuangg / gene_commited_image», а затем перешел в «Настройки» -> «Сделать личным». Затем я следовал инструкциям на экране
КАК ЗАГРУЗИТЬ ИЗОБРАЖЕНИЕ DOCKER НА DOCKER HUB
Метод № 1 = проталкивание вашего изображения через командную строку (cli)
1)
docker commit <container ID> <repo name>/<Name you want to give the image>
Да, я думаю, что это должен быть идентификатор контейнера. Вероятно, это не может быть идентификатор изображения.
Например =
docker commit 99e078826312 chuangg/gene_commited_image
2)
docker run -it chaung/gene_commited_image
3)
docker login --username=<user username> --password=<user password>
Например =
docker login --username=chuangg --email=gc.genechaung@gmail.com
Да, вы должны войти в систему в первую очередь. Выйти из системы с помощью «Docker Logout»
4)
docker push chuangg/gene_commited_image
Метод № 2 = Push-ваше изображение с помощью pom.xml и командной строки.
Обратите внимание, я использовал профиль Maven под названием «build-docker». Если вы не хотите использовать профиль, просто удалите
<profiles>, <profile>, and <id>build-docker</id>
элементы.Внутри родительского pom.xml:
Docker Terminal Команда для развертывания образа Docker (из каталога, где расположен ваш pom.xml) =
mvn clean deploy -Pbuild-docker docker:push
Обратите внимание, что разница между методом № 2 и № 3 заключается в том, что у метода № 3 есть дополнительные возможности
<execution>
для развертывания.Метод № 3 = Использование Maven для автоматического развертывания в Docker Hub
Добавьте этот материал в ваш родительский pom.xml:
Перейдите в каталог C: \ Users \ Gene.docker \ и добавьте его в файл config.json:
Теперь в вашем терминале быстрого запуска типа Docker =
mvn clean install -Pbuild-docker
Для тех из вас, кто не использует Maven Profiles, просто введите
mvn clean install
Вот скриншот сообщения об успехе:
Вот мой полный pom.xml и снимок экрана с моей структурой каталогов:
Вот мой каталог Eclipse:
Вот мой Dockerfile:
Распространенная ошибка № 1:
Решение для ошибки # 1 = Не синхронизировать
<execution>
с фазой развертывания maven, потому что тогда maven пытается развернуть образ 2x и помещает метку времени в банку. Вот почему я использовал<phase>install</phase>
.источник
Если ваш реестр Docker является частным и размещен самостоятельно, вы должны сделать следующее:
Пример :
источник
Есть два варианта:
Зайдите в хаб, сначала создайте репозиторий и отметьте его как приватный. Затем, когда вы нажмете на этот репо, он будет закрытым. Это самый распространенный подход.
Войдите в свою учетную запись Docker Hub и перейдите к глобальным настройкам . Существует настройка, позволяющая вам установить видимость по умолчанию для репозиториев, которые вы отправляете. По умолчанию он установлен как публичный, но если вы измените его на приватный, все ваши репозитории будут помечены как приватные по умолчанию. Важно отметить, что у вас должно быть достаточно личных репо, доступных на вашей учетной записи, иначе репо будет заблокировано до тех пор, пока вы не обновите свой план.
источник
docker push
команды. Но если я правильно понял вопрос, ни один из этих ответов не является правильным, и ответ Кена Кокрейна, приведенный выше, является единственным, который следует принять.Создайте репозиторий на Dockerhub:
$docker tag IMAGE_ID UsernameOnDockerhub/repoNameOnDockerhub:latest
$docker push UsernameOnDockerhub/repoNameOnDockerhub:latest
Примечание : здесь «repoNameOnDockerhub»: репозиторий с именем, которое вы упоминаете, должен присутствовать на dockerhub
"последний": это просто тег
источник
Ссылка: dock.docker.com
В этом разделе приведены основные сведения о развертывании и настройке реестра.
Запустите локальный реестр
Прежде чем вы сможете развернуть реестр, вам нужно установить Docker на хосте.
Используйте команду, подобную следующей, чтобы запустить контейнер реестра:
start_registry.sh
Скопируйте изображение из Docker Hub в свой реестр
Вытащите
ubuntu:16.04
изображение из Docker Hub.Пометьте изображение как
localhost:5000/my-ubuntu
. Это создает дополнительный тег для существующего изображения. Когда первая часть тега является именем хоста и портом, Docker интерпретирует это как местоположение реестра при нажатии.Вставьте образ в локальный реестр, работающий по адресу
localhost:5000
:Удалите локально кэшированные изображения. Это не удаляет
localhost:5000/my-ubuntu
изображение из вашего реестра.Вытащите
localhost:5000/my-ubuntu
изображение из вашего локального реестра.Согласно docs.docker.com , это очень небезопасно и не рекомендуется .
Отредактируйте
daemon.json
файл, расположение которого по умолчанию/etc/docker/daemon.json
в Linux илиC:\ProgramData\docker\config\daemon.json
на Windows Server. Если вы используетеDocker for Mac
илиDocker for Windows
, нажмитеDocker icon -> Preferences -> Daemon
, добавьте вinsecure registry
.Если
daemon.json
файл не существует, создайте его. Предполагая, что в файле нет других настроек, он должен иметь следующее содержимое:При включенной незащищенной регистрации Docker выполняет следующие шаги:
Перезапустите Docker, чтобы изменения вступили в силу.
источник
Сначала войдите в свой личный репозиторий.
например:
А затем пометьте свое изображение для вашего личного хранилища
например:
Наконец-то добавьте ваши изображения в ваш личный репозиторий
например:
Ссылка
источник
Простое рабочее решение:
Перейдите сюда,
https://hub.docker.com/
чтобы создать ЧАСТНОЕ хранилище с именем, например,johnsmith/private-repository
это то, чтоNAME/REPOSITORY
вы будете использовать для своего изображения при создании изображения.Первый,
docker login
Во-вторых, я использую "
docker build -t johnsmith/private-repository:01 .
" (где 01 - это название моей версии) для создания изображения, и я использую "docker images
" для подтверждения созданного изображения, например, в желтом поле ниже: (извините, я не могу вставить формат таблицы, но только текстовую строку )docker push johnsmith/private-repository:01
(ваш личный репозиторий будет здесь пример https://hub.docker.com/r/johnsmith/private-repository/ )Выполнено!
источник