Kir*_*ill 5 ssh docker docker-compose
我正在通过docker-compose远程上下文部署一些 Docker 服务。我将其配置为使用 SSH:
docker context create remote --docker "host=ssh://user@my.remote.host"
docker context use remote
Run Code Online (Sandbox Code Playgroud)
在远程主机上,我有多个配置文件,我想将它们挂载到 Docker 中。当我尝试使用 CLI 时,它工作正常docker:
docker run -v /home/user/run:/test -it alpine:3.11
# ls -la /test
-> shows remote files correctly here
Run Code Online (Sandbox Code Playgroud)
docker-compose但是当我使用配置文件启动它时:
docker run -v /home/user/run:/test -it alpine:3.11
# ls -la /test
-> shows remote files correctly here
Run Code Online (Sandbox Code Playgroud)
由于某种原因,它尝试挂载本地文件而不是远程文件,但失败并出现错误:
ERROR: for nginx Cannot start service nginx: OCI runtime create failed: container_linux.go:296: starting container process caused "process_linux.go:398: container init caused \"rootfs_linux.go:58: mounting \\\"/home/local-user/run/nginx.conf\\\" to rootfs \\\"/hdd/docker/overlay2/c869ef9f2c983d33245fe1b4360eb602d718786ba7d0245d36c40385f7afde65/merged\\\" at \\\"/hdd/docker/overlay2/c869ef9f2c983d33245fe1b4360eb602d718786ba7d0245d36c40385f7afde65/merged/etc/nginx/nginx.conf\\\" caused \\\"not a directory\\\"\"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type
Run Code Online (Sandbox Code Playgroud)
docker-compose是否可以通过类似于标准 Docker CLI 的方式挂载远程资源?
您需要显式设置DOCKER_HOST从 docker-compose 访问远程 docker 主机。
来自撰写文档
DOCKER_HOST
设置 docker 守护进程的 URL。与 Docker 客户端一样,默认为 unix:///var/run/docker.sock。
在给定的情况下,docker context use remote仅将 docker 命令的当前上下文设置为远程。docker-compose 仍然使用您的默认(本地)上下文。为了让 docker-compose 检测到它,您必须通过DOCKER_HOST环境变量传递它。
例子:
$ export DOCKER_HOST=ssh://user@my.remote.host
$ docker-compose up
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4070 次 |
| 最近记录: |