Команда, чтобы сказать, находимся ли мы в докере - PullRequest
0 голосов
/ 05 марта 2019

Будучи начинающим пользователем сложной системы CI, пробуя скрипты, я не понимаю, выполняются ли мои скрипты непосредственно с помощью bash моей системы или из док-контейнера, работающего в той же системе. Отсюда вопрос: какая команда (запрос переменной среды или что-то еще) могла бы сказать мне, нахожусь ли я в докере или нет?

Ответы [ 2 ]

1 голос
/ 05 марта 2019
  • Полагаю, вы пытаетесь выяснить, выполняется ли ваш сценарий из контекста контейнера Docker ИЛИ изнутри хоста, на котором запущен Docker.
  • Еще один способ посмотреть на это: у вас есть скрипт, который работает, и этот скрипт на самом деле является процессом. И любой данный процесс имеет связанный PID.
  • Возможно, вы захотите выяснить, выполняется ли этот процесс в контейнере Docker или непосредственно на хост-компьютере.
  • Предположим, что ваш процесс выполняется в контейнере Docker, и мы можем заключить, что процесс Docker является родительским для вашего процесса
  • Выполнение команды top выведет список всех процессов на машине. Тогда использование другой команды ps -axfo pid,uname,cmd даст полный список процессов
  • Допустим, вы определили идентификатор родительского процесса (например, 2871). Теперь вы можете запустить

docker ps | awk '{ print $1}' | xargs docker inspect -f '{{ .State.Pid }} {{ .Config.Hostname }}' | grep 2871

Используя это, вы можете идентифицировать контейнер, содержащий процесс

  • Если мы запустим pstree, мы сможем полностью обработать дерево процессов до процесса загрузки

Предоставлено:

Выяснение, к какому контейнеру процесса относится процесс

как-делать-я-получить по-родитель-идентификатор процесса-оф-а-Given-ребенка-процесса

Надеюсь, это поможет

0 голосов
/ 05 марта 2019

Если вы оказались в контейнере, вы должны выполнить команду для входа в этот контейнер.

Если вы забыли, где находитесь, введите docker ps. Если это не удается, вы находитесь в док-контейнере.

Редактировать:

Очевидно, что этот простой трюк не работает, когда вы запускаете Docker в Docker.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...