Docker Swarm: результаты развертывания стека докеров на немаркированных изображениях ‹none›

Я развертываю некоторые образы из своего реестра на сервере приложений с помощью хоста в режиме docker swarm t:

Мой образ в реестре выглядит так (выполняется docker images):

REPOSITORY                                                 TAG                   IMAGE ID            CREATED            SIZE
localhost:5000/myApp                                       G02R00C09_myTag   c1fc2242f9a0        2 hours ago         272MB

В моем файле создания докеров моя служба выглядит так:

---
version: '3.4'
services:
  ihm:
    image: myRegistryServer:5000/myApp:G02R00C09_myTag   
    stdin_open: true
    volumes:
    - /opt/logs:/opt/logs
    tty: true
    ports:
      - target: 80
        published: 80
        protocol: tcp
        mode: host
    deploy:
      mode: global
      placement:
        constraints:
          - node.labels.type == abc
    healthcheck:
      disable: true

-> после выполнения docker stack deploy:

у меня есть мой стек и мой сервис (когда я запускаю docker stack ls и docker service ls, все в порядке)

->, но при запуске docker images я получаю свое изображение но с тегом <none> :

image:  myRegistryServer:5000/myApp      <none> 

person firasKoubaa    schedule 03.05.2018    source источник
comment
Как вы создали образ (команда, использованная для его создания)? Также попробуйте curl myRegistryServer:5000/v2/myApp/tags/list -v проверить, отображается ли в реестре нужный тег.   -  person Saqib Ahmed    schedule 03.05.2018
comment
Я построил его с помощью модуля docker_image в ansible, и в результате получается успешно помеченное изображение в реестре.   -  person firasKoubaa    schedule 03.05.2018
comment
Что показывает curl? Так и должно быть.   -  person Saqib Ahmed    schedule 03.05.2018
comment
›GET / ihm / tags / list HTTP / 1.1› User-Agent: curl / 7.29.0 ›Host: myResgitryServer: 5000› Accept: / ›‹ HTTP / 1.1 404 Not Found   -  person firasKoubaa    schedule 03.05.2018
comment
Почему ваш реестр недоступен?   -  person Saqib Ahmed    schedule 03.05.2018


Ответы (1)


Это нормально. При использовании Swarm Stacks он преобразует ваш тег в SHA256 этого изображения и загружает этот конкретный идентификатор. Это гарантирует, что каждый узел имеет одно и то же изображение. Если бы это зависело только от тега, вы могли бы повторно использовать тег в docker push, и разные узлы могли бы загружать разные изображения.

Вы можете увидеть тег, используемый в docker service ls или docker stack ps <stackname>

person Bret Fisher    schedule 04.05.2018
comment
Как вы предлагаете продолжить очистку после удаления службы? - person Alessandro Dionisi; 22.05.2019
comment
Я полагаю, вы говорите об изображениях или объемах? это единственные объекты, которые служба создает, но не удаляет. Ознакомьтесь с командами prune, такими как docker image prune --help, и моим примером использования ежедневной задачи для автоматического удаления всех неиспользуемых изображений на всех узлах: github.com/BretFisher/dogvscat/blob/master/stack-prune.yml. - person Bret Fisher; 18.06.2019