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

介绍


WordPress已成为世界上最受欢迎的部署和使用的Web应用程序之一. 多年来不断发展,现在可以创建基于WordPress及其可用的插件 /扩展程序的几乎无限数量的不同网站(甚至Web应用程序)。

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

词汇


篇一:《Docker in Brief》


2 WordPress 简要介绍


3. 在 Ubuntu 上安装 Docker(最新的)


4:与Docker合作


  1. 命令行界面使用和 Daemon 2. 客户端命令

5 与 Dockerfiles 合作


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

6 创建WordPress容器


  1. 提取图像 2. 创建一个可公开访问的WordPress容器 3. 创建一个本地可访问的WordPress容器 4. 限制容器的内存使用

《Docker in Brief》


Docker 项目提供高层次的工具,共同工作,这些工具是基于一些 Linux 内核功能的,其目的是帮助开发人员和系统管理员端口应用程序 - 与所有他们的依赖共同 - 并让它们在系统和机器之间运行。

Docker 通过为使用图像创建的应用程序创建安全的基于 LXC (Linux 容器) 的环境来实现这一目标,这些库可以通过手动执行命令,像虚拟机一样登录,或通过 Dockerfiles 自动化过程来构建。

** 注意:** 若要了解更多关于 Docker 及其部件的信息(例如:docker daemon、CLI、图像等),请参阅我们对项目的介绍文章: ** Docker Explained** : Getting Started

WordPress 简要介绍


WordPress最初是作为一个易于安装和使用的自我发布平台(即博客引擎)创建的,多年来它变得非常受欢迎,这导致了许多第三方插件的开发,使该工具成为一个完整的CMS(内容管理系统)。

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

WordPress 站点依赖 MySQL 关系数据库来保留他们的数据,并且由于可以一起运行 PHP 和 MySQL 的多种选择,有多个方法来支持 WordPress 站点。

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

在 Ubuntu 上安装 Docker(最新的)


更新你的滴滴


1sudo apt-get update
2sudo apt-get -y upgrade

确保支持可用


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

将 Docker 存储库密钥添加到 apt-key 进行包验证


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

将 Docker 存储库添加到源


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

更新存储器


1sudo apt-get update

下载和安装Docker


1sudo apt-get install lxc-docker git

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

允许使用 UFW 传递


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

1sudo nano /etc/default/ufw

向下滚动,找到开始于 DEFAULT_FORWARD_POLICY 的行。

取代:

1DEFAULT_FORWARD_POLICY="DROP"

与:

1DEFAULT_FORWARD_POLICY="ACCEPT"

按 CTRL + X 并用 Y 批准以保存和关闭。

重新加载 UFW


1sudo ufw reload

允许远程连接


如果您计划远程使用docker大门,则需要允许默认的Docker端口4243。

1sudo ufw allow 4243/tcp

与 Docker 合作


在我们开始使用 docker 之前,让我们快速浏览其可用的命令,从我们的第一个 Getting Started 文章中更新我们的记忆。

命令行界面使用和 DAEMON


在安装时,Docker Daemon 应该在背景中运行,准备接受由Docker客户端发送的命令. 对于可能需要手动运行 Docker 的某些情况,请使用以下方法。

如何运行Docker Daemon:

1sudo docker -d &

客户使用:

1sudo docker [option] [command] [arguments]

** 注意: ** Docker 需要 sudo 特权才能工作,因为它使用属于root的接口。

客户端命令


您可以通过拨打客户端来获得所有可用的命令的完整列表:

1docker

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

 1Commands:
 2    attach Attach to a running container
 3    build Build a container from a Dockerfile
 4    commit Create a new image from a container's changes
 5    cp Copy files/folders from the containers filesystem to the host path
 6    diff Inspect changes on a container's filesystem
 7    events Get real time events from the server
 8    export Stream the contents of a container as a tar archive
 9    history Show the history of an image
10    images List images
11    import Create a new filesystem image from the contents of a tarball
12    info Display system-wide information
13    insert Insert a file in an image
14    inspect Return low-level information on a container
15    kill Kill a running container
16    load Load an image from a tar archive
17    login Register or Login to the docker registry server
18    logs Fetch the logs of a container
19    port Lookup the public-facing port which is NAT-ed to PRIVATE_PORT
20    ps List containers
21    pull Pull an image or a repository from the docker registry server
22    push Push an image or a repository to the docker registry server
23    restart Restart a running container
24    rm Remove one or more containers
25    rmi Remove one or more images
26    run Run a command in a new container
27    save Save an image to a tar archive
28    search Search for an image in the docker index
29    start Start a stopped container
30    stop Stop a running container
31    tag Tag an image into a repository
32    top Lookup the running processes of a container
33    version Show the docker version information
34    wait Block until a container stops, then print its exit code

使用 Dockerfiles 工作


什么是Dockerfiles?


Dockerfiles 是包含连续声明 commands 的脚本,这些脚本必须由 Docker 按照指定顺序执行,以自动创建新图像。

这些文件总是以FROM命令来定义基础图像开始,从那里开始 _build 过程,并在每一个接下来的操作中形成最终图像(即保存图像状态)。

Dockerfiles 可以使用构建命令:

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

** 注意:** 有关 Dockerfiles 的更多信息,请参阅文章: Docker 解释:使用 Dockerfiles 来自动构建图像

Dockerfile 命令概览


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

  • " ADD " :将主机的文件复制到容器中
  • `CMD':设置要执行的默认命令,或传递给ENTRYPOINT
  • `ENTYPUINT ' :在集装箱内设置默认的切入点应用程序
  • `ENV':设置环境变量(例如密钥=值)
  • " EXPOSE " :向外部展示港口
  • FROM:设置要使用的基础图像
  • " 保护者 " :设置 Docker 文件的作者/所有者数据
  • `运行 ' :运行一个命令并传输最终结果(容器)图像
  • 用户:设置用户从图像运行容器
  • " VOLUME " :将一个目录从主机挂到容器
  • `WORKDIR':设置拟执行的CMD指令目录

创建WordPress容器


拍摄图像


对于我们的教程,我们将使用一个盒子外的WordPress图像称为tutum/wordpress。这个Wordpress图像是用Tutum的Wordpress图像(https://github.com/tutumcloud/tutum-docker-wordpress)创建的:为了从这个图像中创建容器,我们需要先拉(下载)它。

让我们拉下图像:

1docker pull tutum/wordpress

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

一旦图像准备好了,通过发出一个单一的命令,我们可以创建编码的WordPress实例。

创建一个公开可用的WordPress容器


运行以下命令,创建可从您指定的端口从外部访问的容器(例如 80):

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

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

创建一个本地可访问的WordPress容器


有时,只有本地可访问的容器最适合您,如果您决定设置负载平衡器或其他反向代理程序来在许多WordPress实例中分发连接,则这可能有用。

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

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

一旦您执行上述命令,Docker 将创建一个容器,为您提供其 ID,然后动态分配一个端口。

1# Usage: docker port [container ID] [private port number]
2# Example:
3docker port 9af15d73fdf8a997 80
4
5# 127.0.0.1:49156

在这种情况下,输出意味着容器只能在端口49156上的 localhost 上访问。

如果您想指定一个端口,只需将其放在 IP 地址和内部 Web 服务器使用的私人端口之间(例如 80):

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

这样,你将有一个本地可访问的WordPress实例在端口8081

** 注意:** 为了在背景中运行您的容器,您还需要在运行命令后添加d旗:

1docker run -d ..

否则,您将连接到容器,在那里您将看到所有正在运行的应用程序的输出。

为了离开容器,如介绍文章所示,您需要使用逃避序列 CTRL+P 立即随后使用 CTRL+Q。

使用docker ps命令,您可以获取运行容器列表,以找到您新实例化的 ID。

** 注意:** 使用 -name [name] 参数,您可以 tag 一个容器的名称,这应该使您免受处理复杂的容器 ID:

1docker run -d -name new_container_1 ..

限制容器的内存使用


为了限制一个 docker 容器流程可以使用的内存量,只需设置-m [内存量]标志以限制。

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

1# 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]
2docker run -m 64m -d -p 8082:80 tutum/wordpress

要确认内存限制,您可以 inspect 容器:

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

** 注意: ** 上面的命令将从检查输出中捕捉到与内存相关的信息. 若要查看有关您的容器的所有相关信息,请选择sudo docker inspect [container ID]

有关安装和使用 docker 的完整说明,请参阅 docker 文档 在 docker.io

Submitted by: O.S. Tezer
Published At
Categories with 技术
comments powered by Disqus