WordPress已成为世界上最常见的部署和使用的Web应用程序之一。由于多年的不断发展,现在可以基于WordPress及其可用的插件/扩展创建几乎无数的不同网站(甚至是网络应用程序)。
本文,我们将学习如何在Ubuntu云服务器上对WordPress应用程序进行dockerize,并在单个主机上部署多个WordPress站点。
Docker项目提供了更高级别的工具,可以协同工作,构建在一些Linux内核功能之上,目的是帮助开发人员和系统管理员将所有依赖项同时移植到应用程序中,并使它们跨系统和机器运行。
Docker是通过为应用程序创建基于LXC(Linux容器)的安全环境。容器可以通过像虚拟机一样在内部手动执行命令,或者通过Dockerfiles自动执行过程来构建。腾讯云社区提供基于Ubuntu下的Docker安装教程,如果使用CentOS系统,可以参考腾讯云实验室搭建 Docker 环境的相关教程。
最初创建WordPress是一种易于安装和使用的自我发布平台(即Blogging引擎)。多年来它已经变得非常流行,这导致许多第三方插件的开发,将该工具变成完整的CMS(内容管理系统)。基于WordPress,可以轻松创建许多不同类型的网站和Web应用程序,并且可以轻松部署。WordPress站点依靠MySQL关系数据库来保存他们的数据。
在本教程中,我们将使用经过验证的方法来创建WordPress安装的Docker镜像,这将使您能够使用Docker通过单个命令在任何服务器上运行另一个WordPress站点。
更新您的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 FORWARD POLICY 开头的行。
更换:
DEFAULT_FORWARD_POLICY="DROP"
用:
DEFAULT_FORWARD_POLICY="ACCEPT"
按CTRL + X并按Y表示同意以保存并关闭。
重新加载UFW
sudo ufw reload
允许远程连接
如果您计划远程使用docker守护程序,则需要允许默认的Docker端口4243。
sudo ufw allow 4243/tcp
在我们开始使用docker之前,可以快速浏览一下可用的命令。
安装后,docker守护程序应该在后台运行,准备接受docker客户端发送的命令。对于可能需要手动运行Docker的某些情况,请使用以下命令。
运行docker守护程序:
sudo docker -d &
客户使用:
sudo docker [option] [command] [arguments]
注意: Docker需要sudo权限才能使用。
您只需调用客户端即可获得所有可用命令的完整列表:
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是包含连续声明的命令的脚本,这些命令按照给定的顺序执行,由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通过接收以下说明来工作:
教程中,我们将使用一个WordPress的tutum/wordpress镜像。为了从镜像中创建容器,我们需要下载它。
下载镜像:
docker pull tutum/wordpress
一旦映像准备就绪,通过发出单个命令,我们可以创建dockerised WordPress实例。
运行以下命令以创建可在指定端口上从外部访问的容器(例如80):
# Usage: docker run -p [Port Number]:80 tutum/wordpress
# Example:
docker run -p 80:80 tutum/wordpress
上面的命令将创建一个WordPress实例,该实例将接受来自外部的默认HTTP端口80上的连接。
有时您只需要在本地访问容器。如果您决定设置负载平衡器或其他反向代理以在多个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
上的localhost上访问容器。您可以使用完整提供的地址来重定向来自反向代理的连接。
如果要指定端口,只需将其放在IP地址和Web服务器内部使用的专用端口之间(例如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
这样,您将拥有一个可在端口8081本地访问的WordPress实例。
注意:为了在后台运行容器,还需要在run命令后添加-d标志:
docker run -d ..
否则,您将连接到容器,您将在其中看到所有正在运行的应用程序的输出。
为了离开容器,您需要使用 CTRL + P,然后CTRL + Q.
使用docker ps
命令,您可以获取正在运行的容器列表以查找新实例化的ID。
注意:使用-name [name]
参数,您可以使用名称标记容器,以免您处理复杂的容器ID:
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]
。
本文介绍了如何在Ubuntu上 dockerize和部署多个WordPress应用程序,腾讯云开发者实验室提供了基于 Ubuntu 搭建 WordPress 个人博客教您一步步搭建起一个属于自己的 WordPress 博客,还有其他WordPress相关的教程,欢迎大家访问和查看。
参考文献:《How To Dockerise And Deploy Multiple WordPress Applications On Ubuntu》
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。