Docker数据/命名卷

时间:2016-12-12 17:25:38

标签: docker docker-compose docker-volume

我试图将我的想法包围在Docker卷中,但我必须要做一些事情才能理解它。

让我们说我有一个Python应用程序需要根据env变量进行初始化。我想要实现的是拥有"仅代码映像" ,我可以从中启动将在执行时挂载的容器。然后,主容器的入口点脚本将从仅代码容器中读取并生成一些文件。

我尝试创建一个图像以获得代码的副本

FROM ubuntu    
COPY ./app /usr/local/code/app

然后docker create --name code_volume

使用docker-compose:

app:  
    image: python/app
    hostname: app
    ports:
        - "2443:443"
    environment:
        - ENV=stuff
    volumes_from:
        - code_volume

我从app容器中收到错误,说它无法在/ usr / local / code / app / src中找到文件但是当我用bash运行code_volume然后进入文件夹时,文件就在那里...

我尝试更改访问权限,添加/ bin / true(在某些示例中看到它),但我无法获得我想要的工作。我检查了docker volume create功能,但它似乎是用于存储/共享数据

我错过了什么?是否在装入卷之前执行了入口点脚本?对于这样的案例,是否有任何最佳实践不涉及安装文件夹并为每个容器保留一份副本?我应该再考虑我的容器吗?

1 个答案:

答案 0 :(得分:0)

创建时,您不会在code_volume容器上声明卷。

 docker create -v /usr/local/code/app --name code_volume