Rancher is an open source project that provides a complete platform for operating Docker in production. It provides infrastructure services such as multi-host networking, global and local load balancing, and volume snapshots. It integrates native Docker management capabilities such as Docker Machine and Docker Swarm. It offers a rich user experience that enables devops admins to operate Docker in production at large scale. – GitHub

前言

最近一直在找一个好用的容器管理服务, 也尝试了很多 例如 gaoyangxiaozhu/DockerVI 但是无一例外有很多的缺点. 例如部署困难、界面不友好、不是自由/开放源代码软件. 今天, 我在一个关于Docker的文章中见到了 Rancher 然后部署并且试用之后就喜欢上了它.

安装

官方网站

1docker run -d --restart=always\
2       -v /data/rancher/db:/var/lib/mysql \
3       --name rancher-server \
4       -p 8888:8080 \
5       rancher/server

只需要启动这一个容器 然后访问localhost:8888 就可以看到Rancher的界面了 在界面的右下角可以切换语言为简体中文

用户验证

系统管理/访问控制下可以进行用户的验证 BFBVJQ{DOH}YX)Z\])0M5$XX.png

我选择的是使用GitHub进行身份验证 按照提示生成Client IDSecret QQ截图20170102011147.png

保存之后进行一次验证 验证完成之后就自动记录了进行验证的GitHub ID, 以后就可以用这个ID进行OAuth验证登陆了

QQ截图20170102011615.png

添加主机

基础构架/主机下可以见到主机列表 点击添加主机进行添加主机的流程 QQ截图20170102011943.png

使用SSH登陆到主机上 执行

1curl -sSL get.docker.com | bash
2systemctl start docker
3systemctl enable docker

来安装Docker 然后输入生成了的脚本安装 这里如果使用运行Rancher的服务器安装的话在第4个步骤的输入框内填入服务器的IP 然后你就可以在基础构架/主机下看到你添加的服务器了 QQ截图20170102012808.png

运行容器

在每个主机的最后有一个按钮可以添加容器 QQ截图20170102013007.png

这里以运行hyalx/ssr-with-net-speeder为例子 演示一下容器的运行方法 进行一下设置然后点击创建QQ截图20170102013319.png

Rancher便会自动Pull下来映像并且运行

反向代理

当然 如果我们要使用一个服务 有时候那么长长的一串IP和端口不是那么的美观 在这里我使用了Nginx来进行反向代理 安装Nginx (Yum 安装)

1rpm -Uvh 
2http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
3yum install nginx
4systemctl start nginx 
5systemctl enable nginx

访问IP 出现Nginx默认页面 在cd /etc/nginx/conf.d/下可以编辑默认配置文件 这里提供我的配置文件作为参考

 1map $http_upgrade $connection_upgrade {
 2    default upgrade;
 3    ''      close;
 4}
 5server {
 6    listen       80;
 7    server_name  localhost;
 8
 9    location / {
10        proxy_pass http://127.0.0.1:端口;
11        proxy_set_header X-Real-IP $remote_addr;
12        proxy_set_header Host $host;
13        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
14        proxy_http_version 1.1;
15        proxy_set_header Upgrade $http_upgrade;
16        proxy_set_header Connection "upgrade";
17        sub_filter IP地址:端口 IP地址:80;
18        sub_filter_once off;
19    }
20
21    error_page   500 502 503 504  /50x.html;
22    location = /50x.html {
23        root   /usr/share/nginx/html;
24    }
25}

修改了地址请在GitHub修改应用的redict url和homepage 要不然每次登陆都会跳转会原来的地址

因为Rancher使用了Webshock 所以和正常的反代方式有些不同