Я проверил этот подход с Docker Hub, поэтому вы сможете достичь желаемого с помощью следующей конфигурации и сеанса оболочки:
docker-compose.yml
version: '3'
services:
build-1:
build:
context: ./build-1
image: user/project-1
build-2:
build:
context: ./build-2
image: user/project-2
(Здесь вы должны заменить user/project-1
на registry.name/user/project-1
, если вы используете не Docker Hub, а другой реестр Docker, например, quay.io/user/project-1
.)
Различные поля, используемые здесь (build:
, context:
и т. Д.) Описаны на этой странице документации docker-compose .
В приведенном выше файле docker-compose.yml
предполагается, что у вас есть следующее дерево (включая .gitignore и некоторые .dockerignore файлы, в соответствии с рекомендациями):
.
├── build-1
│ ├── Dockerfile
│ └── .dockerignore
├── build-2
│ ├── Dockerfile
│ └── .dockerignore
├── docker-compose.yml
└── .gitignore
Затем выполните в терминале:
$ docker login
# → append the domain name of your Docker registry
# if you are not using Docker Hub; for example:
# docker login quay.io
$ docker-compose build --pull
$ docker-compose push
# and optionally:
$ docker logout
Наконец, ниже приведены некоторые замечания, чтобы уточнить некоторые детали, связанные с вашим вопросом:
В вашем примере сеанса
$ docker build -f someDockerfile -t some . # with "." as context build path
$ docker tag some …/some
$ docker push …/some
some
- это временное имя изображения(не контейнер), так что это кажется ненужным: вы могли бы также запустить следующее, стот же результат.
$ docker build -f someDockerfile -t …/some .
$ docker push …/some
Ваш docker-compose.yml
пример содержал строку:
image: some:<docker_hub_server>/some
На самом деле теги изображений могут содержать :
для указания версии, но не так (это должен быть суффикс).Например, вы можете пометить изображение user/some:1.0
или user/some:latest
, и по соглашению этот последний пример user/some:latest
допускает user/some
в качестве более короткого эквивалентного имени.
Обратите внимание, чтополный синтаксис для тегов изображений:
registry.name:port/user/project:version
, где registry.name
должно быть доменным именем или именем хоста требуемого реестра Docker (если не указано, по умолчанию используется Docker Hub).
Это упомянуто на этой странице официальной документации .
Так, например, если вы используете реестр Quay Docker, тег изображения может быть quay.io/user/some:latest
или более кратко quay.io/user/some
.