Мне нужно определить имя дистрибутива ОС для любого изображения докеров. Я могу пометить ubuntu: last как image1: latest, но я должен получить информацию о распространении image1: самый последний, когда он запущен.
Для достижения этой цели я использовал указанную ниже команду для определения версии ОС:
$ docker tag ubuntu image1
$
$ docker run -it image1 /bin/sh -c "echo import platform > test.py; echo print\(platform.dist\(\)\) >> test.py; python3 test.py"
('Ubuntu', '14.04', 'trusty')
$
Однако это зависит от того, имеет ли изображение python2 или python3. Это не удается для ubuntu: 12.04, и мне нужно использовать python2.
$ docker run -it ubuntu /bin/sh -c "echo import platform > test.py; echo print\(platform.dist\(\)\) >> test.py; python3 test.py"
('Ubuntu', '14.04', 'trusty')
$
$ docker run -it ubuntu:12.04 /bin/sh -c "echo import platform > test.py; echo print\(platform.dist\(\)\) >> test.py; python3 test.py"
/bin/sh: 1: python3: not found
$
$ docker run -it ubuntu:12.04 /bin/sh -c "echo import platform > test.py; echo print\(platform.dist\(\)\) >> test.py; python2 test.py"
('Ubuntu', '12.04', 'precise')
$
Q1. Есть ли способ, которым я могу достичь того же, не зная, какая версия python существует в определенном изображении?
ПРИМЕЧАНИЕ. Цель состоит в том, чтобы определить, какое из базовых изображений используется для создания этого изображения. У меня нет доступа к файлу Docker, который использовался для создания этого изображения.
Q2. Существует другой подход использования точки входа. Я могу создать отдельное изображение из текущего изображения с помощью Dockerfile. Или я могу указать точку входа в cmdline при создании контейнера, но мне нужно, чтобы script был доступен в контейнере. Я предполагаю, что мне может понадобиться совместное хранилище при использовании cmdline, есть ли лучший способ достичь этого? Любые указатели будут действительно полезны.
Спасибо.