Как скопировать файлы из одного док-контейнера в другой на другом хосте? - PullRequest
0 голосов
/ 26 января 2019

Каков наилучший способ скопировать файлы из одного док-контейнера в другой на другом хосте?при попытке сделать это мы столкнулись с несколькими проблемами.

Проблема № 1: мы подготовили оверлейную сеть и подключили к ней контейнеры.Контейнеры могут пропинговать друг друга, используя IP-адрес, но не используя имя хоста, указанное с помощью флага -h при создании контейнера

Контейнер 1:

root@rca-ord:/# cat /etc/hosts
127.0.0.1   localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
10.0.29.10  rca-ord

Контейнер 2:

root@ica-ord:/# cat /etc/hosts
127.0.0.1   localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
10.0.29.11  ica-ord

ping с использованием имени хоста завершается неудачно

root@ica-ord:/# ping rca-ord
ping: unknown host rca-ord

ping с использованием IP-адреса работает

root@ica-ord:/# ping 10.0.29.10
PING 10.0.29.10 (10.0.29.10) 56(84) bytes of data.
64 bytes from 10.0.29.10: icmp_seq=1 ttl=64 time=0.684 ms
64 bytes from 10.0.29.10: icmp_seq=2 ttl=64 time=0.434 ms
64 bytes from 10.0.29.10: icmp_seq=3 ttl=64 time=0.731 ms
64 bytes from 10.0.29.10: icmp_seq=4 ttl=64 time=0.672 ms
64 bytes from 10.0.29.10: icmp_seq=5 ttl=64 time=0.545 ms
64 bytes from 10.0.29.10: icmp_seq=6 ttl=64 time=1.25 ms
^C
--- 10.0.29.10 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5010ms
rtt min/avg/max/mdev = 0.434/0.719/1.251/0.258 ms

Похоже, нам нужно запустить какой-нибудь DNS-сервер.Как?какие детали?

Проблема №2: мы попытались выполнить scp, используя IP-адрес, и он запрашивает пароль - скорее всего, пароль root, поскольку это имя пользователя, под которым мы вошли.знать пароль root.

root@ica-ord:/# scp 10.0.29.10:test-file.txt .
The authenticity of host '10.0.29.10 (10.0.29.10)' can't be established.
ECDSA key fingerprint is SHA256:Bdnjhvxlk1ILzWpa8tvu+YLaHRqh9XBftIoeLSpKLBQ.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.29.10' (ECDSA) to the list of known hosts.
root@10.0.29.10's password: 

Мы думаем, что должен быть простой способ копирования файлов между контейнерами на нескольких хостах.есть ли?

1 Ответ

0 голосов
/ 26 января 2019

Докер не предоставляет ничего волшебного, чтобы сделать это легко.Обычно упакованные в Docker компоненты не обмениваются данными друг с другом, обмениваясь файлами;вместо этого они общаются друг с другом с помощью сетевых протоколов, таких как HTTP, или с помощью системы шины сообщений, такой как RabbitMQ.

Эта проблема принципиально не отличается от использования двух процессов сервера, отличных от Docker, которые использовались для запуска на сервере.одного и того же хоста и разделение их на разные хосты, за исключением того, что изоляция файловой системы Docker означает, что просто передача файла на другой хост не обязательно делает его видимым для другого контейнера.

Типичная архитектуравыглядит примерно так:

  1. У вас есть некоторый общий сетевой файлово-ориентированный уровень хранения (сервер NFS, Amazon S3, ...).Обе службы имеют необходимые настройки для связи с ним.

  2. Производящая служба записывает файл на уровень хранения.

  3. Производящие контакты службыпотребляющий сервис (через соединение HTTP; к общей очереди RabbitMQ; либо зная имя хоста сервера другого сервиса, либо используя систему обнаружения сервисов, такую ​​как объекты Consul или Kubernetes Service, чтобы найти его), и сообщает, где находится файл.

  4. Служба-потребитель считывает файл и обрабатывает его.

Эта настройка обладает теми преимуществами, что вам не нужно иметь дело с N службами, пытающимися установитьдо проверки подлинности scp на N других служб (или даже на M других хостов) вам не придется сталкиваться со сложностями совместного использования тома Docker (и одновременного управления доступом и разрешениями), и он все еще работает, даже если служба перемещается на другойхоста и не имеет локальной копии файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...