створення декількох зображень докера тегів


148

Як можна прикріпити кілька тегів до одного зображення Docker? Чи можливо створити кілька тегів за допомогою одного Dockerfile ?

Можна, якось ; наприклад, docker pull ubuntuви отримаєте кілька зображень, на деяких з яких є кілька тегів:

ubuntu                  13.10               9f676bd305a4        2 weeks ago         182.1 MB
ubuntu                  saucy               9f676bd305a4        2 weeks ago         182.1 MB
ubuntu                  raring              eb601b8965b8        2 weeks ago         170.2 MB
ubuntu                  13.04               eb601b8965b8        2 weeks ago         170.2 MB
ubuntu                  12.10               5ac751e8d623        2 weeks ago         161.4 MB
ubuntu                  quantal             5ac751e8d623        2 weeks ago         161.4 MB
ubuntu                  10.04               9cc9ea5ea540        2 weeks ago         183 MB
ubuntu                  lucid               9cc9ea5ea540        2 weeks ago         183 MB
ubuntu                  12.04               9cd978db300e        2 weeks ago         204.7 MB
ubuntu                  latest              9cd978db300e        2 weeks ago         204.7 MB
ubuntu                  precise             9cd978db300e        2 weeks ago         204.7 MB

1
Питання, пов’язані з цим: stackoverflow.com/questions/22080706/…
Марк Батлер

Відповіді:


79

Ви не можете створювати теги за допомогою Dockerfiles, але ви можете створювати кілька тегів на своїх зображеннях за допомогою командного рядка.

Використовуйте це, щоб перерахувати свої ідентифікатори зображень:

$ docker images

Потім позначте:

$ docker tag 9f676bd305a4 ubuntu:13.10
$ docker tag 9f676bd305a4 ubuntu:saucy
$ docker tag eb601b8965b8 ubuntu:raring
...

4
Основний момент у Dockerfile, ці команди не вдалося записати в Dockerfile.
Daniel YC Lin

1
Дивіться цю відповідь, щоб уникнути необхідності вручну розбирати ідентифікатор.
Джонатан Райнхарт

438

Починаючи з версії 1.10 , тепер ви можете додавати декілька тегів одночасно під час збирання:

docker build -t name1:tag1 -t name1:tag2 -t name2 .

Джерело: Додайте можливість додавання декількох тегів за допомогою docker build


5
Я думаю, що це правильніша відповідь на простоту використання у процесі збирання
brasskazoo

Це неправильно, оскільки тег ubuntu для різної версії зміст відрізняється.
Daniel YC Lin

2
Як змусити ці теги з’являтися у сховищі після натискання? На жаль, у репо з'являється лише той, який я використовую в команді push.
Czechnology

4
Навіть наприкінці 2018 року Докер все ще неймовірно незрілий у цьому відношенні, кожен «тег» все одно повинен бути висунутий окремо, незважаючи на те, що він прикріплений до одного зображення. Тут потрібно деякі можливості, схожі на теги Git.
Ед Рендалл

-8

Як цього не зробити:

Створюючи зображення, ви також можете розмітити його таким чином.

docker build -t ubuntu:14.04 .

Потім ви збираєте його знову за допомогою іншого тегу:

docker build -t ubuntu:latest .

Якщо ваш Dockerfile добре використовує кеш-пам'ять, має вийти одне і те ж зображення, і воно фактично робить те саме, що повторне позначення того ж зображення. Якщо ви це зробите, docker imagesто побачите, що вони мають однаковий ідентифікатор.

Напевно, є випадок, коли це піде не так ... Але, як сказав @ david-braun, ви не можете створювати теги з самими Dockerfiles, лише за допомогою команди docker.


3
Я можу додати, що робити це так, як @ david-braun чистіше.
кассава

14
Не будуйте двічі. Дивіться цю відповідь .
Джонатан Райнхарт

збірка двічі перемагає поняття CI / CD ... друга компіляція може бути різницею залежно від залежностей ... все в часі.
Річард

4
З чітким повідомленням "Як цього не зробити" ця відповідь тепер додає щось розуміння того, як це працює.
Ед Рандалл
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.