AWS ECS任务:将卷安装到我的容器会清除我复制的文件

时间:2018-03-24 03:13:45

标签: docker docker-compose amazon-ecs

我正在尝试使用持久存储运行任务。该任务执行docker镜像,该镜像创建目录并将文件复制到其中。但是,当任务定义将卷装入创建的目录时,文件将丢失。

为简洁起见,Dockerfile的相关行是:

RUN mkdir /root/createdDir
COPY ./myFile.txt /root/createdDir/myFile.txt

任务定义JSON的相关字段是:

{
  "containerDefinitions":[
  {
    ...,
    "mountPoints": [
      {
        "readOnly": null,
        "containerPath": "/root/createdDir",
        "sourceVolume": "shared"
      }
    ],
    "image": "myImage"
  }]
  "volumes": [
  {
    "name": "shared",
    "host": {
      "sourcePath": null
    }
  }]
}

运行任务时,无法再找到该文件。如果我在没有向容器添加挂载点的情况下运行任务,则该文件仍然存在。

尝试使用docker-compose在本地执行此操作时,我可以使用相同的Dockerfile,并在docker-compose.yml文件中将以下规范添加到服务卷:shared:/root/createdDir,其中shared是在docker-compose.yml中使用本地驱动程序声明的卷。

1 个答案:

答案 0 :(得分:3)

将卷安装到容器上的现有目录中的行为可能会令人困惑。它与Linux的mount

的一般行为一致
  

以前的内容(如果有的话)和dir的所有者和模式变得不可见。

尽可能避免这样做,因为当卷和容器具有相同名称的文件时,它可能导致难以发现的问题。