如何Dockerise和部署多个应用程序的WordPress在Ubuntu

在这种DigitalOcean文章中,使用Linux的Docker容器引擎,我们学习如何打包并包含在Ubuntu云服务器的WordPress应用程序,并发现一台主机上部署多个WordPress网站的最简单,最安全的方式。

介绍


WordPress的已经成为了世界上前所未有的最普遍部署和使用的Web应用程序之一。 由于多年的不断发展,现在可以创建基于WordPress和其可用的插件/扩展几乎无限量的不同的网站(甚至网络应用程序)。

在这种DigitalOcean文章中,使用Docker Linux的容器引擎,我们将学习如何dockerise(即包和含)Ubuntu的云服务器的WordPress应用和发现什么,可能就是一个部署多个WordPress网站的最简单,最安全的方法主办。

词汇表


Docker简介


2. WordPress简介


在Ubuntu上安装Docker(最新)


使用Docker


  1. 命令行界面用法和守护程序
  2. 客户端命令

5.使用Dockerfiles


  1. 什么是Dockerfiles?
  2. Dockerfile命令概述

6.创建WordPress容器


  1. 拉图像
  2. 创建公共可访问的WordPress容器
  3. 创建本地可访问的WordPress容器
  4. 限制容器的内存使用

Docker简介


Docker项目提供了更高级别的工具,一起工作,这是建立在某些Linux内核的功能外,旨在帮助开发人员和系统管理员端口应用的目标-与它们的依赖关系的共同地-并让他们跨系统和机器头痛运行免费的

Docker通过为使用映像创建的称为“容器”的应用程序创建安全的基于LXC(Linux容器)的环境来实现这一点。 这些碱基对的容器可以通过登录内部像虚拟机手动执行命令,或通过Dockerfiles自动化过程来构建。

注意:要了解更多关于Docker及其部件(即Docker守护进程,CLI,图像等),看看我们的介绍性文章,以项目: Docker解释说 :入门

WordPress简介


WordPress最初创建为易于安装和使用自助发布平台(即Blogging引擎)。 它已经变得非常受欢迎,多年来,这导致许多第三方插件的开发,将工具变成一个完整的CMS(内容管理系统)。 基于WordPress,许多不同类型的网站和Web应用程序可以创建简单和部署轻松。

WordPress是一个使用PHP编程语言开发的开源平台,它确实帮助它取得成功。 PHP目前是最常见的网站和Web应用程序创建语言之一,并且是许多公司(包括Facebook)的选择。

WordPress网站依靠MySQL关系数据库来保存他们的数据,并且有多种方式为WordPress站点提供动力,因为有多种选择可以一起运行PHP和MySQL。

在本文中,我们将使用一个经过试验和测试的方法来创建WordPress安装的Docker镜像,这将使您能够在任何VPS上运行另一个WordPress站点,使用Docker单个命令。

在Ubuntu上安装Docker(最新)


更新你的Droplet


sudo apt-get    update
sudo apt-get -y upgrade

确保aufs支持可用


sudo apt-get install linux-image-extra-`uname -r`

将Docker存储库键添加到apt-key用于包验证


sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9

将Docker存储库添加到源


sudo sh -c "echo deb http://get.docker.io/ubuntu docker main\
> /etc/apt/sources.list.d/docker.list"

更新存储库


sudo apt-get update

下载并安装Docker


sudo apt-get install lxc-docker git

Ubuntu的默认防火墙(UFW:Uncomplicated Firewall)会默认拒绝所有转发流量,这是docker需要的。

启用UFW转发


使用nano文本编辑器编辑UFW配置。

sudo nano /etc/default/ufw

向下滚动并找到DEFAULT 提出政策开头的行。

更换:

DEFAULT_FORWARD_POLICY="DROP"

具有:

DEFAULT_FORWARD_POLICY="ACCEPT"

按CTRL + X并用Y确认保存并关闭。

重新加载UFW


sudo ufw reload

允许远程连接


如果您在使用规划docker远程后台程序,那么你就需要允许的默认端口Docker4243。

sudo ufw allow 4243/tcp

使用Docker


我们开始与Docker的工作之前,让我们赶紧去了其可用的命令,从我们第一次刷新我们的记忆入门文章。

命令行界面用法和守护程序


在安装时,Docker守护进程应在后台运行,随时准备接受发送命令docker客户端。 对于可能需要手动运行Docker的某些情况,请使用以下命令。

运行docker守护进程:

sudo docker -d &

客户端使用:

sudo docker [option] [command] [arguments]

注:Docker的需求,以Sudo权限的工作,因为它使用所拥有的插座root

客户端命令


您可以通过简单地调用客户端获得所有可用命令的完整列表:

docker

下面是版本的所有可用命令的列表0.8.0

Commands:
    attach    Attach to a running container
    build     Build a container from a Dockerfile
    commit    Create a new image from a container's changes
    cp        Copy files/folders from the containers filesystem to the host path
    diff      Inspect changes on a container's filesystem
    events    Get real time events from the server
    export    Stream the contents of a container as a tar archive
    history   Show the history of an image
    images    List images
    import    Create a new filesystem image from the contents of a tarball
    info      Display system-wide information
    insert    Insert a file in an image
    inspect   Return low-level information on a container
    kill      Kill a running container
    load      Load an image from a tar archive
    login     Register or Login to the docker registry server
    logs      Fetch the logs of a container
    port      Lookup the public-facing port which is NAT-ed to PRIVATE_PORT
    ps        List containers
    pull      Pull an image or a repository from the docker registry server
    push      Push an image or a repository to the docker registry server
    restart   Restart a running container
    rm        Remove one or more containers
    rmi       Remove one or more images
    run       Run a command in a new container
    save      Save an image to a tar archive
    search    Search for an image in the docker index
    start     Start a stopped container
    stop      Stop a running container
    tag       Tag an image into a repository
    top       Lookup the running processes of a container
    version   Show the docker version information
    wait      Block until a container stops, then print its exit code

使用Dockerfiles


什么是Dockerfiles?


Dockerfiles是包含要执行,给出,由Docker的顺序自动创建一个新的形象相继宣布命令的脚本。

这些文件总是以一基本图像与定义开始FROM指令。 从那里, 生成过程开始,每个下面的操作形成具有提交最终图像(即保存图像状态)。

Dockerfiles可以与使用build命令:

# Build an image using the Dockerfile at current location
# Tag the final image with [name] (e.g. *wordpress_img*)
# Example: sudo docker build -t [name] .
sudo docker build -t wordpress_img . 

注意:要了解更多有关Dockerfiles,请查看文章: Docker解释:使用Dockerfiles到自动图像大厦

Dockerfile命令概述


Dockerfiles工作通过接收以下指令:

  • ADD :文件从主机复制到容器

  • CMD :设置默认命令被执行,或者于入口点传递

  • ENTRYPOINT :设置在容器内的默认入口点应用

  • ENV :设置环境变量(例如键=值)

  • EXPOSE :暴露的端口外

  • FROM :设置基本图像使用

  • MAINTAINER :设置Dockerfile的作者/所有者数据

  • RUN :运行一个命令,并承诺结束结果(容器)图像

  • USER :设置用户运行从图像中的容器

  • VOLUME :从主机到容器挂载目录

  • WORKDIR :设置CMD的指示的目录要执行

创建WordPress容器


拉图像


对于我们的教程中,我们将使用称为一个不折不扣的现成的WordPress图像tutum/wordpress 这个WordPress图像是使用创建Tutum的WordPress的图片 :为了从这一形象创造的容器,我们需要先拉(下载)它。

让我们拉图:

docker pull tutum/wordpress

此命令将下载具有所有已修改图层的底层基本图像。

一旦映像准备就绪,通过发出单个命令,我们可以创建dockerised WordPress实例。

创建公共可访问的WordPress容器


运行以下命令来创建一个容器,是从外部访问的端口指定(如80 ):

# Usage: docker run -p [Port Number]:80 tutum/wordpress
# Example:
docker run -p 80:80 tutum/wordpress

上面的命令将创建一个WordPress的实例,将接受默认HTTP端口的外部连接80

创建本地可访问的WordPress容器


有时它可能适合你最好的容器只能本地访问。 如果您决定设置负载均衡器或其他反向代理以在许多WordPress实例之间分布连接,这将非常有用。

运行以下命令创建本地可访问的容器。

# Allocate a port dynamically:
# Usage: docker run -p 127.0.0.1::80 tutum/wordpress
# Example:
docker run -p 127.0.0.1::80 tutum/wordpress

一旦你执行上面的命令,Docker将创建一个容器,提供你的ID,然后动态分配一个端口。 你可以计算出容器与使用的端口port命令。

# Usage: docker port [container ID] [private port number]
# Example:
docker port 9af15d73fdf8a997 80

# 127.0.0.1:49156

在这种情况下,输出表示该容器是可访问仅在上端口的本地主机49156 您可以使用完整提供的地址从反向代理重定向连接。

如果你想指定端口,只是将其放置在中间的IP地址和所使用的网络服务器内的私人端口(例如80 ):

# Usage: docker run -p 127.0.0.1:[local port]:80 tutum/wordpress
# Example:
docker run -p 127.0.0.1:8081:80 tutum/wordpress

通过这种方式,你将有一个WordPress的实例,它是在端口本地访问8081

注:为了在后台运行容器时,您还需要添加-d后标志run命令:

docker run -d ..

否则,你会被连接容器那里你会看到所有的应用程序运行的输出。

为了离开容器,如引言文章中所示,您需要使用转义序列CTRL + P,然后紧跟CTRL + Q。

使用docker ps命令,就可以得到运行容器的列表中找到您的新实例化一个人的ID。

注意:使用-name [name]参数,您可以标记与应释放你处理复杂的容器标识的名称的容器:

docker run -d -name new_container_1 ..

限制容器的内存使用


为了限制内存的Docker容器进程可以使用的金额,只需将-m [memory amount]标志和限制。

要运行内存限制为256 MB的容器:

# Example: docker run -name [name] -m [Memory (int)][memory unit (b, k, m or g)] -d (to run not to attach) -p (to set access and expose ports) [image ID]
docker run -m 64m -d -p 8082:80 tutum/wordpress

要确认内存限制,你可以检查容器:

# Example: docker inspect [container ID] | grep Memory
docker inspect 9a7562a361122706 | grep Memory

注:上述命令将抓住从检查输出内存的相关信息。 要查看所有关于你的容器的相关信息,选择sudo docker inspect [container ID] 此外,请注意,您的Linux内核必须支持交换限制功能,以实际限制工作。

有关完整的指令集安装和使用Docker,检查出在docker.ioDocker的文档

:提交OS Tezer