泊坞窗机器scp

预计阅读时间:2分钟

使用将文件从本地主机复制到计算机,从一台计算机复制到另一台计算机或从一台计算机复制到本地主机scp

该符号machinename:/path/to/files用于参数;在主机的情况下,您无需指定名称,只需指定路径即可。

例子

考虑以下示例:

$ cat foo.txt
cat: foo.txt: No such file or directory

$ docker-machine ssh dev pwd
/home/docker

$ docker-machine ssh dev 'echo A file created remotely! >foo.txt'
$ docker-machine scp dev:/home/docker/foo.txt .
foo.txt                                                           100%   28     0.0KB/s   00:00
$ cat foo.txt
A file created remotely!

就像scp具有-r用于递归复制文件的标志一样, docker-machine具有-r针对此功能的标志。

在从一台机器到另一台机器传输文件的情况下,它们首先通过本地主机的文件系统(使用scp-3标志)。

当传输大文件或更新包含大量文件的目录时,可以使用该-d标志,该标志rsync用于传输增量而不是传输所有文件。

当传输目录而不是文件时,请在源和目标上都使用斜杠来避免rsync的意外。例如:

$ mkdir -p bar
$ touch bar/baz
$ docker-machine scp -r -d bar/ dev:/home/docker/bar/
$ docker-machine ssh dev ls bar
baz

指定远程部署的文件路径

将文件复制到docker-machine scp用于应用程序部署的远程服务器时,请确保docker-composeDocker守护程序知道如何找到它们。避免使用相对路径,而在Compose files中指定绝对路径 。最好同时为Docker守护程序上的位置和容器内的位置指定绝对路径。

例如,假设您想将本地目录传输 /Users/<username>/webapp到远程计算机,然后将其绑定安装到远程主机上的容器中。如果远程用户是ubuntu,请使用如下命令:

$ docker-machine scp -r /Users/<username>/webapp MACHINE-NAME:/home/ubuntu/webapp

然后编写一个docker-compose文件,将其绑定安装在:

version: "3.9"
services:
  webapp:
    image: alpine
    command: cat /app/root.php
    volumes:
    - "/home/ubuntu/webapp:/app"

我们可以这样尝试:

$ eval $(docker-machine env MACHINE-NAME)
$ docker-compose run webapp
机器scp子命令