1

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

06-Sep-2016 10:54:10 Error response from daemon: Conflict: Tag latest is already set to image 2bcc77ac3ef5f5ce0442d9cae3652c0464b8f266db9ccd65b1638aadf60ebc39, if you want to replace it, please use -f option 
The push refers to a repository [localhost.com:5000/proj/proj1] (len: 1) 
06-Sep-2016 10:54:10 2bcc77ac3ef5: Image already exists 
06-Sep-2016 10:54:10 2bcc77ac3ef5: Image already exists 
06-Sep-2016 10:54:10 4f3b96c826b8: Image already exists 
06-Sep-2016 10:54:11 84c030e02a98: Image already exists 
06-Sep-2016 10:54:11 c7282372eb99: Image already exists 
06-Sep-2016 10:54:11 1b449d63ca4e: Image already exists 

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

docker tag proj1 localhost.com:5000/proj/proj1 
docker push localhost.com:5000/proj/proj1 
+0

Если вы просто делаете команду 'Докер tag' без' Докер push', вы все еще получаете ошибку? –

+0

@ VinceBowdren да, но я хочу обновить свой реестр одним и тем же тегом –

ответ

4

Short: Обновление до последней версии Docker (предпочтительно) или используйте опцию -t тегов.

Ваши команды такие же, как если бы вы выполнить следующие две команды:

docker tag proj1:latest localhost.com:5000/proj/proj1:latest 
docker push localhost.com:5000/proj/proj1:latest 

Старые версии Докер жалуются, так как вы пытаетесь перезаписать существующий файл с существующими тег :latest.

Быстрая & загрязнен решение попробовать с

docker tag -f proj1 localhost.com:5000/proj/proj1 
docker push -f localhost.com:5000/proj/proj1 

Это позволит перезаписать существующий образ localhost.com:5000/proj/proj1:latest на старых версиях Докер.

Однако я рекомендую обновить докер до версии> = 1.12.0. Там опция -t недоступна и больше не нужна, поскольку изображение всегда будет заменено. Вот почему, почему -f вариант не описан на official documentation, но вместо этого он указан на Docker Deprecated Engine Features page.

1

Проблемы с вашей командой docker tag, получив этот ответ: ответ

Ошибки от демона: Конфликт: Метка последняя уже установлен на изображение 2bcc77ac3ef5f5ce0442d9cae3652c0464b8f266db9ccd65b1638aadf60ebc39, если вы хотите, чтобы заменить его, пожалуйста, используйте опцию -f

Это потому, что на вашей локальной машине уже есть изображение с этим тегом. Если вы хотите удалить тег из этого более старого изображения, вы должны использовать команду docker rmi. Не забудьте убедиться, что у старого изображения все еще есть один или несколько тегов (например, с номером сборки), иначе он будет удален.

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

REPOSITORY      TAG     IMAGE ID 
localhost.com:5000/proj/proj1 0.1     2bcc77ac3ef5 
localhost.com:5000/proj/proj1 latest    2bcc77ac3ef5 
<none>       <none>    d52cb651fb7a 

Обратите внимание, что первые две строки являются две разные метки для того же изображения; третья строка - это ваше новое изображение, которое вы хотите пометить.

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

docker rmi localhost.com:5000/proj/proj1:latest 

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

REPOSITORY      TAG     IMAGE ID 
localhost.com:5000/proj/proj1 0.1     2bcc77ac3ef5 
<none>       <none>    d52cb651fb7a 

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

docker tag d52cb651fb7a localhost.com:5000/proj/proj1:0.2 
docker tag d52cb651fb7a localhost.com:5000/proj/proj1:latest 

Это даст вам следующие изображения:

REPOSITORY      TAG     IMAGE ID 
localhost.com:5000/proj/proj1 0.1     2bcc77ac3ef5 
localhost.com:5000/proj/proj1 0.2     d52cb651fb7a 
localhost.com:5000/proj/proj1 latest    d52cb651fb7a 

Теперь вы можете сделать толчок:

docker push localhost.com:5000/proj/proj1:latest 
Смежные вопросы