Можем ли мы смонтировать 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"
}
}
]