了解Docker

Docker是一个golang编写的开源轻量级的、可移植的、自给自足的容器,Docker主要应用在以下场景:

  • web应用的自动化打包和发布;

  • 自动化测试和持续集成、发布;

  • 在服务型环境中部署和调整数据库或其他的后台应用;

  • 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

Docker系统有两个程序:docker服务端和docker客户端。其中docker服务端是一个服务进程,管理着所有的容器。docker客户端则扮演着docker服务端的远程控制器,可以用来控制docker的服务端进程。大部分情况下,docker服务端和客户端运行在一台机器上。

  • 镜像:一个镜像相当于一个root文件系统,包含运行需要的文件、库、资源、配置
  • 容器:容器是镜像的实例化操作,容器有自己独立的文件系统、网络配置、进程空间,每个容器是独立的运行机制,容器是无状态的,数据应保存在数据卷中。
  • 仓库:管理docker镜像的发布

docker安装及配置

在centos系列系统中可直接使用yum命令进行搜索安装,安装完毕后可运行docker version查看安装的版本,docker包含了很有公用的镜像,可使用docker search进行搜索安装。

yum install docker -y
docker pull nginx
# 运行4个docker镜像,网站目录在./ningx/html/下,日志文件在 ./nginx/logs/下
docker run -it -p 8081:80 --name nginx1 -v `pwd`/nginx/html1/:/usr/share/nginx/html/ -v `pwd`/nginx/logs1/:/var/log/nginx/ -d nginx
docker run -it -p 8082:80 --name nginx2 -v `pwd`/nginx/html2/:/usr/share/nginx/html/ -v `pwd`/nginx/logs2/:/var/log/nginx/ -d nginx
docker run -it -p 8083:80 --name nginx3 -v `pwd`/nginx/html3/:/usr/share/nginx/html/ -v `pwd`/nginx/logs3/:/var/log/nginx/ -d nginx
docker run -it -p 8084:80 --name nginx4 -v `pwd`/nginx/html4/:/usr/share/nginx/html/ -v `pwd`/nginx/logs4/:/var/log/nginx/ -d nginx

安装docker php-fpm

docker pull php:7.1-fpm
docker run -p 9000:9000 --name php-fpm1 -d -v /opt/app/docker/nginx/app1/:/var/www/html:ro php:7.1-fpm
docker run --name nginx1 -p 8081:80 -d -v /opt/app/docker/nginx/html1:/usr/share/nginx/html:ro -v /opt/app/docker/nginx/conf1:/etc/nginx/conf.d:ro -v /opt/app/docker/nginx/logs1:/var/log/nginx --link php-fpm1:php nginx
echo "<?php phpinfo();" > /opt/app/docker/nginx/app1/index.php

推荐《Docker从入门到实践》,具体可打开gitbook查看:https://www.gitbook.com/book/yeasy/docker_practice/details

nginx配置

nginx的安装就不再描述了,最简单快捷的可使用yum进行安装,可可以自行去官网进行下载编译安装,以下是我的nginx负载均衡https到docker的配置文件:

注:我的运行环境在aws上,你可以将docker和nginx安装在一台机器上,也可以将docker部署在1台或4台机器,nginx部署在一台机器,再结合keepalived做高可用就可实现高可用双机热备的https负载均衡啦~

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid; events {
worker_connections 1024;
} http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048; include /etc/nginx/mime.types;
default_type application/octet-stream; index index.html index.htm; upstream docker_nginx {
ip_hash; #同一个ip一定时间内负载到一台机器
server 172.31.0.155:8081; # docker虚拟的第1台nginx机器
server 172.31.0.155:8082; # docker虚拟的第2台nginx机器
server 172.31.0.155:8083; # docker虚拟的第3台nginx机器
server 172.31.0.155:8084; # docker虚拟的第4台nginx机器
} server {
# 使用openssl自建的rsa证书
ssl_certificate /opt/ssl/nginx.ipp365.com.crt;
ssl_certificate_key /opt/ssl/nginx.ipp365.com.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on; listen 443;
ssl on;
server_name nginx.ipp365.com; location / {
# 代理到真实机器,如果真实机器也安装了https则使用https
# 一般代理集群对流量进行了https后,真实机器可不再使用https
proxy_pass http://docker_nginx;
}
}
}

创建ssl自建的证书

线上证书一般去ca申请的,测试的话可以使用openssl自己创建两个证书,创建命令如下:

# 生成一个2048位密钥文件
openssl genrsa -out privkey.pem 2048
# 使用密钥文件生成一个证书
openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095

SSL常见错误

问题:此网站出具的安全证书不是由受信任的证书颁发机构颁发的。

服务器正在使用的SSL证书不是通过正式的全球信任的CA颁发。推荐购买GlobalSign SSL,GeoTrust SSL ,Symante SSL证书, SSL通常是因为没有正确安装证书,请再检查一下是否删除了原来的测试证书,如果网站使用的证书是正确的,请重新启动webserver。

问题:此网站出具的安全证书是为其他网站地址颁发的。

一个SSL证书所对应的域名是一个全域名FQDN( Fully Qualified Domain Name ),如果证书中的域名是www.domain.com,则通过其他相近的域名:web.domain.com,app.domain.com,domain.com,系统都会报告和证书中的域名不匹配。如果有多相同主域名的站点需要申请证书,推荐通配型SSL证书;如果不是相同主域名则需要购买多域名型SSL证书。

问题:本页面包含有不安全的内容。

如果一个页面需要通过HTTPS访问被访问,则其中所有的元素都必须是HTTPS方式,如果有:图片、JS脚本,FLASH插件是通过HTTP方式去调用的,就会出现这个错误,最常见的,就是调用flash播放插件:codebase='http://download.macromedia.com/pub/shockwave/

cabs/flash/swflash.cab',将http改成HTTPS即可,刷新后测试SSL问题有没有解决。

问题:此网站出具的安全证书已过期或还未生效。

这个标识网站使用的SSL证书已经过期,请先检查网站证书的有效期,如果网站证书有效期在本日以后,则请检查本地电脑的日期设置,是否正确。如果证书过期了,请尽快联系易维信客服,续费!就能处理好SSL错误了。

问题:为什么使用匿名Diffie-Hellman(ADH)算法时会收到"no shared cipher"错误?

默认情况下,出于安全原因,OpenSSL并不启用ADH算法。仅在你确实明白了这个算法的副作用时,你才可以启用此算法。

为了使用匿名Diffie-Hellman(ADH)算法,你必须在编译OpenSSL时使用"-DSSL_ALLOW_ADH"配置选项,并在SSLCipherSuite指令中添加"ADH"。

使用nginx+docker配置https负载均衡的更多相关文章

  1. office web apps安装部署,配置https,负载均衡(七)配置过程中遇到的问题详细解答

    该篇文章,是这个系列文章的最后一篇文章,该篇文章将详细解答owa在安装过程中常见的问题. 如果您没有搭建好office web apps,您可以查看前面的一系列文章,查看具体步骤: office we ...

  2. office web apps安装部署,配置https,负载均衡(六)配置负载均衡

    owa可以采用任何的负载均衡方案,我们这里采用阿里云提供的负载均衡解决方案 前提条件,你已经配置了一台域控制器,两台域服务器[即安装了owa相关软件,并将计算机隶属于域]: 如果您不清楚怎么做,那么请 ...

  3. office web apps安装部署,配置https,负载均衡(五)配置服务器场

    前提条件:您已经完成了域控制器的配置,拥有域账号,并且已经安装了OWA启动所需要的必要软件: 具体步骤可以参考: office web apps安装部署,配置https,负载均衡(一)背景介绍 off ...

  4. office web apps安装部署,配置https,负载均衡(四)安装office web apps相关软件

    前提条件: 1.一台windows server 2008R2服务器,并且已经配置了域: 服务器连接域控制器的相关文档,请查看上一篇文章: office web apps安装部署,配置https,负载 ...

  5. office web apps安装部署,配置https,负载均衡(三)服务器连接域控制器

    前提条件:1>一台window server 2008R2 服务器 2>您已经在同一内网的另外一台服务器上安装好了域控制器文档请看我写的另外一篇文章: office web apps安装部 ...

  6. nginx 配置https 负载均衡

    1.Winodw安装openssl工具(生成SSL证书用的)免编译版本下载: http://slproweb.com/products/Win32OpenSSL.html 注意:如果openssl在使 ...

  7. office web apps安装部署,配置https,负载均衡(一)背景介绍

    Office Web Apps,简称owa,是微软开发的在线预览office 文件服务.只要是做web开发技术的技术人员都知道,office文件预览,对于网站来说,绝对是一个难点,目前常见的预览off ...

  8. office web apps安装部署,配置https,负载均衡(二)域控制器安装并配置域账号

    域控制器对服务器的要求不高,我们这里以windows server 2008R2为例 系统要求:windows server 2008R2 笔者也尝试使用了windows server 2012R2, ...

  9. Nginx 部署、反向代理配置、负载均衡

    Nginx 部署.反向代理配置.负载均衡 最近我们的angular项目部署,我们采用的的是Nginx,下面对Nginx做一个简单的介绍. 为什么选择Nginx 轻:相比于Apache,同样的web服务 ...

随机推荐

  1. Wacom将在CES 2015上发布全新旗舰版Cintiq

    Cintiq 27QHD和Cintiq 27QHD touch拥有宽大的工作表面,以及令人惊喜的屏幕笔触和颜色性能. 2015年1月6日,Wacom发布了Cintiq 27QHD和Cintiq 27Q ...

  2. 联邦快递 IE和IP的区别 Fedex IE VS Fedex IP

    什么是FedEx IP? FedEx IP指的是联邦快递优先服务,时效比较快些,相对来说价格也比普通的高一些. 什么是FedEx IE? FedEx IE指的是联邦快递经济服务,时效与FedEx IP ...

  3. Full Binary Tree(二叉树找规律)

    Description In computer science, a binary tree is a tree data structure in which each node has at mo ...

  4. Java中的抽象类abstract

    abstract定义抽象类 abstract定义抽象方法,只需要声明,不需要实现 包含抽象方法的类是抽象类 抽象类中可以包含抽象方法,也可以包含普通方法 抽象类不能直接创建,可以定义父类引用变量指向子 ...

  5. CS小分队第一阶段冲刺站立会议(5月14日)

    昨日成果:为抽号计时器添加了第一类抽号,基本实现界面,功能出现了一些错误 遇到问题:我预想通过timer控件来实现随机抽号而拜托随机生成数,但是出现了只有个位随机滚动,其他位数不动的现象,我预计是数值 ...

  6. hdu1242 Rescue DFS(路径探索题)

    这里我定义的路径探索题指 找某路能够到达目的地,每次走都有方向,由于是探索性的走 之后要后退 那些走过的状态都还原掉 地址:http://acm.hdu.edu.cn/showproblem.php? ...

  7. alpha8/10

    队名:Boy Next Door 燃尽图 晗(组长) 今日完成 和队友讨论alpha版的最终界面. 明日工作 确定alpha版既定功能的正常使用. 还剩下哪些任务 账号绑定功能以及账单信息的下载. 困 ...

  8. Ubuntu 下升级 php

    起因: 在现有的 Apache + PHP 环境下,增加一个 PHP Extension 扩展时,遇到错误: Unable to initialize moduleModule compiled wi ...

  9. React Native 学习-组件说明和生命周期

    组件的详细说明(Component Specifications) 当通过调用 React.createClass() 来创建组件的时候,你应该提供一个包含 render 方法的对象,并且也可以包含其 ...

  10. js滚动异步加载数据的思路

    <body> <div style="width:200px; height:1000px; border:1px solid red;" id="to ...