docker使用示例
本文使用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使用示例的更多相关文章
- 【云计算】Docker Nginx示例
使用数据卷容器,配置Nginx Docker作为静态文件服务器 . 该方法是直接使用命令行,当然也可使用Dockerfile文件进行创建. 其实,使用docker创建nginx容器是很简单的,但要和数 ...
- JavaEE&Docker 容器示例
准备:jboss.jdk.一个javaee的war包.Dockerfile 注:jboss和jdk可以不用提前准备好,在命令中wget也可以,因为我恰好有,就直接复制了 Dockerfile内容: # ...
- docker file 示例
报错 Cannot connect to the Docker daemon. Is the docker daemon running on this host? 这个错误只要输入docker -d ...
- docker compose示例
version: ' services: game-server: image: /tomcat: container_name: 'game-server' ports: - '8019:8019' ...
- 【云计算】使用supervisor管理Docker多进程-ntpd+uwsgi+nginx示例最佳实践
supervisor安装启动: apt-get install supervisor -y # start supervisord nodaemon /usr/bin/supervisord --no ...
- 升级linux内核(2.6.32->3.10.81),安装docker
1.内核升级环境准备 #查看已经安装的和未安装的软件包组,来判断我们是否安装了相应的开发环境和开发库: yum grouplist #一般是安装这两个软件包组,这样做会确定你拥有编译时所需的一切工具 ...
- Docker - 访问仓库
仓库与注册服务器 仓库(Repository)集中存放镜像的项目或目录. 注册服务器(Registry)管理仓库的服务器,服务器上可以有多个仓库,每个仓库有多个镜像. 例如:在仓库地址docker.i ...
- Docker(四):Docker基本网络配置
1.Libnetwork Libnetwork提出了新的容器网络模型简称为CNM,定义了标准的API用于为容器配置网络. CNM三个重要概念: 沙盒:一个隔离的网络运行环境,保存了容器网络栈的配置,包 ...
- docker 基础
概述 起源 2013 年由 DotCloud 公司开源出来的容器管理工具 DotCloud 公司是一家 PAAS 服务提供商,从 docker 的出身也可以看出它的主要功能和方向 技术原理 开始时是基 ...
随机推荐
- 基于springboot跟poi封装的最便捷的excel导出
发布时间:2018-11-15 技术:springboot1.5.6 + maven3.0.5 + jdk1.8 概述 Springboot最便捷的Excel导出,只需要一个配置文件即可搞定 ...
- 利用Jquery和fullCalendar制作日程表
详情请参考以下代码 <!DOCTYPE html> <html> <head> <title>利用Jquery和fullCalendar制作日程表< ...
- UIAlertView 点击按钮后控制其是否消失
新建NotDismissAlertView类,继承UIAlertView. 设置控制是否消失的标示符 重写 在-(void)dismissWithClickedButtonIndex:(NSInte ...
- Git 配置(分布式版本控制系统)
1.Mac Git 配置文件 既然已经在系统上安装了 Git,你会想要做几件事来定制你的 Git 环境.每台计算机上只需要配置一次,程序升级时会保留配置信息.你可以在任何时候再次通过运行命令来修改它们 ...
- 【struts2】struts2的execAndWait拦截器使用
使用execAndWait拦截器可以在等待较长时间的后台处理中增加等待页面.实现如下图所示的效果: 1)struts.xml主要部分 <action name="test" ...
- mysql_install_db 运行结果
# /usr/local/mysql/scripts/mysql_install_db \ > --defaults-file=/etc/my.cnf \ > --basedir=/usr ...
- Java Nashorn--Part 2
在命令行中执行 JavaScript 现在我们有一个 my_script.js 文件,想在 Nashorn 下执行,则需要在命令行下执行该命令: jrunscript my_script.js jru ...
- nodejs 遍历文件夹下所有的图片改名为中文
安装依赖 $ npm init -y && npm i fs-extra globby request -S main.js const fs = require('node-fs-e ...
- talend hive数据导入到mysql中
thiveInput->tmap->tMysqloutput thiveInput: tmap: tmysqlOutput:注意编码问题:noDatetimeStringSync=true ...
- Spring Security教程(三):自定义表结构
在上一篇博客中讲解了用Spring Security自带的默认数据库存储用户和权限的数据,但是Spring Security默认提供的表结构太过简单了,其实就算默认提供的表结构很复杂,也不一定能满足项 ...