Как скопировать файлы с локального компьютера непосредственно в контейнер docker на удаленном компьютере (без необходимости повторного копирования)? - PullRequest
0 голосов
/ 23 апреля 2020

Я новичок в Docker и хочу скопировать файлы на локальный компьютер или с него напрямую в контейнер docker, находящийся на удаленном компьютере, без необходимости извлекать файлы из локального на удаленный компьютер и затем использовать docker cp, чтобы скопировать эти файлы в контейнер. В моем контейнере не установлен сервер S SH, и я не хочу перестраивать свой образ, чтобы включить его.

Я попробовал следующее решение, приведенное во втором ответе: Как выполнить S SH в Docker? . Я выполнил следующую команду на своей удаленной машине, на которой размещен Docker: docker run -d -p 2222:22 -v /var/run/docker.sock:/var/run/docker.sock -e CONTAINER=kind_tu -e AUTH_MECHANISM=noAuth jeroenpeeters/docker-ssh

, где kind_tu - имя моего работающего контейнера.

На моей локальной машине я затем использовал: ssh -L 2222:localhost:2222 remote_account_name@remote_ip, а затем scp -P 2222 test_file remote_account_name@remote_ip:/destination/path (я также не знаком с переадресацией портов, поэтому не уверен, что мои нотации верны). При этом я получаю следующее:

ssh: connect to host remote_ip port 2222: Connection refused

lost connection

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

В целом, я не уверен если то, что я делаю, хоть отдаленно верно.

1 Ответ

0 голосов
/ 28 апреля 2020

Согласно вашему комментарию в ответ Дэвиду, вот объяснение того, как bind-mount каталог для ваших файлов визуализации в вашем контейнере:

В хост-системе создайте каталог, например mkdir /home/sarah/viz/. Затем установите его в свой контейнер docker, используя, например,

docker run -v /home/sarah/viz:/data/viz … kind_tu …

. Ваше программное обеспечение viz внутри контейнера kind_tu должно поместить файлы в каталог /data/viz - который затем попадает в /home/sarah/viz/ в хост-система, где вы можете загрузить их на свой локальный компьютер с помощью scp или rsync или же подключиться к удаленному компьютеру.

Вы также можете использовать docker -compose чтобы иметь более устойчивую среду. Напишите файл docker-compose.yml с bind-mount и всеми остальными настройками контейнера kind_tu:

version: '3'
  services:
    kind_tu:
      image: your_viz_software_image:latest
      volumes:
        - /home/sarah/viz:/data/viz:rw
      …

Тогда вместо docker run … вы можете просто сделать docker-compose up -d и все действует в соответствии с конфигом в compose-файле.

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