人们如何处理Docker容器的持久存储?
我目前正在使用这种方法:构建映像,例如PostgreSQL,然后启动容器
docker run --volumes-from c0dbc34fd631 -d app_name/postgres
Run Code Online (Sandbox Code Playgroud)
恕我直言,有缺点,我不能(偶然)删除容器"c0dbc34fd631".
另一个想法是将主机卷"-v"安装到容器中,但是,用户ID的容器内不一定匹配用户ID从主机,然后权限可能会混乱.
注:与其--volumes-from 'cryptic_id'你也可以使用--volumes-from my-data-container这里my-data-container是你分配到纯数据容器,如姓名docker run --name my-data-container ...(见接受的答案)
从docker我标记的问题计数中假设StackOverflow是正确的地方(而不是例如DevOps),如果没有,请指出我正确的地方或相应地移动这个问题.
我的方案如下:
我想要实现的是docker-compose.yaml在我调用的应用程序存储库中有一个文件,docker-compose up然后启动所有必需的容器(如果尚未运行),例如,当我docker-compose up在后端应用程序存储库中调用时启动数据库容器.
我的方法是创建一个新的git存储库,它定义所有共享的docker镜像/容器,并且docker-compose.yaml只有docker-compose build在发生变化时才能运行所有开发人员(可能在将来使用git commit hook自动化).中央docker-compose.yaml看起来像这样
version: "3"
services:
postgres:
build: ./images/postgres
image: MY-postgres
container_name: MY-postgres-server
ports:
- "5432:5432"
httpd:
build: ./images/httpd
image: MY-httpd
container_name: MY-httpd-server
ports:
- "80:80"
Run Code Online (Sandbox Code Playgroud)
在Dockerfile和描述每个图像内置如何在自己的子文件夹,我认为不相关的问题,基本上是默认的图像高山+阿帕奇/ Postgres的.
所以问题是:docker-compose.yaml应用程序git存储库中的内容如何引用上述中心定义的服务/容器docker-compose.yaml.
现在,因为这是 没有 新的 问题 情景,我做了一些研究和诚实的各种方法,并提出了解决方案令人困惑,这一次的各种版本中不提倡使用的和兼容性,功能等.