本文使用docker容器运行wordpress博客,采用了三种方法来演示,docker的使用

自建wordpress容器

采用官方的wordpress容器

采用docker compose容器管理工具

1.运行wordpress需要的环境

1)wordpress源码

2)php运行环境

3)mysql

2.自建wordpress容器

自建wordpress容器,将wordpress源码,相关php,mysql依赖,打包成一个image文件

1)下载wordpress源码

root@iZ238ut6jbcZ:/home/shijingjing# mkdir docker-demo && cd docker-demo
root@iZ238ut6jbcZ:/home/shijingjing/docker-demo# wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
root@iZ238ut6jbcZ:/home/shijingjing/docker-demo# tar -xvf wordpress-4.9.4-zh_CN.tar.gz
root@iZ238ut6jbcZ:/home/shijingjing/docker-demo# ls
wordpress wordpress-4.9.4-zh_CN.tar.gz

2)运行php-apache容器

root@iZ238ut6jbcZ:/home/shijingjing/docker-demo# docker container run -d --rm --name wordpress -p 8000:80 --volume "$PWD/":/var/www/html php:5.6-apache

-d: 容器后台运行

--rm: 容器停止后,自动删除容器文件

--name: 容器命名

-p: 端口映射,apache默认80端口,将容器的80端口映射到外部的8000端口

--volume: 文件夹内容映射,当前文件夹和容器的/var/www/html相互映射

php:5.6-apache:官方php image

查看php容器运行状态:

3)浏览器访问8000端口

访问外部8000端口,实际上访问的是容器的80端口,网站根目录/var/www/html,中wordpress文件夹

点击下一步,会要求输入数据库用户名,密码等

因此,我们必须要关联mysql容器

3)运行mysql容器

root@iZ238ut6jbcZ:/home/shijingjing/docker-demo# docker container run -d --rm --name mydb --env MYSQL_ROOT_PASSWORD=123456 --env MYSQL_DATABASE=wordpress mysql:5.7

-d: 容器后台运行

--rm: 容器停止后,自动删除容器文件

--name: 容器命名

--env: 传入容器的变量

MYSQL_ROOT_PASSWORD:mysql root用户密码设置

MYSQL_DATABASE:mysql数据库,不存在时创建

查看mysql容器运行状态:

4)关联mysql容器

root@iZ238ut6jbcZ:/home/shijingjing/docker-demo# docker container run -d --rm --name wordpress -p 8000:80 --volume "$PWD/":/var/www/html --link mydb  php:5.6-apache

提交,依然报错

这是因为,我们运行的php环境,不支持mysql数据库驱动

5)创建带有mysql扩展的php image

新建Dockerfile文件

FROM php:5.6-apache
RUN docker-php-ext-install mysqli

创建image文件

5)运行创建的含有mysql扩展的容器

root@iZ238ut6jbcZ:/home/shijingjing/docker-demo# docker container run -d --rm --name wordpress -p 8000:80 --volume "$PWD/":/var/www/html --link mydb:mysql phpwithmysql

点击提交,创建数据库成功!

2.使用官方Wordpress image

1)运行mysql容器

root@iZ238ut6jbcZ:~# docker container run -d --rm --name mydb --env MYSQL_ROOT_PASSWORD=123456 --env MYSQL_DATABASE=wordpress mysql:5.7

2)运行wordpress容器

root@iZ238ut6jbcZ:~# docker container run -d --rm --name wordpress -p 8000:80 --link mydb:mysql wordpress

3)浏览器访问

4)容器文件和本地文件相互映射

当我们需要修改容器文件的内容时,可以将容器文件映射到本地,修改本地,会反映到容器。

root@iZ238ut6jbcZ:~# docker container run -d --rm --name wordpress -p 8000:80 --link mydb:mysql --volume "$PWD/wordpress":/var/www/html wordpress
root@iZ238ut6jbcZ:/home/shijingjing/docker-demo# ls
wordpress wordpress-4.9.4-zh_CN.tar.gz

3.使用Docker Compose工具

前两种方法,都需要手动运行多个容器,docker compose提供了一种更简单的管理多个容器的方法。

1)安装docker compose

apt install docker-compose

2)在docker-demo文件下下,新建docker-compose.yml配置文件

mydb:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=123456
- MYSQL_DATABASE=wordpress
wordpress:
image: wordpress
links:
- mydb
ports:
- "0.0.0.0:8000:80"
working_dir: /var/www/html
volumes:
- wordpress:/var/www/html

顶层标签标示有两个容器mysql和web,具体的参数我们在前面已经介绍过

3)使用docker-compose启动容器

docker-compose up

4)浏览器访问

5)关闭容器

docker-compose stop

6)删除容器文件,需在stop后

docker-compose rm

docker使用示例的更多相关文章

  1. 【云计算】Docker Nginx示例

    使用数据卷容器,配置Nginx Docker作为静态文件服务器 . 该方法是直接使用命令行,当然也可使用Dockerfile文件进行创建. 其实,使用docker创建nginx容器是很简单的,但要和数 ...

  2. JavaEE&Docker 容器示例

    准备:jboss.jdk.一个javaee的war包.Dockerfile 注:jboss和jdk可以不用提前准备好,在命令中wget也可以,因为我恰好有,就直接复制了 Dockerfile内容: # ...

  3. docker file 示例

    报错 Cannot connect to the Docker daemon. Is the docker daemon running on this host? 这个错误只要输入docker -d ...

  4. docker compose示例

    version: ' services: game-server: image: /tomcat: container_name: 'game-server' ports: - '8019:8019' ...

  5. 【云计算】使用supervisor管理Docker多进程-ntpd+uwsgi+nginx示例最佳实践

    supervisor安装启动: apt-get install supervisor -y # start supervisord nodaemon /usr/bin/supervisord --no ...

  6. 升级linux内核(2.6.32->3.10.81),安装docker

    1.内核升级环境准备 #查看已经安装的和未安装的软件包组,来判断我们是否安装了相应的开发环境和开发库: yum grouplist #一般是安装这两个软件包组,这样做会确定你拥有编译时所需的一切工具 ...

  7. Docker - 访问仓库

    仓库与注册服务器 仓库(Repository)集中存放镜像的项目或目录. 注册服务器(Registry)管理仓库的服务器,服务器上可以有多个仓库,每个仓库有多个镜像. 例如:在仓库地址docker.i ...

  8. Docker(四):Docker基本网络配置

    1.Libnetwork Libnetwork提出了新的容器网络模型简称为CNM,定义了标准的API用于为容器配置网络. CNM三个重要概念: 沙盒:一个隔离的网络运行环境,保存了容器网络栈的配置,包 ...

  9. docker 基础

    概述 起源 2013 年由 DotCloud 公司开源出来的容器管理工具 DotCloud 公司是一家 PAAS 服务提供商,从 docker 的出身也可以看出它的主要功能和方向 技术原理 开始时是基 ...

随机推荐

  1. Ubuntu16.04 Arduino UNO R3开发板

    使用的是国内改过的版本, usb芯片换成了ch341, 晶振不是原版的16MHz而是12MHz, 杜邦线孔布局和原版一致. 设备连接 在Ubuntu16.04下不需要驱动, 能直接认出ch341设备 ...

  2. @Transient注解的使用

    转自:https://blog.csdn.net/sinat_29581293/article/details/51810805 java 的transient关键字的作用是需要实现Serilizab ...

  3. hihocoder第212周-动态规划

    题目链接 import java.util.Scanner; public class Main { long mod = (long) (1e9 + 7); int MAXN = 107; int ...

  4. JavaScript indexOf() 方法详解

    定义和用法 indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置. 语法 stringObject.indexOf(searchvalue,fromindex) 参数 描述 sea ...

  5. Java 过滤特殊字符的 正则表达式

    Java正则表达式学习: 因为正则表达式是一个很庞杂的体系,此例仅举些入门的概念,更多的请参阅相关书籍及自行摸索. \\ 反斜杠 \t 间隔 ('\u0009') \n 换行 ('\u000A') \ ...

  6. 【LeetCode】Binary Tree Upside Down

    Binary Tree Upside Down Given a binary tree where all the right nodes are either leaf nodes with a s ...

  7. wxml解析

    一.数据绑定 wxml中的动态数据均来自于对应js文件中的Page的data,在js中访问Page的data用this.data, 改变data中某个属性的值用setData()方法. Page({ ...

  8. 技术的正宗与野路子 c#, AOP动态代理实现动态权限控制(一) 探索基于.NET下实现一句话木马之asmx篇 asp.net core 系列 9 环境(Development、Staging 、Production)

    黄衫女子的武功似乎与周芷若乃是一路,飘忽灵动,变幻无方,但举手抬足之间却是正而不邪,如说周芷若形似鬼魅,那黄衫女子便是态拟神仙. 这段描写出自<倚天屠龙记>第三十八回. “九阴神抓”本是& ...

  9. php封装数据库函数

    从Thinkphp里面抽离出来的数据库模块,感觉挺好用 common.php <?PHP /** * 通用函数 */ //包含配置文件 if (is_file("config.php& ...

  10. 高级Unix命令

    在Unix操作中有太多太多的命令,这些命令的强大之处就是一个命令只干一件事,并把这件事干好.Do one thing, do it well.这是unix的哲学.而且Unix首创的管道可以把这些命令任 ...