Docker是一个开放源代码软件项目,让应用程序布署在软件容器下的工作可以自动化进行,借此在Linux操作系统上,提供一个额外的软件抽象层,以及操作系统层虚拟化的自动管理机制。Docker利用Linux核心中的资源分脱机制,例如cgroups,以及Linux核心名字空间(name space),来创建独立的软件容器(containers)。这可以在单一Linux实体下运作,避免启动一个虚拟机造成的额外负担。Linux核心对名字空间的支持完全隔离了工作环境中应用程序的视野,包括进程树、网络、用户ID与挂载文件系统,而核心的cgroup提供资源隔离,包括CPU、存储器、block I/O与网络。从0.9版本起,Dockers在使用抽象虚拟是经由libvirt的LXC与systemd - nspawn提供界面的基础上,开始包括libcontainer库做为以自己的方式开始直接使用由Linux核心提供的虚拟化的设施,依据行业分析公司“451研究”:“Dockers是有能力打包应用程序及其虚拟容器,可以在任何Linux服务器上运行的依赖性工具,这有助于实现灵活性和便携性,应用程序在任何地方都可以运行,无论是公有云、私有云、单机等。” 。
Docker Compose可以让用户在其它平台快速安装Docker,Swarm可以让Docker容器在集群中高效运转,而Compose可以让用户在集群中部署分布式应用。简单的说,Docker Compose属于一个“应用层”的服务,用户可以定义哪个容器组运行哪个应用,它支持动态改变应用,并在需要时扩展。
WordPress和MySQL的容器可以从Docker Hub以镜像的形式获得。Docker镜像是容器的静态快照,用于创建新的容器实例。
WordPress和MySQL镜像由各自的组织在Docker Hub上维护,使用它们具有以下优点:
本教程需要一台已经设置好可以使用
sudo
命令的非root账号的CentOS服务器,并且已开启防火墙。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后在购买服务器。
这些步骤使用官方Ubuntu存储库安装Docker Community Edition(CE)。要在其他发行版上安装,请参阅官方安装页面。
sudo apt remove docker docker-engine docker.io
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
您应该看到类似于以下内容的输出:
pub4096R/0EBFCD88 2017-02-22
Key fingerprint = 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uidDocker Release (CE deb) <docker@docker.com>
sub4096R/F273FCD8 2017-02-22
stable
Docker存储库:sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt install docker-ce
docker
组:sudo usermod -aG docker exampleuser
您需要重新启动shell会话才能使此更改生效。
docker run hello-world
1.21.2
替换为标记最新版本的版本:sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
my_wordpress
,并使用cd
进入:mkdir ~/my_wordpress/
cd ~/my_wordpress/
docker-compose.yml
的文件并添加以下内容。在WORDPRESS_DB_PASSWORD
、MYSQL_ROOT_PASSWORD
和MYSQL_PASSWORD
环境选择设置您自己的密码。WORDPRESS_DB_PASSWORD
和MYSQL_PASSWORD
的密码应该是相同的。docker-compose.yml
version: '3.3'
services:
wordpress:
depends_on:
- db
image: wordpress:latest
volumes:
- wordpress_files:/var/www/html
ports:
- "80:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: my_wordpress_db_password
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: my_db_root_password
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: my_wordpress_db_password
volumes:
wordpress_files:
db_data:
my_wordpress
目录中启动Docker容器:docker-compose up -d
设置DNS记录后,还应在WordPress设置屏幕中将您的IP地址替换为您的域:
如果重新启动CVM,则无需手动启动容器,因为选项restart: always
已分配给了docker-compose.yml
文件中的服务。此选项告诉Docker Compose在服务器引导时自动启动服务。
要停止WordPress应用程序:
cd ~/my_wordpress/
docker-compose down
当Docker容器停止时,它也会被删除; 这就是Docker的设计工作方式。但是,您的WordPress文件和数据将被保留,因为docker-compose.yml
文件已配置为为该数据创建持久命名卷。
如果要删除此数据并从WordPress站点重新开始,可以将--volumes
标志添加到上一个命令。这将永久删除您到目前为止所做的WordPress帖子和自定义。
docker-compose down --volumes
docker-compose.yml
指定了WordPress镜像的最新版本,使用下面的命令可以很容易地更新你的WordPress版本:
docker-compose down
docker-compose pull && docker-compose up -d
更多docker使用方法可以参考下面的文章:
如何在UFW、FirewallD、IPTable为Docker Swarm集群配置防火墙
怎么样,学会了吗?快尝试购买一台服务器进行测试吧!或者直接在开发者实验室参加搭建 Docker 环境 课程,学习更快哦!更多Linux教程请前往腾讯云+社区学习更多知识。
参考文献:《Install WordPress with Docker Compose》
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。