Как передать аргументы для запуска докера в CLI (интерфейс командной строки)?

Мне нужно, чтобы мое изображение начиналось с этой команды:

docker run -it --rm --security-opt seccomp=./chrome.json <image_id>

Я развертываю его в Google Compute Engine: https://cloud.google.com/compute/docs/containers/deploying-containers

Насколько я понимаю, я не могу указать аргументы там, поэтому Google Cloud запускает его просто командой docker run.

Как передать эти аргументы? Может быть, я могу как-то указать эти аргументы в Dockerfile?

Вы развернули свой экземпляр GCE на основе ОС, оптимизированной для контейнеров? Если да, кажется, вы можете запустить докер так же, как обычно. См. здесь -> cloud.google.com/container-optimized-os/docs/how-to/…

SeungwooLee 21.12.2020 09:03

@kallusis369 я развертываю образы с помощью этой команды: cloud.google.com/sdk/gcloud/reference/beta/compute/instances‌​/… Я не понимаю, как связать это с инструкцией, на которую вы ссылаетесь к

stkvtflw 21.12.2020 11:07
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
2
2
1 028
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Когда вы используете эту функцию для развертывания контейнера непосредственно в Compute Engine, вы ограничены определением

  • Входная точка
  • Аргументы для передачи в точке входа
  • Переменные среды

Вот и все, вы не можете добавлять дополнительные/пользовательские параметры.

Одним из решений является использование вместо встроенной функции оптимизированной для контейнера ОС (COS) на вашем вычислительном движке и создание сценария запуска для загрузки и запуска контейнера с нужными вам аргументами докера.

METADATA=http://metadata.google.internal/computeMetadata/v1
SVC_ACCT=$METADATA/instance/service-accounts/default
ACCESS_TOKEN=$(curl -H 'Metadata-Flavor: Google' $SVC_ACCT/token | cut -d'"' -f 4)
docker login -u oauth2accesstoken -p $ACCESS_TOKEN https://gcr.io
docker run … gcr.io/your-project/your-image

В последней строке вы можете настроить параметр запуска в своем сценарии запуска.

Итак, теперь для обновления вам нужно обновить сценарий запуска и перезагрузить вашу виртуальную машину (или создать новый Compute Engine с COS и новым сценарием запуска и удалить предыдущий).

Это вопрос компромисса между удобством встроенной функции и возможностями настройки.

хорошо, все это имеет общий смысл. Я пытаюсь пойти по сценарию запуска. Раньше я много раз использовал метаданные startup-script, но не с контейнерами. Но сейчас это просто не работает. Я могу запустить его вручную, он работает абсолютно нормально. Но при запуске экземпляра по какой-то причине в журналах нет следов его работы. Он присутствует в метаданных экземпляра, начинается с #!/bin/bash и уж точно не написан с ошибками.

stkvtflw 23.12.2020 08:24

В последней версии Docker мне нужно было изменить 4-ю строку на echo $ACCESS_TOKEN | sudo docker login -u oauth2accesstoken --password-stdin https://gcr.io, чтобы это работало. Также убедитесь, что у вашей учетной записи службы Compute Engine есть роль «Просмотр объектов хранилища».

kennysong 21.07.2021 14:06

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