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.