互联网上有一些教程,有些使用 docker-compose ,因此可以结合使用PHP,MariaDB和PHPMyAdmin,全部来自hub.docker.com上的原始项目。此方法非常快速且易于配置。有了一个yml文件,整个灯泡服务器基本上可以按要求运行。
version: '3'
services:
php-apache:
image: php:7.3.2-apache-stretch
ports:
- 80:80
volumes:
- D:\test\src:/var/www/html
links:
- 'mariadb'
mariadb:
image: mariadb:10.1
volumes:
- mariadb:/var/lib/mysql
environment:
TZ: "Europe/Rome"
MYSQL_ALLOW_EMPTY_PASSWORD: "no"
MYSQL_ROOT_PASSWORD: "rootpwd"
MYSQL_USER: 'testuser'
MYSQL_PASSWORD: 'testpassword'
MYSQL_DATABASE: 'testdb'
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: phpmyadmin
environment:
PMA_HOST: "mariadb"
restart: always
ports:
- 8181:80
volumes:
- /sessions
links:
- 'mariadb'
volumes:
mariadb:
其他人创建一个DOCKERFILE,并将所有apt-get命令放入该文件中,例如fauria/docker-lamp中的一个。
FROM ubuntu:16.04
MAINTAINER Fer Uria <fauria@gmail.com>
LABEL Description="Cutting-edge LAMP stack, based on Ubuntu 16.04 LTS. Includes .htaccess support and popular PHP7 features, including composer and mail() function." \
License="Apache License 2.0" \
Usage="docker run -d -p [HOST WWW PORT NUMBER]:80 -p [HOST DB PORT NUMBER]:3306 -v [HOST WWW DOCUMENT ROOT]:/var/www/html -v [HOST DB DOCUMENT ROOT]:/var/lib/mysql fauria/lamp" \
Version="1.0"
RUN apt-get update
RUN apt-get upgrade -y
COPY debconf.selections /tmp/
RUN debconf-set-selections /tmp/debconf.selections
RUN apt-get install -y zip unzip
RUN apt-get install -y \
php7.0 \ ...
虽然第一个看起来简单得多,但是第二个有一些冗余(对于PHP,是Debian,对于MariaDB,是ubuntu,对于PHPMyAdmin,是php-alpine)。
那么Docker现在可以运行3台服务器吗?一种用于PHP,一种用于数据库,一种用于phpmyadmin?感觉像是在浪费资源,不是吗?
哪种方法是典型的约定?
答案 0 :(得分:1)
根据官方文档:“通常建议您通过每个容器使用一项服务来分离关注区域”,这将易于维护,扩展或更新,而不会影响任何其他服务。
在docker中,这些实例称为
services
,因此docker组成了将每个组件作为服务运行
如果您需要了解更多有关Running multi-service in container的信息,请阅读更多
关于资源使用,它不会像您想的那样浪费太多,因为当您将虚拟机与Docker容器进行比较时,这是优点之一,因为它使用主机的相同内核,并且不会像虚拟机在运行整个单独的操作系统时会这样做