Назад | Перейти на главную страницу

Создание докеров для CentOS7 и Nginx

Я хочу имитировать сервер centos7 с помощью phpfpm, nginx, mysql в Docker для Mac.

В настоящее время у меня есть это в моем docker-compose.yml, но нигде ничего не сказано об ОС.

version: '2'

services:

    web:
        build: .
        image: nginx:latest
        ports:
            - "8080:80"
        volumes:
            - ./code:/code
            - ./default.conf:/etc/nginx/conf.d/default.conf
        networks:
            - code-network
    php:
        image: php:fpm
        volumes:
            - ./code:/code
            - ./log.conf:/usr/local/etc/php-fpm.d/zz-log.conf
        networks:
            - code-network

networks:
    code-network:
        driver: bridge

Я думаю, что лучше всего хранить эти службы в виде отдельных контейнеров, но я полагаю, что все они должны быть разными экземплярами CentOS, верно?

Как мне это настроить или есть лучший способ справиться с этим?

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

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

В этом случае все ваши Dockerfiles должны начинаться с:

FROM centos

Контейнер nginx на основе centos может быть построен с помощью:

FROM centos

RUN yum install -y epel-release 
RUN yum update -y
RUN yum install -y nginx

ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"]

Это действительно похоже на то, что вы можете немного почитать о докере - и поскольку вы упомянули, что хотите «имитировать сервер, на котором работает CentOS», то виртуальная машина может быть более подходящим выбором, чем докер.

Примите во внимание, что контейнеры докеров вообще не нуждаются в какой-либо ОС - вполне возможно создать контейнер с одним двоичным файлом (и это на самом деле несколько распространено для программ, написанных на go, AFAIK). Контейнеры должны быть ориентированы на процесс - то есть вы запускаете одну программу, обычно на переднем плане, для каждого контейнера (например, nginx, php-fpm). «ОС» в контейнере - это, по сути, просто набор команд - в частности, «ОС» контейнера не имеет собственного ядра, но вместо этого использует ядро ​​хоста. Вы «устанавливаете» CentOS, чтобы использовать инструменты CentOS (и то же самое для выбранной вами ОС), но полученная система не обязательно будет тем же самым, что и виртуальная машина или физический хост с CentOS (особенно потому, что ядра могут быть разными. , и имеют разные функции).

Образы, которые вы используете в примере, основаны как на debian (nginx, php: fpm) и являются официальными iamges.

Если вы действительно хотите имитировать сервер centos, возможно, лучшая идея - создать свои собственные изображения в виде комментариев. @iwaseatenbyagrue в предыдущем ответе