Docker卷将文件绑定为远程linux服务器上的目录
我在远程服务器的linux上安装了docker。我使用ssh从Windows 10的主机连接到docker。为了将我的应用程序部署到docker,我使用docker compose v3,但我有一个严重的问题。当我尝试从主机装载包含文件的卷时,文件将转换为容器中的目录Docker卷将文件绑定为远程linux服务器上的目录,linux,docker,docker-compose,Linux,Docker,Docker Compose,我在远程服务器的linux上安装了docker。我使用ssh从Windows 10的主机连接到docker。为了将我的应用程序部署到docker,我使用docker compose v3,但我有一个严重的问题。当我尝试从主机装载包含文件的卷时,文件将转换为容器中的目录 这是我的docker compose.yml: version: "3.8" services: zeebe: container_name: zeebe image: camunda/zeeb
这是我的docker compose.yml:
version: "3.8"
services:
zeebe:
container_name: zeebe
image: camunda/zeebe
environment:
- ZEEBE_LOG_LEVEL=debug
ports:
- "26500:26500"
- "9600:9600"
- "5701:5701"
volumes:
- zeebe_data:/usr/local/zeebe/data
- type: bind
source: ./ZeebeServer/lib/application.yml
target: /usr/local/zeebe/config/application.yaml
read_only: true
depends_on:
- elasticsearch
networks:
- backend
operate:
container_name: operate
image: camunda/operate
ports:
- "8080:8080"
depends_on:
- zeebe
- elasticsearch
volumes:
- operate_data:/usr/local/operate
- type: bind
source: C:/Users/Aset/IdeaProjects/ABC-Store/ZeebeServer/operate/application.yml
target: /usr/local/operate/config/application.yml
read_only: true
networks:
- backend
elasticsearch:
container_name: elasticsearch
image: docker.elastic.co/elasticsearch/elasticsearch-oss:6.7.1
ports:
- "9200:9200"
environment:
- discovery.type=single-node
- cluster.name=elasticsearch
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
volumes:
- zeebe_elasticsearch_data:/usr/share/elasticsearch/data
networks:
- backend
这是我在命令docker compose-d之后的错误:
ERROR: for zeebe Cannot start service zeebe: OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused \"rootfs_linux.go:58: mounting \\\"/c/Users/User/IdeaProjects/ABC-Store/ZeebeServer/lib/application.yml\\\" to rootfs \\\"/var/lib/docker/overlay2/fec3c1f3ad8748e2bf3aa5fdf30558434c2474ecac8b7fdbad2fdbb27df24415/merged\\\" at \\\"/var/lib/docker/overlay2/fec3c1f3ad8748e2bf3aa5fdf30558434c2474ecac8b7fdbad2fdbb27df24415/merged/usr/local/zeebe/config/application.yaml\\\" 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
我知道您正试图将本地文件夹从Windows主机(
C:/Users/Aset/IdeaProjects/…
)装载到docker容器中
但这是不可能的(很容易),因为docker
只能装载docker主机本地的文件夹,即通过ssh连接到的远程服务器
因此,为了将本地Windows主机的文件夹装载到容器中,您首先必须以某种方式将该文件夹装载到docker主机/远程服务器上(例如,使用Samba共享),或者将该文件夹的内容复制到远程服务器,并将卷源编辑到docker主机上的文件夹路径
另外,如果您想知道为什么这不起作用,但是使用Windows主机上的文件进行的
docker build
会起作用:docker build
上载生成上下文,即当前目录,下载到docker主机,使其内容在服务器上可用。我知道您正试图将本地文件夹从Windows主机(C:/Users/Aset/IdeaProjects/…
)装载到docker容器中
但这是不可能的(很容易),因为docker
只能装载docker主机本地的文件夹,即通过ssh连接到的远程服务器
因此,为了将本地Windows主机的文件夹装载到容器中,您首先必须以某种方式将该文件夹装载到docker主机/远程服务器上(例如,使用Samba共享),或者将该文件夹的内容复制到远程服务器,并将卷源编辑到docker主机上的文件夹路径
注意:如果您想知道为什么这不起作用,但是使用Windows主机上的文件进行的docker build
会起作用:docker build
将生成上下文(即当前目录)上载到docker主机,使其内容在服务器上可用