У меня возникла проблема с контейнером 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