docker
docker是一个轻量级的虚拟化解决方案。Docker 为各种应用程序提供了 Linux 容器。通常情况下,一个 LAMP 应用汇包含以下三个容器:一个 Web 服务器,一个 PHP-FPM 线程和 MySQL。可以为项目构建一个 docker-compose.yml
文件来配置生成容器的规则和容器的通讯规则,或者在Vagrant 的共享文件夹中,不需要改变应用文件路径,只需要告诉 Docker 到哪里可以找到MySQL等容器即可。
Docker 在多网站要求不同运行环境的情况下尤其趁手,你可以在一台机器上运行多个 Docker 虚拟主机,他们将会运行在完全不同的环境中,使用不同的 Web 服务,并且不管在内存共享、硬盘空间、或者是 CPU 资源上,都能做到高效利用。这些虚拟机同时也指出秒寄重启。
官方的仓库:非官方的镜像有时候并没有最新安全更新,如果你对镜像有疑问,优先选择 官方的仓库
Docker Hub提供了数以千计的已经构建好的镜像
PHPDocker.io是一个很棒的 PHP 相关的 Docker 资源站点。支持自动生成一个全栈的 LAMP/LEMP 服务器,包含你自定义的 PHP 版本和扩展。
Vagrant
Vagrant 可以让你使用单一的配置信息来部署一套虚拟环境, 最后打包为一个所谓的 box (就是已经部署好环境的虚拟机器). 你可以手动来安装和配置 box, 也可以使用自动部署工具, 如 Puppet 或者 Chef .
自动部署工具可以让你快速部署一套一模一样的环境, 避免了一大堆的手动的命令输入, 并且允许你随时删除和重建一个全新的 box, 虚拟机的管理变得更加简单.
Vagrant 还可以在虚拟机和主机上分享文件夹, 意味着你可以在主机里面编辑代码, 然后在虚拟机里面运行.
下面是一些其他的软件, 可以帮助你更好的使用 Vagrant:
- Rove: 使用 Chef 自动化安装一些常用的软件, PHP 包含在内.
- Puphpet: 简单的 Web 图形界面用来生成部署 PHP 环境的 Puppet 脚本, 此项目不仅可以用在开发上, 也可以在生产环境中使用.
- Protobox: 是一个基于 vagrant 的一个层, 还有 Web 图形界面, 允许你使用一个 YAML 文件来安装和配置虚拟机里面的软件.
- Phansible: 提供了一个简单的 Web 图形界面, 用来创建 Ansible 自动化部署脚本, 专门为 PHP 项目定制.
docker基本命令
dockerfile: 从无到有的构建镜像;
docker run: 启动容器;
docker-compose: 启动服务,用于编排容器的;
镜像构建:即创建一个镜像,它包含安装运行所需的环境、程序代码等。这个创建过程就是使用 dockerfile 来完成的。
容器启动:容器最终运行起来是通过拉取构建好的镜像,通过一系列运行指令(如端口映射、外部数据挂载、环境变量等)来启动服务的。针对单个容器,这可以通过 docker run 来运行。
如果涉及多个容器的运行(如服务编排)就可以通过 docker-compose 来实现,它可以轻松的将多个容器作为 service 来运行(当然也可仅运行其中的某个),并且提供了 scale (服务扩容) 的功能,把一些命令一次性写在docker-composer.yml文件中,之后每次启动这一整个环境(含3个容器)的时候,你只要敲一个docker-composer up命令就ok了。
docker的基本操作:
1 | docker pull ubuntu(镜像名)下载最新版本的ubuntu |