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 的出身也可以看出它的主要功能和方向 技术原理 开始时是基 ...
随机推荐
- 你想知道的关于JavaScript作用域的一切(译)
原文链接: Everything you wanted to know about JavaScript scope 原文作者: Todd Motto JavaScript中有许多章节是关于scope ...
- 类型“System.Data.SQLite.SQLiteParameter”在未被引用的程序集中定义。必须添加对程序集“System.Data.SQLite, Version=1.0.66.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139”的引用
出现这个问题是 你的系统是64位 同时 dll生成的 any cpu 应该换为 x86
- warning C4005 DXGI_STATUS_OCCLUDED
注意包含顺序 要将 $(DXSDK_DIR)Include放在后面才行 $(VC_IncludePath)$(WindowsSDK_IncludePath)$(DXSDK_DIR)Include 为了 ...
- 关于 Dropout 防止过拟合的问题
关于 Dropout 可以防止过拟合,出处:深度学习领域大神 Hinton,在2012年文献:<Improving neural networks by preventing co-adapta ...
- JavaScript 错误处理, Throw、Try 和 Catch入门
try 语句测试代码块的错误. catch 语句处理错误. throw 语句创建自定义错误. 错误一定会发生 当 JavaScript 引擎执行 JavaScript 代码时,会发生各种错误: 可能是 ...
- CMFCPropertyGridProperty用法
MFCPropertyGridCtrl 是VC 2008 pack中的控件类. CMFCPropertyGridProperty这个控件类中的属性值类类. 针对修改属性后,对属性值改变的消息处理: 方 ...
- 搞不懂为什么开发人员爱iOS恨Android?
导读:很多网站发表文章大同小异.唯有这个不同点,给大家分享. Android和iOS的较量一直都是人们津津乐道的话题.两个平台各有各的优势所在,同时也都力图能在各个方面赶超对手.对于用户来说,青菜萝卜 ...
- XmlSerializer 对象序列化成XML 自定义编码格式(gb2312)
随着面向服务(SOA)的开发方式的兴起,客户端和服务端之间的消息传送,很多采用了XML的格式.但是大家在日常的开发中,应该会有这么种体验,就是组织xml格式的代码太繁琐,这篇随笔也是为了和大家分享下简 ...
- 豆瓣上9分以上的IT书籍-编程语言篇
我当要学习某些技术时,第一时间就是去找相关的书籍.而豆瓣读书是我主要的参考依据,主要是它的评分基本比较靠谱,对于技术书籍,一般来说评分在8分以上就是不错的书籍了,而达到9分就可以列入"必读& ...
- C++栈学习——顺序栈和链栈的差别
C++中栈有顺序栈和链栈之分.在顺序栈中,定义了栈的栈底指针(存储空间首地址base).栈顶指针top以及顺序存储空间的大小stacksize(个人感觉这个数据成员是能够不用定义的) //顺序栈数据结 ...