前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在Ubuntu上 dockerize和部署多个WordPress应用程序

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

原创
作者头像
大瓜皮
发布2018-07-27 14:42:04
9970
发布2018-07-27 14:42:04
举报

介绍

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

本文,我们将学习如何在Ubuntu云服务器上对WordPress应用程序进行dockerize,并在单个主机上部署多个WordPress站点。

Docker简介

Docker项目提供了更高级别的工具,可以协同工作,构建在一些Linux内核功能之上,目的是帮助开发人员和系统管理员将所有依赖项同时移植到应用程序中,并使它们跨系统和机器运行。

Docker是通过为应用程序创建基于LXC(Linux容器)的安全环境。容器可以通过像虚拟机一样在内部手动执行命令,或者通过Dockerfiles自动执行过程来构建。腾讯云社区提供基于Ubuntu下的Docker安装教程,如果使用CentOS系统,可以参考腾讯云实验室搭建 Docker 环境的相关教程。

WordPress简介

最初创建WordPress是一种易于安装和使用的自我发布平台(即Blogging引擎)。多年来它已经变得非常流行,这导致许多第三方插件的开发,将该工具变成完整的CMS(内容管理系统)。基于WordPress,可以轻松创建许多不同类型的网站和Web应用程序,并且可以轻松部署。WordPress站点依靠MySQL关系数据库来保存他们的数据。

在本教程中,我们将使用经过验证的方法来创建WordPress安装的Docker镜像,这将使您能够使用Docker通过单个命令在任何服务器上运行另一个WordPress站点。

在Ubuntu上安装Docker(最新)

更新您的Droplet

代码语言:txt
复制
sudo apt-get update
sudo apt-get -y upgrade

确保aufs支持可用

代码语言:txt
复制
 sudo apt-get install linux-image-extra-`uname -r`

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

代码语言:txt
复制
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9

将Docker存储库添加到源

代码语言:txt
复制
sudo sh -c "echo deb http://get.docker.io/ubuntu docker main\
> /etc/apt/sources.list.d/docker.list"

更新存储库

代码语言:txt
复制
sudo apt-get update

下载并安装Docker

代码语言:txt
复制
sudo apt-get install lxc-docker git

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

使用UFW启用转发

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

代码语言:txt
复制
sudo nano /etc/default/ufw

向下滚动,找到以DEFAULT FORWARD POLICY 开头的行。

更换:

代码语言:txt
复制
DEFAULT_FORWARD_POLICY="DROP"

用:

DEFAULT_FORWARD_POLICY="ACCEPT"

按CTRL + X并按Y表示同意以保存并关闭。

重新加载UFW

代码语言:txt
复制
sudo ufw reload

允许远程连接

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

代码语言:txt
复制
sudo ufw allow 4243/tcp

使用Docker

在我们开始使用docker之前,可以快速浏览一下可用的命令。

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

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

运行docker守护程序:

代码语言:txt
复制
sudo docker -d &

客户使用:

代码语言:txt
复制
sudo docker [option] [command] [arguments]

注意: Docker需要sudo权限才能使用。

客户端命令

您只需调用客户端即可获得所有可用命令的完整列表:

代码语言:txt
复制
docker

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

代码语言:txt
复制
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命令一起使用:

代码语言:txt
复制
# 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 . 

Dockerfile命令概述

Dockerfiles通过接收以下说明来工作:

  • ADD:将文件从主机复制到容器中
  • CMD:设置要执行的默认命令,或传递给ENTRYPOINT
  • ENTRYPOINT:在容器内设置默认入口点应用程序
  • ENV:设置环境变量(例如key = value)
  • EXPOSE:将一个端口暴露在外面
  • FROM:设置要使用的基本镜像
  • MAINTAINER:设置Dockerfile的作者/所有者数据
  • RUN:运行命令并提交结束结果(容器)镜像
  • USER:将用户设置为从映像运行容器
  • VOLUME:将目录从主机挂载到容器
  • WORKDIR:设置要执行的CMD指令的目录

创建WordPress容器

下载镜像

教程中,我们将使用一个WordPress的tutum/wordpress镜像。为了从镜像中创建容器,我们需要下载它。

下载镜像:

代码语言:txt
复制
docker pull tutum/wordpress

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

创建一个可公开访问的WordPress容器

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

代码语言:txt
复制
# Usage: docker run -p [Port Number]:80 tutum/wordpress
# Example:
docker run -p 80:80 tutum/wordpress

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

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

有时您只需要在本地访问容器。如果您决定设置负载平衡器或其他反向代理以在多个WordPress实例之间分配连接,这将非常有用。

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

代码语言:txt
复制
# 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命令确定容器使用的端口。

代码语言:txt
复制
# Usage: docker port [container ID] [private port number]
# Example:
docker port 9af15d73fdf8a997 80

# 127.0.0.1:49156

在这种情况下,输出意味着只能在端口49156上的localhost上访问容器。您可以使用完整提供的地址来重定向来自反向代理的连接。

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

代码语言:txt
复制
# 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标志:

代码语言:txt
复制
docker run -d ..

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

为了离开容器,您需要使用 CTRL + P,然后CTRL + Q.

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

注意:使用-name [name]参数,您可以使用名称标记容器,以免您处理复杂的容器ID:

代码语言:txt
复制
docker run -d -name new_container_1 ..

限制容器的内存使用量

为了限制docker容器进程可以使用的内存量,只需设置带有限制的-m [memory amount]标志即可。

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

代码语言:txt
复制
# 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

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

代码语言:txt
复制
# 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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • Docker简介
  • WordPress简介
  • 在Ubuntu上安装Docker(最新)
  • 使用Docker
    • 命令行界面用法和守护进程
      • 客户端命令
      • 使用Dockerfiles
        • 什么是Dockerfiles?
          • Dockerfile命令概述
          • 创建WordPress容器
            • 下载镜像
              • 创建一个可公开访问的WordPress容器
                • 创建一个本地可访问的WordPress容器
                  • 限制容器的内存使用量
                  • 结论
                  相关产品与服务
                  容器镜像服务
                  容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档