CentOS с Python в качестве базового образа - PullRequest
0 голосов
/ 16 июня 2020

Я создал Dockerfile, а затем собрал его для своей команды. В настоящее время я беру из CentOS: последний образ, затем создаю последнюю версию Python и сохраняю изображение в файл .tar. Идея состоит в том, чтобы мои коллеги использовали это изображение для добавления своих проектов Python в папку / pyscripts. Это рекомендуемый способ создания базового образа или есть способ лучше go сделать это?

# Filename: Dockerfile
From centos

RUN yum -y update && yum -y install gcc openssl-devel bzip2-devel libffi-devel wget make && yum clean all

RUN cd /opt && wget --no-check-certificate https://www.python.org/ftp/python/3.8.3/Python-3.8.3.tgz && tar xzf Python-3.8.3.tgz && cd Python-3.8*/ && ./configure --enable-optimizations && make altinstall && rm -rf /opt/Python* && mkdir /pyscripts

Большое спасибо!

1 Ответ

1 голос
/ 16 июня 2020

Да, это стандартный и рекомендуемый способ создания базового образа из родительского образа (CentOS в этом примере), если это то, что вам нужно Python 3.8.3 (latest версия) в системе CentOS.

В качестве альтернативы вы можете получить общий образ c Python с последней версией Python (теперь это 3.8.3), но на основе другого дистрибутива Linux (Debian) из репозитория Docker HUB, запустив :

docker pull python:latest

И затем создайте из него базовый образ, в котором вам просто нужно будет создать каталог / pyscripts
Итак, Dockerfile будет выглядеть так:

FROM python:latest
RUN mkdir /pyscripts

Или вы можете вытащить уже созданный образ CentOS / Python (с более низкой версией 3.6) из репозитория Docker HUB, запустив:

docker pull centos/python-36-centos7

А затем создать из него базовый образ, в котором вы просто нужно создать каталог /pyscripts Таким образом, файл Dockerfile будет выглядеть так:

FROM centos/python-36-centos7:latest
USER root
RUN mkdir /pyscripts

Не забудьте добавить эту строку сразу после первой строки, чтобы запускать команды как root:

USER root

В противном случае вы бы получили Permission Denied сообщение об ошибке

...