Мне нужно, чтобы мое изображение начиналось с этой команды:
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?
@kallusis369 я развертываю образы с помощью этой команды: cloud.google.com/sdk/gcloud/reference/beta/compute/instances/… Я не понимаю, как связать это с инструкцией, на которую вы ссылаетесь к
Когда вы используете эту функцию для развертывания контейнера непосредственно в 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
и уж точно не написан с ошибками.
В последней версии Docker мне нужно было изменить 4-ю строку на echo $ACCESS_TOKEN | sudo docker login -u oauth2accesstoken --password-stdin https://gcr.io
, чтобы это работало. Также убедитесь, что у вашей учетной записи службы Compute Engine есть роль «Просмотр объектов хранилища».
Вы развернули свой экземпляр GCE на основе ОС, оптимизированной для контейнеров? Если да, кажется, вы можете запустить докер так же, как обычно. См. здесь -> cloud.google.com/container-optimized-os/docs/how-to/…