介绍
WordPress的已经成为了世界上前所未有的最普遍部署和使用的Web应用程序之一。 由于多年的不断发展,现在可以创建基于WordPress和其可用的插件/扩展几乎无限量的不同的网站(甚至网络应用程序)。
在这种DigitalOcean文章中,使用Docker Linux的容器引擎,我们将学习如何dockerise(即包和含)Ubuntu的云服务器的WordPress应用和发现什么,可能就是一个部署多个WordPress网站的最简单,最安全的方法主办。
词汇表
Docker简介
2. WordPress简介
在Ubuntu上安装Docker(最新)
使用Docker
- 命令行界面用法和守护程序
- 客户端命令
5.使用Dockerfiles
- 什么是Dockerfiles?
- Dockerfile命令概述
6.创建WordPress容器
- 拉图像
- 创建公共可访问的WordPress容器
- 创建本地可访问的WordPress容器
- 限制容器的内存使用
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的文档 。