了解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. React Native 【学习总结】-【常用命令】

    前言 刚接触RN,相信很多人无从下手,不知道下一步要干什么,能干什么,本次学习围绕这个问题,将RN的常用命令总结一下,帮助你快速上手 架构理解 光知道命令的作用,远远不够,如果知道命令背后的意义,才能 ...

  3. 20181113-7 Beta阶段第1周/共2周 Scrum立会报告+燃尽图 05

    作业要求https://edu.cnblogs.com/campus/nenu/2018fall/homework/2387 版本控制https://git.coding.net/lglr2018/F ...

  4. pat甲级1002

    1002. A+B for Polynomials (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue T ...

  5. IT行业大学生就业分析报告感想

    现如今的高校毕业生每年都在增长,就业压力只增不减,人才市场挤满了人 学生们普遍的表现出就业难的情况,并且适合自己的工作也难找 从报告中也容易看出IT行业很吸引人,也是人数最多的,因此机会也就变少了 在 ...

  6. 手机uc不支持伪元素使用animation动画;移动端background-attachment:fixed不兼容性

    20170503 1.手机uc不支持伪元素使用animation动画 (暂未解决) 2.移动端background-attachment:fixed不兼容性,没有任何效果, element:befor ...

  7. Java容器深入浅出之Collection与Iterator接口

    Java中用于保存对象的容器,除了数组,就是Collection和Map接口下的容器实现类了,包括用于迭代容器中对象的Iterator接口,构成了Java数据结构主体的集合体系.其中包括: 1. Co ...

  8. Kafka及Spring Cloud Stream

    安装 下载kafka http://mirrors.hust.edu.cn/apache/kafka/2.0.0/kafka_2.11-2.0.0.tgz kafka最为重要三个配置依次为:broke ...

  9. 我的bootstrap学习

    前端开发框架bootstrap Bootstrap 安装     <link ref="stylesheet" href="bs/css/bootstrap.css ...

  10. Eve-NG-Toolkit

    Eve-NG-Toolkit 来源 http://www.emulatedlab.com/archives/694 参考 http://eve-ng.cn/doku.php   http://foru ...