我对Docker来说还很陌生,所以我可能做错了什么
我需要使用docker compose文件在docker容器之间共享一些文件
我已经创建了这样的卷
docker volume create shared
之后,我可以检查创建的音量
docker volume inspect shared
[
{
"CreatedAt": "2019-03-08T14:54:57-05:00",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/shared/_data",
"Name": "shared",
"Options": {},
"Scope": "local"
}
]
我的docker-compose.yaml文件看起来像这样
version: '3.1'
services:
service1:
build:
context: Service1
dockerfile: Dockerfile
restart: always
container_name: server1-server
volumes:
- shared:/shared
service2:
build:
context: Service2
dockerfile: Dockerfile
restart: always
container_name: server2-server
volumes:
- shared:/shared
volumes:
shared:
external: true
Dockerfile看起来像这样(仅出于测试目的)
FROM microsoft/dotnet:2.2-sdk AS build-env
RUN echo "test" > /shared/test.info
当我发出docker-compose up命令时,出现此错误
/bin/sh: 1: cannot create /shared/test.info: Directory nonexistent
如果我将Dockerfile修改为此
FROM microsoft/dotnet:2.2-sdk AS build-env
WORKDIR /app
COPY *.csproj ./
RUN cp *.csproj /shared/
我收到此错误
cp: cannot create regular file '/shared/': Not a directory
任何想法如何实现这一目标?
答案 0 :(得分:2)
Dockerfile包含创建映像的指令。构建映像后,可以将其作为容器运行。
启动容器时会附加一个卷。
因此,在构建映像时使用Dockerfile指令将文件复制到卷中是没有意义的。
卷通常用于在容器之间共享运行时数据,或在容器停止后保留数据。