У меня есть особая проблема с runc контейнером.У меня есть скрипт bash (работающий от имени пользователя root), который выполняет следующее:
$ setcap cap_net_bind_service=+ep ${PACKAGE_DIR}/bin/my-binary
$ chpst -u vcap:vcap "${PACKAGE_DIR}/bin/my-binary" --config "${JOB_DIR}/config/config.json"
каждый раз, когда он запускается при запуске контейнера, он завершается с таким выводом:
5116 Segmentation fault chpst -u vcap:vcap "${PACKAGE_DIR}/bin/my-binary" --config "${JOB_DIR}/config/config.json"
Однако:
- Когда я ssh или shell в контейнер и запускаю команду вручную, она будет работать.
- Если я удаляю
chpst -u vcap:vcap
(запуск от имени root), это также будет работать. - Если я удалю объявление
setcap cap_net_bind_servic...
, оно также будет работать. - Когда я изменю chown
my-binary
на vcap:vcap
, оно будет работать.
Но ни один из них не является действительным вариантом для реальной реализации.Я даже отредактировал исходный код двоичного файла так, чтобы он просто спал в течение 2 часов, но это не имело никакого эффекта, поэтому я не думаю, что фактический исходный код двоичного файла является причиной.Что-то мне не хватает?
Моя версия runc:
runc version 1.0.0-rc5+dev
commit: 69663f0bd4b60df09991c08812a60108003fa340
spec: 1.0.0