本文使用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. 移植到windows下的iconv

    This is a short memo about installing iconv on Windows host (specifically: Windows 7 SP1 x64). Iconv ...

  2. git pull时冲突的几种解决方式

    仅结合本人使用场景,方法可能不是最优的 1. 忽略本地修改,强制拉取远程到本地 主要是项目中的文档目录,看的时候可能多了些标注,现在远程文档更新,本地的版本已无用,可以强拉 git fetch --a ...

  3. jenkins shell脚本自动化构建阿里云k8s上应用

    #!/bin/bash source /etc/profile cd /mnt/workspace/weifeng-ui-pre/ npm i && npm run build rm ...

  4. oracle安装后listener.ora文件

    # listener.ora Network Configuration File: D:\Develop\oracle11g\product\11.2.0\dbhome_1\network\admi ...

  5. 树莓派进阶之路 (035) - 基于linux的zsh安装脚本

    基于linux的zsh安装脚本: Ubuntu版本: #!/bin/sh cd #安装zsh sudo apt-get install zsh #查看zsh cat /etc/shells #更改zs ...

  6. 【MySQL】mysql中any,in,some,all的区别

    子查询就是指在一个select语句中嵌套另一个select语句. any,in,some,all分别是子查询关键词之一, any 可以与=.>.>=.<.<=.<> ...

  7. Kubernetes(k8s) docker集群搭建

    原文地址:https://blog.csdn.net/real_myth/article/details/78719244 一.Kubernetes系列之介绍篇   •Kubernetes介绍 1.背 ...

  8. C#多线程JOIN方法初探

    [说明:刚接触多线程时,弄不明白Join()的作用,查阅了三本书,都不明不白.后来经过自己的一番试验,终于弄清了Join()的本质.大家看看我这种写法是否易懂,是否真的写出了Join()的本质,多提宝 ...

  9. Spring MVC @PathVariable被截断

    一.问题描述 一个控制器提供RESTful访问信息: @RequestMapping(method = RequestMethod.GET, value = Routes.BLAH_GET + &qu ...

  10. mysql 查询 根据时分秒取数据 比如 取 时间为 8点半的 dateformat 时间函数转换

     date_format(date,'%H') = 8 and date_format(date,'%i') = 30   SELECT * FROM `t_pda_trucklog` WHERE D ...