Перейти к основному содержимому

Отправка образа Docker в частный репозиторий

· 4 мин. чтения

1. Обзор

В этом руководстве показано, как отправить образ Docker в частный репозиторий. Мы начнем с создания примера приложения, которое станет основой для нашего образа Docker. Затем мы увидим, как войти в наш частный репозиторий Docker и, наконец, узнаем, как пометить образ и отправить его в репозиторий.

2. Частные репозитории Docker

Частные репозитории Docker предоставляют ограниченный доступ к содержащимся в них образам . В отличие от общедоступных репозиториев, только авторизованные пользователи могут получить доступ к изображениям. Таким образом, можно разрешить доступ только определенной группе пользователей, например организациям, командам или даже одному человеку. Это делает его идеальным выбором для проектов, которые не хотят, чтобы их образы Docker были общедоступными.

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

Теперь, когда мы знаем, для чего нужен частный репозиторий Docker, давайте рассмотрим, как отправить образ в такой репозиторий. Шаги такие же, как и при отправке изображения в общедоступный репозиторий. Разница лишь в том, что репозиторий помечен как частный.

3. Подготовьте изображение

Во-первых, нам нужно подготовить изображение, предоставив правильный псевдоним и опционально тег. Это можно сделать либо при создании образа, либо используя существующий образ и переименовав его.

3.1. Создайте новый образ

Во-первых, мы создаем образ Docker из простого приложения Spring Boot, состоящего из RestController , который возвращает дружественный Hello World! сообщение пользователю:

@RestController
public class HelloWorldController {
@GetMapping("/helloworld")
String helloWorld() {
return "Hello World!";
}
}

Мы используем следующий Dockerfile:

FROM openjdk:11
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

И, наконец, мы запускаем команду, которая создаст образ. Это выглядит так:

docker build [OPTIONS] PATH | URL | -

В нашем случае мы используем параметр -t, который говорит нам, что мы хотим пометить изображение. Мы также ставим точку «.» как ПУТЬ к нашему файлу jar. Важно выбрать правильное имя, состоящее из вашего имени пользователя и имени репозитория . Тег версии является необязательным. Если этого избежать, изображение будет помечено как last :

docker build -t username/fancy-repository:v1.0.0 .

Теперь мы можем вывести список существующих изображений с помощью следующей команды:

docker images

В результате мы увидим только что созданное изображение:

REPOSITORY                  TAG       IMAGE ID        CREATED              SIZE
username/fancy-repository v1.0.0 e20b5a89a0f2 About a minute ago 665MB

3.2. Подготовьте существующее изображение

В некоторых случаях мы не хотим создавать образ с нуля, а вместо этого проталкиваем существующий образ. Это требует некоторых подготовительных шагов, которые мы рассмотрим в этом разделе. Предположим, у нас есть следующий образ на нашей машине:

REPOSITORY       TAG         IMAGE ID       CREATED        SIZE
existing-image some-tag e20b5a89a0f2 2 weeks ago 665MB

Чтобы отправить его в наш fancy-repository , нам сначала нужно пометить изображение правильным именем/псевдонимом с помощью следующей команды:

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

В нашем примере SOURCE_IMAGE[:TAG] — это имя и тег существующего изображения. TARGET_IMAGE [:TAG] — это псевдоним, состоящий из нашего имени пользователя и имени репозитория, в который мы хотим отправить изображение . Вот как команда будет выглядеть в нашем примере:

docker tag existing-image:some-tag username/fancy-repository:v1.0.0

Мы можем проверить результат, используя следующую команду:

docker images

Теперь мы можем видеть дополнительную запись, которая показывает имя репозитория и недавно примененный тег версии. Идентификатор изображения, метка времени и размер одинаковы, потому что это все то же изображение, только с другим псевдонимом:

REPOSITORY                      TAG         IMAGE ID        CREATED               SIZE
existing-image some-tag e20b5a89a0f2 2 weeks ago 665MB
username/fancy-repository v1.0.0 e20b5a89a0f2 2 weeks ago 665MB

После этого мы можем приступить к отправке изображения в наш частный репозиторий.

4. Нажмите на изображение

Теперь, когда мы подготовили образ Docker, мы можем отправить его в наш частный репозиторий. Первый шаг — войти в реестр DockerHub с помощью следующей команды:

docker login

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

docker push [OPTIONS] NAME[:TAG]

В нашем примере нам не нужно указывать какие-либо параметры, а нужно только указать имя изображения и тег. Команда будет выглядеть так:

docker push username/fancy-repository:v1.0.0

При этом образ будет загружен в наш частный репозиторий Docker на DockerHub. Мы можем убедиться, что образ находится на DockerHub, выполнив следующую команду:

docker search username/fancy-repository

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

NAME                        DESCRIPTION   STARS     OFFICIAL   AUTOMATED
username/fancy-repository 0

5. Вывод

В этой статье мы рассмотрели, как отправить образ Docker в частный репозиторий. Мы узнали, что такое частный репозиторий и для чего он используется. Затем мы показали, как подготовить образ и отправить его в частный репозиторий.

Все примеры кода, упомянутые в этой статье, доступны на GitHub .