介绍
WordPress已成为世界上最受欢迎的部署和使用的Web应用程序之一. 多年来不断发展,现在可以创建基于WordPress及其可用的插件 /扩展程序的几乎无限数量的不同网站(甚至Web应用程序)。
在这篇DigitalOcean文章中,使用Docker(LINK0) Linux容器引擎,我们将学习如何在Ubuntu云服务器上编码(即包装和包含)WordPress应用程序,并发现部署多个WordPress网站在一个主机上的最简单和最安全的方式。
词汇
篇一:《Docker in Brief》
2 WordPress 简要介绍
3. 在 Ubuntu 上安装 Docker(最新的)
4:与Docker合作
- 命令行界面使用和 Daemon 2. 客户端命令
5 与 Dockerfiles 合作
- 什么是 Dockerfiles? 2. Dockerfile 命令概述
6 创建WordPress容器
- 提取图像 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。