如何将文件从本地计算机直接scp到远程计算机上的docker容器(而不必重复复制)?

时间:2020-04-23 05:49:29

标签: docker ssh scp portforwarding

我是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

由于远程计算机在我学校的校园中,所以防火墙可能会出现问题吗?

总的来说,我不确定我在做什么甚至是正确的。

1 个答案:

答案 0 :(得分:0)

根据您对David的回复的评论,以下是如何bind-mount将可视化文件的目录添加到容器的说明:

在主机系统上创建目录,例如mkdir /home/sarah/viz/。然后,使用例如

将其安装到您的Docker容器
docker run -v /home/sarah/viz:/data/viz … kind_tu …

您的kind_tu容器中的viz软件应将文件放在目录/data/viz中-然后将其放在主机系统上的/home/sarah/viz/中,您可以在其中将其下载到本地计算机scprsync,也可以连接到远程计算机。

您也可以使用docker-compose来拥有更持久的环境。用the bind-mountdocker-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文件中的配置进行操作。