AWS Fargate - Объемы

У меня проблема с моим файлом компоновки Docker: Это мой файл компоновки Docker:

version: '3'

  services:
   nginx-proxy:
    image: xxxxx.dkr.ecr.xxxxx.amazonaws.com/xxxx:latest
    container_name: "nginx-proxy"
    restart: always
    ports:
     - "80:80"
     - "443:443"
    volumes:
     - /var/run/docker.sock:/tmp/docker.sock:ro
...

Это следующая ошибка:

ClientException: host.sourcePath should not be set for volumes in Fargate

Определение моей задачи:

"mountPoints": [],
...
"volumes": [],
...
"readonlyRootFilesystem": false,

Я также хочу, чтобы мой том был "только для чтения".

Кто-нибудь знает, какое имя переменной мне нужно использовать в моем файле docker composer?

Кто-нибудь может мне помочь?

Спасибо

2 ответа

Кто-нибудь знает, какое имя переменной мне нужно использовать в моем файле docker composer?

Фаргейт не позволяет вам указать host или же sourcePath для привязного крепления. Вы можете проверить документы на тома связывания и обзор документов хранилища задач Fargate, чтобы узнать больше.

Основная предпосылка Fargate заключается в том, что он скрывает основной хост от задачи, поэтому у вас, как у конечного пользователя, очень мало возможностей для взаимодействия с хостом - вы не можете подключиться к нему по ssh, вы не можете прикоснуться к его файловой системе. В случае привязки, вы не можете указать host потому что вы не знаете имя или местоположение хоста во время развертывания, и вы не можете далее указать sourcePath потому что вы ничего не можете знать о файловой системе на хосте.

В случае попытки смонтировать docker.sock особенно это даст вам доступ ко всем работающим на хосте контейнерам, которые, вероятно, принадлежат другим пользователям аккаунтов / aws. Это было бы очень плохо со всех сторон.

Могу ли я использовать крепление для привязки с Fargate?

Да. Хотя это может иметь ограниченную полезность, так как вы не сможете получить доступ к файловой системе основного хоста, чтобы получить любые файлы, переданные из контейнера на хост.

Если значение sourcePath не существует в экземпляре контейнера узла, его создает демон Docker.

Таким образом, ответ для монтирования является, по сути, не указывать hostи демон Docker просто создаст для вас путь. Это полезно? Вероятно, не в вашем случае.

«Особенно в случае попытки смонтировать docker.sock, это даст вам доступ ко всем контейнерам, работающим на хосте, который, вероятно, принадлежит другим учетным записям / пользователям aws. Это было бы очень плохо». Этот раздел неверен, так как в Fargate: Fargate Хосты не используются разными клиентами, даже если они обслуживают только одну задачу. У каждой задачи, выполняемой с помощью Fargate в вашей учетной записи, есть свой индивидуальный хост Fargate.

Другие вопросы по тегам