多个容器的容量相同

时间:2018-01-17 12:42:09

标签: docker dockerfile docker-volume

目前我正在开展一项需要创建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

2 个答案:

答案 0 :(得分:1)

假设您拥有以下容器卷

VOLUME /app/container1
VOLUME /app/container2
VOLUME /app/container3

共享卷的方式就是这样。从命令行创建3个卷:

docker volume create vol1 docker volume create vol2 docker volume create 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>
...

答案 1 :(得分:1)

你为什么不使用docker-compose?

docker-compose是在一个命令中运行所有容器的更好方法(您也可以运行特定容器。在docker-compose中,您可以轻松创建配置(安装卷,相互链接容器,网络......等) )。

请查看示例docker-compose文件

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_volume