Можем ли мы смонтировать EFS в докер-контейнере AWS ECS?

У меня есть экземпляр ECS, на котором работают мои докер-контейнеры. Я хочу смонтировать EFS в контейнере докеров, который работает на ECS. Возможно ли тогда как?

Я могу смонтировать EFS в экземпляре ECS, но не в контейнере докеров, который работает на ECS.

EFS имеет прямое подключение и может подключаться к нему через порт 2049 из докера.

mount -t nfs4 -o nfsvers = 4.1, rsize = 1048576, wsize = 1048576, hard, timeo = 600, retrans = 2 X.X.X.X: / / efs

Ошибка: - mount.nfs4: операция запрещена


person mahendra rathod    schedule 26.02.2018    source источник


Ответы (2)


Это должно быть частью вашего определения задачи, вам нужно добавить тома в определение задачи, а затем указать их в параметре исходного тома, вот руководство от AWS.

https://aws.amazon.com/blogs/compute/using-amazon-efs-to-persist-data-from-amazon-ecs-containers/

  "volumes": [
    {
      "name": "efs",
      "host": {
        "sourcePath": "/mnt/efs/mysql"
      }
    }
  ]
person Sudharsan Sivasankaran    schedule 26.02.2018
comment
Спасибо @Sudharsan. Я успешно настроил его. я получил подсказку и правильный обходной путь из вашего ответа. REF URL: - docs.aws.amazon.com/AmazonECS/latest/ руководство разработчика / - person mahendra rathod; 27.02.2018
comment
ПРИМЕЧАНИЕ. Приведенная выше конфигурация работает только для типов запуска EC2 на ECS. Для Fargate необходимо использовать efsVolumeConfiguration - person Peter P.; 19.12.2020

Обновлять; 17 января 2020 г. - предварительная версия поддержки ECS / EFS

17 января 2020 г. AWS объявил о предварительной версии поддержки ECS для EFS. Важно отметить, что в настоящее время это предварительный выпуск; см. информацию о том, что это означает, в документации по конфигурации.

Вместо определения томов и всех их параметров подключения вы можете просто определить новый объект EFSVolumeConfiguration.

"EFSVolumeConfiguration": {
  "fileSystemId": "fs-xxxxxx",
  "rootDirectory": "/mnt/volume/path"
}

Оригинальный ответ

По состоянию на август 2018 года с поддержкой томов докеров теперь вы можете монтировать общие ресурсы NFS непосредственно в контейнер ECS.

В документации, которая доступна в настоящее время, не подробно описано, как использовать EFS с ECS через том докера, однако это возможно.

Настройка громкости докера

Во-первых, включите раздел volumes в конфигурацию задачи, подобный следующему:

"volumes": [
   {
     "name": "efs",
     "host": null,
     "dockerVolumeConfiguration": {
       "autoprovision": null,
       "labels": null,
       "scope": "task",
       "driver": "local",
       "driverOpts": {
         "type": "nfs",
         "device": ":/",
         "o": "addr=<fs-id>.efs.us-east-1.amazonaws.com,nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport"
       }
     }
   }
]

Убедитесь, что вы обновили параметр addr внутри параметра o, чтобы он соответствовал DNS-имени вашей файловой системы EFS.

Затем включите этот том в монтирование в одном из ваших определений контейнера. Дополнительную информацию о синтаксисе см. В разделе Docker Volumes.

"containerDefinitions": [
    {
        "mountPoints": [
            {
                "sourceVolume": "efs",
                "containerPath": "/path/to/mount_volume",
                "readOnly": false
            }
        ]
    }
]

Параметры конфигурации, используемые для соединения NFS, рекомендованы AWS на момент написания для Монтирование файловых систем EFS.

person Luke Waite    schedule 05.10.2018
comment
Хотел бы я дать вам больше голосов за это. Потрясающие! - person Victor Schröder; 09.10.2018
comment
работает ли это для определений задач, автоматически созданных AWS Batch? AFAIK нет. - person Sagi Mann; 05.12.2018