©
This document uses PHP Chinese website manual Release
Docker - 是一个完整功能虚拟机方案的轻量化替代品 - 之所以获得这样称呼是由于其“容器(container)”特性。一个容器就是一个构建模块,简单来说,就是执行一个特定的任务,例如,运行一个 web 服务器。“镜像(image)”是用来构建容器的集成包(package) - Docker 提供了一个存放所有镜像的仓库。
一个典型的 LAMP 应用包含以下三个容器:一个 Web 服务器、一个 PHP-FPM 进程(process)和 MySQL。就像 Vagrant 中的共享文件夹一样,你不需要改变你的文件的所在位置,你只需要告诉 Docker 到哪里可以找到他们即可。
你可以通过命令行来生成容器(下面有实例),或者,为了方便维护,为你的项目构建一个 docker-compose.yml 文件来配置生成容器的规则和容器的通讯方式。
Docker 在多网站要求不同运行环境的情况下尤其趁手,你可以在一台机器上运行多个 Docker 虚拟主机,他们将会运行在完全不同的环境中,使用不同的 Web 服务,并且不管在内存共享、硬盘空间、或者是 CPU 资源上,都能做到高效利用。这些虚拟机同时也指出秒寄重启。
实例:在 Docker 中运行 PHP 应用
在你成功 安装 Docker 后, 你只需一条命令就能启动一个 web 服务。 以下命令将下载一个功能完整的 Apache 镜像,包含的 PHP 也是最新版本的,/path/to/your/php/files 目录将映射到文档根目录,通过 http://localhost:8080 地址就可以看到欢迎页面:
docker run -d --name my-php-webserver -p 8080:80 -v /path/to/your/php/files:/var/www/html/ php:apache
上面的命名将初始化并启动容器。-d 参数告诉容器在后台运行。 如需停止或启动它,只需执行 docker stop my-php-webserver 和 docker start my-php-webserver 命令即可(其他参数就不再需要了)。
了解更多关于 Docker 的信息
上述命令展示了快速启动服务的一种方式。Docker 还提供了很多功能等着你去发现(Docker Hub) 上更是提供了数以千计的已经构建好的镜像)。花点时间去学习一下专用术语和 Docker 用户手册会对你多有裨益,并且,不要在未经安全检查的的情况下运行从网上下载的代码 - 非官方的镜像有时候并没有最新安全更新。如果你对镜像有疑问,优先选择 官方的仓库。
PHPDocker.io 网站能够自动生成你所需要的 LAMP/LEMP 服务栈的所有文件,包含你所选择的 PHP 版本和扩展模块。