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