我是Docker的新手,我想将文件直接从本地计算机复制到本地计算机/从本地计算机直接复制到远程计算机上的Docker容器,而不必将文件从本地本地复制到远程计算机,然后使用docker cp复制这些文件文件到容器。我的容器上没有安装SSH服务器,也不想重建包含它的映像。
我尝试了以下第二个答案给出的解决方案:How to SSH into 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
由于远程计算机在我学校的校园中,所以防火墙可能会出现问题吗?
总的来说,我不确定我在做什么甚至是正确的。
答案 0 :(得分:0)
根据您对David的回复的评论,以下是如何bind-mount将可视化文件的目录添加到容器的说明:
在主机系统上创建目录,例如mkdir /home/sarah/viz/
。然后,使用例如
docker run -v /home/sarah/viz:/data/viz … kind_tu …
您的kind_tu
容器中的viz软件应将文件放在目录/data/viz
中-然后将其放在主机系统上的/home/sarah/viz/
中,您可以在其中将其下载到本地计算机scp
或rsync
,也可以连接到远程计算机。
您也可以使用docker-compose来拥有更持久的环境。用the bind-mount和docker-compose.yml
容器的所有其他配置编写文件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文件中的配置进行操作。