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

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

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

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

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

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

3 ответа

Решение

Это должно быть частью вашего определения задачи, вам нужно добавить тома в определение задачи, а затем сослаться на него в параметре исходного тома, вот учебник от 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"
      }
    }
  ]

По состоянию на август 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.

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

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

Подход 1: Когда вы хотите подключить EFS к экземпляру EC2, а затем настроить все контейнеры для его использования. Запустите приведенную ниже команду, чтобы подключить EFS к экземпляру EC2.

      sudo mount -t efs fs-0ad7c287c2f7c27c2 /mnt/efs

Затем укажите его в определении задачи как sourcePath, чтобы контейнер мог использовать путь монтирования efs в качестве доступного для записи уровня.

      "volumes": [
 {
  "name": "efs",
  "host": {
    "sourcePath": "/mnt/efs/mysql"
   }
 }
]

Подход 2. Если в ECS включено автоматическое масштабирование, рекомендуется присоединить том EFS непосредственно к задаче/контейнеру ECS. В определении задачи упомяните, как показано ниже, поэтому контейнеры будут напрямую монтировать EFS при появлении.

      "volumes": [
    {
        "name": "Tiger-Test",
        "efsVolumeConfiguration": {
        "fileSystemId": "fs-0ad7c287c2f7c27c2"
        }
    }
]
Другие вопросы по тегам