发表于 2018-07-17 17:46:27

发表于 2018-07-17 17:46:27

我想在 Mac 版 Docker 上模拟一个带有 phpfpm、nginx、mysql 的 centos7 服务器。

目前我的中有这个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 的不同实例,对吗?

我该如何设置它,或者有没有更好的方法来解决这个问题?

非常感谢,

答案1

如果您确实只想使用基于 centOS 的图像,您可能需要考虑构建自己的图像。

在这种情况下,所有 Dockerfile 都需要以以下内容开头:

FROM centos

基于 centos 的 nginx 容器可以使用以下方式构建:

FROM centos

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

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

不过,听起来你可能想要稍微了解一下 docker,而且既然你提到想要“模拟运行 centOS 的服务器”,那么虚拟机可能比 docker 更合适。

请记住,docker 容器根本不需要在其中安装任何操作系统 - 完全可以用单个二进制文件构建容器(据我所知,这对于用 go 编写的程序来说实际上很常见)。容器旨在以流程为中心 - 也就是说,每个容器运行一个程序,通常在前台运行(所以 nginx、php-fpm)。容器中的“操作系统”基本上只是一组命令 - 容器“操作系统”显然没有自己的内核,而是使用主机内核。您“安装”CentOS,以便可以使用 CentOS 工具(对于您选择的操作系统也是如此) - 但生成的系统不一定与拥有带有 CentOS 的 VM 或物理主机相同(特别是因为内核可能完全不同,并且具有不同的功能)。

答案2

示例中使用的图像均基于 debian(nginxphp:fpm) 且为官方图片。

如果你真的想模仿 centos 服务器,也许最好的想法是构建自己的图像作为评论@iwaseatenbyagrue 在上一个回答中

相关内容