Я успешно настроил кластер Docker Swarm, состоящий из одного мастера и двух узлов.
Все работает как положено, только одно отклоняется от документации. Согласно документам (искать "Запустить контейнер на Рое") Я должен видеть вывод команды, когда я запускаю что-то в Swarm, но со мной это не происходит:
$ docker run hello-world # <<< no output
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
663f36f72ee1 hello-world:latest "/hello" 4 seconds ago Exited (0) 3 seconds ago node-1/serene_pare
...
$ docker logs 663f36f72ee1 # <<< however everything looks good
Hello from Docker.
This message shows that your installation appears to be working correctly.
...
Что я делаю не так?
ОБНОВИТЬ: С помощью run -i
решает проблему. Тем не менее, мне любопытно, почему -i
необходим только для Swarm, и почему в документации этого не сказано.
Документация неверна и Эта проблема исправляет документацию.
Причина, по которой необходим флаг -i --interactive, заключается в том, что флаг -i позволяет нам устанавливать интерактивное соединение, захватывая стандарт в (STDIN) контейнера, поскольку контейнер находится на другом хосте.