目前,我正在执行一个任务,需要创建4-5个不同的docker containers。现在的问题是,所有这些容器都应该使用安装在容器中的相同的卷。
我正在使用单个Dockerfile构建映像,然后使用这些映像运行容器。最好的方法是在VOLUME中使用Dockerfile,但我不知道如何确切地使用它。
以下是Dockerfile的代码片段-
FROM [imagename]
WORKDIR \app
VOLUME \app\[container's folder] #this folder is separate for each container. eg. VOLUME \app\sql
COPY shell.sh \app\[container's folder]\shell.sh
.
.
rest of code在运行容器并猛击到它之后,对于特定的容器,文件被存储在特定的路径中;例如。与上面的片段一样,shell.sh存在于路径\app\[container's name]中。
但是,当我签入另一个容器时,我能够在特定路径中看到该容器的文件,但不能看到第一个容器的文件。
这就是我想要的结构-
app
|- sql
| |- shell-script files
|- tsdb
| |- shell-script files
|- kernel
| |- shell-script files
.
.
OR
/app/sql/shellsql.sh
/app/tsdb/shelltsdb.sh
/app/kernel/shellkernel.sh发布于 2018-01-17 14:24:41
您有以下容器的卷
VOLUME /app/container1VOLUME /app/container2VOLUME /app/container3分享卷的方式就是这样。从命令行创建3个卷:
码头容量创建vol1停靠库卷创建vol2停靠库卷创建vol3
在运行每个容器时,挂载所有卷
docker run -v vol1:/app/container1 -v vol2:/app/container2 -v vol3:/app/container3 <image1>
docker run -v vol1:/app/container1 -v vol2:/app/container2 -v vol3:/app/container3 <image2>
...发布于 2018-01-17 16:04:14
你为什么不用码头写作?
docker是在一个命令中运行所有容器的更好方法(您也可以运行特定的容器。在对接-撰写,你可以很容易地创建配置(挂载卷,链接容器到对方,网络.等)。
请看一下样例停靠-撰写文件。
container1:
build: image_name
volumes_from:
- data_volume
container2:
build: vra_manager2
volumes_from:
- data_volume在上面的例子中,两个容器使用相同的data_volume。您不必为每个容器编写大型命令。
例如:
volumes:
- /vol1:/app/container1
volumes_from:
- data_volumehttps://stackoverflow.com/questions/48301448
复制相似问题