Из разговоров в комментариях проблема со стеком.
Стек Docker поддерживает только образы для развертывания и реплики. Я считаю, что ваши изображения являются пользовательскими, которые ни в dockerhub, ни в каком-либо частном репозитории . Поэтому, когда вы пытаетесь развернуть его в стеке, служба, которая развертывается в рабочем узле, не находит такой образ и не может загрузить его из репозитория. Следовательно, служба не запускается в рабочем узле. Он отлично работает в узле менеджера, потому что изображение там уже существует.
Итак, вам нужно либо настроить локальный / частный реестр, либо отправить изображения в реестр докеров, либо вы даже можете скопировать изображения с управляющего узла на рабочий узел , используя docker save
и docker load
а затем попробуйте использовать Swarm и разверните его в стеке.
Обратите внимание, что при работе с роем и реестрами, при развертывании стека с использованием docker stack deploy -c composefile.yml test
вы должны передать --with-registry-auth
, если вы используете аутентификацию для реестров как docker stack deploy -c composefile.yml test --with-registry-auth
, иначе другие узлы могут не аутентифицироваться в реестре, что приведет к не удалось загрузить изображения, если они не найдены.
Также обратите внимание, что при настройке локального частного репо без самозаверяющего сертификата или с самозаверяющим сертификатом вам может потребоваться настроить незащищенный реестр. Я дал ссылку на то же самое.
Я рекомендую настроить локальное репо без какой-либо аутентификации и сертификатов и получить к нему доступ, добавив небезопасный реестр в файл daemon.json для целей тестирования.
Теперь в соответствии с последним комментарием, где вы удалили Swarm и попытались запустить службу Docker, используя
docker service create --replicas 2 --name contentlinksapi --publish mode=host,target=94,published=94,protocol=tcp contentlinksapi
Он выбросил порт, который уже используется, потому что он пытается создать 2 реплики на одной машине. Когда первая реплика связывается с портом 94, из-за чего вторая реплика выбрасывает порт, уже использующий ошибку.
Для справки.
- Развертывание сервера реестра
- Проверка небезопасного реестра
- Режим обслуживания Docker (проверьте, почему службы с двумя репликами развернуты на одном хосте на
docker service create
)
- Docker save
- Загрузка докера