泊坞窗机器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-compose
Docker守护程序知道如何找到它们。避免使用相对路径,而在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