Centos

docker-compose centos7 nginx

  • March 15, 2017

我想在 Docker for Mac 上模擬一個帶有 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 實例,對吧?

我將如何進行設置,或者,有沒有更好的方法來處理這個?

非常感謝,

如果您絕對只想使用基於 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 編寫的程序來說有些常見,AFAIK)。容器旨在以程序為中心 - 也就是說,您通常在前台執行一個程序,每個容器(如 nginx、php-fpm)。容器中的“作業系統”基本上只是一組命令——容器“作業系統”沒有自己的核心,而是使用主機核心。您“安裝” CentOS,以便您可以使用 CentOS 工具(對於您選擇的作業系統也是如此) - 但生成的系統不一定與使用 CentOS 的 VM 或物理主機相同(特別是因為核心可能很不同,並具有不同的功能)。

引用自:https://serverfault.com/questions/838084