Мне нужно определить имя дистрибутива ОС для любого образа докера. Я могу пометить ubuntu:latest как image1:latest, но я должен получить информацию о распространении image1:latest при его запуске.
Для этого я использовал приведенную ниже команду для определения версии ОС:
$ 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 находится в конкретном изображении?
ПРИМЕЧАНИЕ. Цель состоит в том, чтобы определить, какой базовый образ использовался для создания этого образа. У меня нет доступа к файлу Dockerfile, который использовался для создания этого образа.
Q2. Существует еще один подход к использованию точки входа. Я могу создать отдельный образ из текущего образа, используя Dockerfile. Или я могу указать точку входа в командной строке при создании контейнера, но мне нужно, чтобы скрипт был доступен внутри контейнера. Я предполагаю, что мне может понадобиться общее хранилище при использовании cmdline, есть ли лучший способ добиться этого? Любые указатели были бы действительно полезны.
Спасибо.