我想用phpfpm、nginx、mysql在Docker上模拟一个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实例,对吗?
我该如何设置这个,或者,有没有更好的方法来处理这个问题?
非常感谢,
发布于 2017-03-15 15:22:11
如果您绝对希望只使用基于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;"]
不过,听起来你可能有点想读一下对接器--既然你提到想要“模仿运行centOS的服务器”,那么虚拟机可能是比对接机更合适的选择。
一定要考虑到,码头容器根本不需要在“它们”中有任何操作系统--用一个二进制文件构建一个容器是完全可能的(对于用go,AFAIK编写的程序来说,这实际上是比较常见的)。容器是以进程为中心的-也就是说,您运行一个程序,通常在前台,每个容器(所以nginx,php)。容器中的'OS‘基本上只是一组命令--容器'OS’显然没有自己的内核,而是使用主机内核。您可以“安装”CentOS,以便您可以使用CentOS工具(对于您选择的操作系统也是如此)--但是最终的系统不一定与使用CentOS的VM或物理主机相同(特别是因为内核很可能不同,并且有不同的特性)。
发布于 2017-03-15 16:16:32
您在示例中使用的图像既基于debian (nginx,php:fpm),也是正式的iamges。
如果您真的想模仿centos服务器,最好的方法是将您自己的映像构建为注释@iwaseatenbyagrue在前一个答复中。
https://serverfault.com/questions/838084
复制相似问题