Docker实战(八)之Web服务与应用
1.Apache
官方提供了名为httpd的Apache镜像,可以作为基础web服务镜像
Dockerfile(安装apache2)
FROM httpd:2.4
COPY ./public-html /usr/local/apache2/htdocs/
2.Nginx
Nginx是一款功能强大的开源反向代理服务器,支持HTTP、HTTP、SMTP、POP3、IMAP等协议。它也可以作为负载均衡器、HTTP缓存或者Web服务器。Nginx一开始就专注于高并发和高性能的应用场景。它使用类BSD开源协议,支持Linux、BSD、Mac、Solaris、AIX等类Unix系统,同时也有windows移植版。
(1)使用官方镜像
docker run -d -p 80:80 --name webserver nginx

3.Tomcat
Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和Java Servlet Page(JSP)的支持。同时,它提供了作为Web服务器的一些特有功能,如Tomcat管理和控制台、安全域管理和Tomcat阀等。由于Tomcat本身也内含了一个HTTP服务器,也可以当做一个单独的web服务器来使用。
4.Jetty
Jetty是一个优秀的开源Servlet容器,以其高效,小巧,可嵌入式等优点深得人心,它为基于Java的Web内容(如JSP和Servlet)提供运行环境。Jetty基于Java语言编写,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化为一个对象,可以迅速为一些独立运行的Java应用提供Web服务。
相对于老牌的Tomcat,Jetty架构更合理,性能更优。尤其在启动速度上,让Tomcat望尘莫及。Jetty目前在官方提供了Jetty镜像,直接运行docker run指令即可:
docker run -d jetty
docker run -d -p 80:8080 -p 443:8443 jetty
使用宿主机的浏览器访问container-ip:8080,即可获得Jetty运行页面,由于当前没有内容,会提示错误信息。
5.LAMP
LAMP(Linux+Apache+MySQL+PHP)是目前流行的Web工具栈,其中包括:Linux操作系统,Apache网络服务器,MySQL数据库,Perl,PHP编程语言。其组成工具均是成熟的开源软件,被大量网站所采用。和Java/J2EE架构相比,LAMP具有Web资源丰富、轻量、快速开发等特点;和微软的.NET架构相比,LAMP更具通用、跨平台、高性能、低价格等优势。因此LAMP无论是在性能、质量还是价格方面都是企业搭建网站的首选平台。
注意:现在也有人用Nginx替换Apache,称为LNMP,但并不影响整个框架的选型原则,是彼此十分类似的技术栈。
1.使用linode/lamp镜像
首先执行docker run 指令直接运行LAMP,同时社区也提供了十分成熟的linode/lamp和tutum/lamp镜像。下面介绍两种方法:
docker run -p 80:80 -t -i linode/lamp /bin/bash
在容器中执行service apache2 start启动apache

2.使用tutum/lamp镜像
docker run -d -p 80:80 -p 3306:3306 tutum/lamp
启动成功访问Demo界面

6.WordPress
WordPress是风靡全球的开源内容管理系统,是博客、企业官网、产品首页等内容相关平台的主流实现方案之一。类似项目还有Drupal、Joomla、Typo3等。
WordPress基于PHP和MySQL,架构设计简单明了,支持主题,插件和各种功能模块。更重要的是WordPress拥有庞大的社区,在线资源非常丰富,并且在各大网络空间商和云平台中受到广泛支持。
(1)使用官方镜像
docker pull wordpress
(2)使用Compose搭建WordPress
新建docker-compose.yml文件:
wordpress:
image: wordpress
links:
- db: mysql
ports:
- 8080: 80
db:
image: mariadb
environment:
MYSQL_ROOT_PASSWORD: wordpress
docker-compose up
注意:如果提示没有docker-compose命令,Ubuntu用户可以通过sudo apt-get install docker-compose在线安装
centos用户yum install docker-compose进行安装
6.Ghost
Ghost是一个广受欢迎的开源博客平台,使用JavaScript编写,以MIT协议发布。它的设计非常简约,使用起来体验优异,非常适合做内容发布,故而受到很多极客或技术工作人员的喜爱。
docker run --name dhost-container -d ghost
docker run --name ghost-container-1 -p 8080:2368 -d ghost
7.Jekins
Jekins是一个得到广泛应用的持续集成和持续交互的工具。作为开源软件项目,它旨在提供一个开放易用的持续集成平台。Jenkins能实时监控集成中存在的错误,提供详细的日志文件和提醒功能,并用图表的形式形象的展示项目构建的趋势和稳定性。Jekins特点包括安装配置简单、支持详细的测试报表、分布式构建。
docker run -p 8080:8080 -p 50000:50000 jenkins
8.Gitlab
Gitlab是一款非常强大的开源源码管理系统。它支持基于Git的源码管理、代码评审、issue跟踪、活动管理、wiki页面,持续集成和测试等功能。基于Gitlab,用户可以自己搭建一套类Github的开发协同平台。
Gitlab官方提供了社区版本的Dockerfile镜像
docker run --detach \ --hostname gitlab.example.com \ --publish 443:443 --publish 80:80 --publish 22:22 \ --name gitlab \ --restart always \ --volume /srv/gitlab/config:/etc/gitlab \ --volume /srv/gitlab/logs:/var/log/gitlab \ --volume /srv/gitlab/data:/var/opt/gitlab \ gitlab/gitlab-ce:latest
小结:
Web服务在内的中间件领域为什么适合引入容器技术?
原因如下:
a.中间件服务器是除数据库服务器外的主要计算节点,很容器成为性能瓶颈,所以通常需要大批量部署,而Docker对于批量部署有着先天的优势;
b.中间件服务器结构清晰,在剥离了配置文件、日志、代码目录之后,容器几乎可以处于零增长状态,这使得容器的迁移和批量部署更加方便;
c.中间服务器很容易实现集群,在使用软件Nginx负载均衡后中间服务器集群变得非常容易。
Docker实战(八)之Web服务与应用的更多相关文章
- 【docker专栏4】使用docker安装nginx提供web服务
一般学习一项技术,会先用一个最简单的例子或最典型的例子来向大家讲解入门内容,所以此文为大家介绍使用docker安装nginx容器服务.从基础使用的角度来讲,此文几乎涵盖了docker最核心的内容:镜像 ...
- docker 搭建 web 服务环境
docker容器虽然早就听说过,但是本人还真的没去用过,刚好看到相关的文章,就分享了下,有机会可以实践下...... 做过开发的人对开发环境的安装.配置应该都不会太陌生,不管你做什么开发,对开发环境都 ...
- Linux实战教学笔记38:企业级Nginx Web服务优化实战(下)
四,Nginx站点目录及文件URL访问控制 4.1 根据扩展名限制程序和文件访问 Web2.0时代,绝大多数网站都是以用户为中心多的,例如:bbs,blog,sns产品,这几个产品都有一个共同特点,就 ...
- 基于docker+etcd+confd + haproxy构建高可用、自发现的web服务
基于docker+etcd+confd + haproxy构建高可用.自发现的web服务 2016-05-16 15:12 595人阅读 评论(0) 收藏 举报 版权声明:本文为博主原创文章,未经博主 ...
- Docker 发布 Abp net core web 服务
Docker 发布 Abp net core web 服务 准备工作:Abp 项目,这个是模板下载地址 https://aspnetboilerplate.com/Templates (本例使用的是S ...
- Docker实战 | 第二篇:IDEA集成Docker插件实现一键自动打包部署微服务项目,一劳永逸的技术手段值得一试
一. 前言 大家在自己玩微服务项目的时候,动辄十几个服务,每次修改逐一部署繁琐不说也会浪费越来越多时间,所以本篇整理通过一次性配置实现一键部署微服务,实现真正所谓的一劳永逸. 二. 配置服务器 1. ...
- SpringBoot实战(十)之使用Spring Boot Actuator构建RESTful Web服务
一.导入依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http ...
- Linux实战教学笔记37:企业级Nginx Web服务优化实战(上)
一,Nginx基本安全优化 1.1 调整参数隐藏Nginx软件版本号信息 一般来说,软件的漏洞都和版本有关,这个很像汽车的缺陷,同一批次的要有问题就都有问题,别的批次可能就都是好的.因此,我们应尽量隐 ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_4-05 微服务调用方式之feign 实战 订单调用商品服务
笔记 5.微服务调用方式之feign 实战 订单调用商品服务 简介:改造电商项目 订单服务 调用商品服务获取商品信息 Feign: 伪RPC客户端(本质还是用http) ...
随机推荐
- 后台管理UI+功能
kingRoad功能强大,丰富各种功能和插件,自定义开发功能组件及样式,使用webpack方式集成和纯html两种,UI(自定义开发和AdminLTE的集成优化),弹窗功能使用(Layer弹窗,并与框 ...
- CodeForces760B
B. Frodo and pillows time limit per test:1 second memory limit per test:256 megabytes input:standard ...
- MUI框架 选择器的使用
js.css引用 <script type="text/javascript" src="librarys/mui/js/mui.min.js">& ...
- JavaScript中如何将html字符串转化为Jquery对象或者Dom对象
最近在开发百度地图相关的一个应用,需要从硬编码的html字符串中提取自己想要的元素以及属性信息.但是在js中或者jQuery中操作元素节点以及属性都是使用DOM对象或者jquery对象.下面将介绍如何 ...
- Csv读写类
<?php /** * CSV 文件读写类 * * 示例: $header = array('name' => '名字', 'age' =>'年龄', 'idcard' => ...
- ecmascript 6 的arguments转数组的代码
- Django随笔
入门 小Demo设计介绍 本示例完成“图书-英雄”信息的维护,需要存储两种数据:图书.英雄 图书表结构设计: 表名:BookInfo 图书名称:btitle 图书发布时间:bpub_date 英雄表结 ...
- 递归方程T(n)=aT(n/b)+f(n)之通用解法
,b>1为常数,f(n)为函数,T(n)=aT(n/b)+f(n)为非负数,令x=logba: 1. f(n)=o(nx-e),e>0,那么T(n)=O(nx). 2. ...
- centos7.2+php7.2+nginx1.12.0+mysql5.7配置
一. 源码安装php7.2 选择需要的php版本 从 php官网: http://cn2.php.net/downloads.php 选择需要的php版本,选择.tar.gz 的下载包,点击进入,选择 ...
- 在Linux上利用core dump和GDB调试
段错误(segfault) "段错误"是程序试图操作不允许访问或试图访问的不允许内存的情况.可能导致段错误的原因主要有: 1.试图解引用空指针(你不允许访问内存地址0) 2.试图解 ...