Rancher快速上手指南(虚拟机篇)

Docker 虚拟化   2016-02-18 20:01:22 发布
您的评价:
     
0.0
收藏     0收藏
文件夹
标签
(多个标签用逗号分隔)

来自: http://dockone.io/article/1030

【编者的话】本测试把Rancher的基础用法做了一个初级的尝试,希望对新手有所帮助。

注:因版本更新,文中UI界面与最新版本略有差异。

通过一个您已经熟悉的任何一种主流的发行版Linux虚拟机,就可以开始一个快速简单的Rancher测试体验。

建议虚拟机的规格:1vcpu,不小于4GB内存,一块能够连通互联网的网卡。本文编写的测试机是AWS虚拟机上的Amazon Linux AMI,对CentOS/RHEL有直接参考意义。

Linux主机准备

安装和运行Docker命令和服务,这基本是Rancher对于操作系统的最小化需求了。如果您还不太熟悉Linux或者Docker可以参考以下文档:

Ubuntu用户参考文档: https://docs.docker.com/engine ... inux/

CentOS/RHEL用户参考文档: http://www.dedoimedo.com/compu ... .html

Docker命令和服务安装好之后需要确认:

确认docker的版本,下面是centos的输出

[ec2-user@ip-172-31-30-38 ~]$ sudo docker version

Client:

Version: 1.9.1

API version: 1.21

Go version: go1.4.2

Git commit: a34a1d5/1.9.1

Built:

OS/Arch: linux/amd64

Server:

Version: 1.9.1

API version: 1.21

Go version: go1.4.2

Git commit: a34a1d5/1.9.1

Built:

OS/Arch: linux/amd64

确认docker服务已经启动并且运行,下面是以centos为例

[ec2-user@ip-172-31-30-38 ~]$ sudo service docker status

docker (pid 7652) is running...

启动Rancher服务器

Rancher服务器是一个Docker image,所以其软件本身不需要安装,只需执行Docker命令下载并且运行Rancher服务器的镜像即可。

[ec2-user@ip-172-31-30-38 ~]$ sudo docker run -d --restart=always -p 8080:8080 rancher/server

Unable to find image 'rancher/server:latest' locally

latest: Pulling from rancher/server

0bf056161913: Pull complete

1796d1c62d0c: Pull complete

e24428725dd6: Pull complete

89d5d8e8bafb: Pull complete

a31a85515ea3: Pull complete

c2fd2bef635f: Pull complete

cb545eb6ebd1: Pull complete

7beaeed203e7: Pull complete

f483a41462cd: Pull complete

2fd8dc138841: Pull complete

a4e1df2cafae: Pull complete

5f632b46feff: Pull complete

a4ff409fd1b0: Pull complete

8713e0a3f956: Pull complete

7f6c235d968a: Verifying Checksum

c074ec496974: Download complete

390a2453f500: Download complete

c7f9c84ef74a: Download complete

Status: Downloaded newer image for rancher/server:latest

docker.io/rancher/server: this image was pulled from a legacy registry. Important: This registry version will not be supported in future versions of docker.

7c41a0a1a9c79842bca53c19e4ec106b0c2dc6469baec6077a40405f80b26963

[ec2-user@ip-172-31-30-38 ~]$

命令行参数解释:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...] 运行一个docker容器

-d 在后台运行docker容器,并且打印出它的容器ID (Run container in background and print container ID)

--restart=always 当容器存在时所应用的重启策略,总是重启。

-p 8080:65432 容器端口在虚拟机本机上使用8080端口,Rancher服务器的UI对外服务的端口是8080,如果您的服务器是远程的服务器,还需要考虑到你的测试客户机和虚拟机之间的防火墙策略,确保所使用的Rancer服务器UI对外服务端口不是防火墙阻止的端口。

rancher/server 这里声明让docker去docker hub下载并且运行名称为 rancher/server 的docker镜像到本地。

检查docker已经正确下载了rancher/server 镜像到本地

[ec2-user@ip-172-31-30-38 ~]$ sudo docker images

REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE

rancher/server latest 25c20134881a 3 days ago 845 MB

8713e0a3f956 4 days ago 473.9 MB

[ec2-user@ip-172-31-30-38 ~]$

检查Rancher服务器容器已经正常运行

[ec2-user@ip-172-31-30-38 ~]$ sudo docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

7c41a0a1a9c7 rancher/server "/usr/bin/s6-svscan /" 3 minutes ago Up 3 minutes 3306/tcp, 8080/tcp, 0.0.0.0:8080->8080/tcp tiny_kalam

[ec2-user@ip-172-31-30-38 ~]$

国内的服务器的下载速度可能会比较慢,需要等待大约30分钟左右。用浏览器打开Rancher服务器UI界面,并且确认是否可以正常登陆。

首次访问还没有配置访问权限的页面如上图所示。为了安全起见,点击上面的Access Control来设置一个本地账号和密码。

如上图,使用设置的账号和密码再次登陆确认,配置的信息正确,继续下面的测试。

还可以在命令行开启Rancher容器运行日志监控,如下所示:

替换下面红字部分的docker容器id,你的id可以从docker ps命令查到

[ec2-user@ip-172-31-21-99 ~]$ sudo docker logs -f 988003c02bcd

到目前,你已经完成了Rancher服务器的部署和基础配置。

添加主机

主机是Rancher的工作节点,类似服务器虚拟化的Hypervisor;在本实验中我们在运行Rancher服务器容器的管理节点上(虚拟机)做All-in-One的测试,因此下面把测试所用的虚拟机添加为运行工作负载容器的工作主机。

点击登陆以后界面上的add host按钮。

1.点击Customer,默认的选项是DigtalOcean

2.复制文本框中的代码,在虚拟机的命令里面粘贴运行。

3.点击Close按钮

运行以上命令之后,在命令行可以用docker ps命令再次查看容器运行的状态,如下所示:

[ec2-user@ip-172-31-21-99 ~]$ sudo docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS

NAMES

6ab206a64a68 rancher/agent:v0.8.2 "/run.sh run" 2 minutes ago Up 2 minutes rancher-agent

988003c02bcd rancher/server "/usr/bin/s6-svscan /" 28 minutes ago Up 28 minutes 0.0.0.0:8080->8080/tcp, 3306/tcp boring_bhaskara

[ec2-user@ip-172-31-21-99 ~]$

我们可以看到多了一个名字为rancher/agent的容器。过几分钟之后在回到Web控制台中。查看Host添加之后的结果。

如上图所示,我们看到了一台活动的主机,并且该主机上运行着一个容器,就是Rancher服务器自己。

可以继续重用上面的命令,来把其他的测试虚拟机也添加为Host,如下所示:

[ec2-user@ip-172-31-21-99 ~]$ sudo docker run -e CATTLE_AGENT_IP=X.X.X.X -d --privileged -v /var/run/docker.sock:/var/run/docker.sock rancher/agent:v0.8.2 http:// X.X.X.X:8080/v1/scripts/6D16D7061AD34CB3D1BA:1451232000000:OZ92PjCyfQkHI7mUDAz03pzt7r8

替换以上红色部分,主要是IP地址需要修改为运行Rancher服务器容器的服务器的IP,当然,运行此条命令的前提条件如第一节所述,与Rancher服务器的准备工作相同。

用Web UI运行容器

现在来通过图形界面来运行第一个容器。通过简单地几下鼠标点击即可为完成一个容器的运行动作。

1.点击 Add Container按钮增加新的容器

1.输入 first_container 作为容器的名称

2.使用默认的Ubuntu14镜像

3.点击 create 创建按钮

1.经过大约几秒钟,出现了两个运行的容器,firs_container为本测试创建的容器,下面的那个Network Agent容器的作用是用户主机之间的网络通信。

2.上图可以看出主机间会使用Rancher 服务器所管理的10.42.0.0 内网通信。

1.在新建的Ubuntu容器的菜单上点击向下按钮

2.选择在Web页面中运行 Shell 选项

1.经过几秒钟的链接,网页上出现了Ubuntu容器的root命令行提示符,运行第一个命令 uname –a

2.运行第二个命令行ifconfig

到此为止你已经成功创建了新的容器,在命令行里面,如果你是developer的话,你已经可以开工了,或是部署测试代码,或者打造应用服务的image。

用命令行运行容器

如果您偏爱CLI命令行,可以在host上执行容器的创建和管理动作,如下所示:

下面命令为运行一个新的名为second_container 的Ubuntu14.04.2容器,并在容器运行之后,直接进入该容器的命令行

[ec2-user@ip-172-31-21-99 ~]$ docker run -it --name=second_container ubuntu:14.04.2

Unable to find image 'ubuntu:14.04.2' locally

14.04.2: Pulling from library/ubuntu

Digest: sha256:a1cec70421f71f00c8bdb0adf0226dc548ff5ba9699cbd5fa09acdb68df82a02

Status: Downloaded newer image for ubuntu:14.04.2

root@be607f589023:/#

这里是第二个容器的命令行,下面执行id命令

root@be607f589023:/# id

uid=0(root) gid=0(root) groups=0(root)

在该容器里做网络测试

root@be607f589023:/# ping rancher.com

PING rancher.com (104.24.18.49) 56(84) bytes of data.

64 bytes from 104.24.18.49: icmp_seq=1 ttl=59 time=1.75 ms

64 bytes from 104.24.18.49: icmp_seq=2 ttl=59 time=1.97 ms

^C

--- rancher.com ping statistics ---

2 packets transmitted, 2 received, 0% packet loss, time 1001ms

rtt min/avg/max/mdev = 1.758/1.866/1.975/0.116 ms

退出该容器命令行

root@be607f589023:/# exit

exit

在host执行docker容器运行状态查看命令

[ec2-user@ip-172-31-21-99 ~]$ sudo docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

074b22a00a7c ubuntu:14.04.3 "/bin/bash" 15 minutes ago Up 15 minutes 37695985-73e7-4e54-be90-870c86d4cef3

9132d138e896 rancher/agent-instance:v0.6.0 "/etc/init.d/agent-in" 15 minutes ago Up 15 minutes 0.0.0.0:500->500/udp, 0.0.0.0:4500->4500/udp ce65d23e-2f55-4497-9ffe-38ae1bcedf9f

6ab206a64a68 rancher/agent:v0.8.2 "/run.sh run" 39 minutes ago Up 39 minutes rancher-agent

988003c02bcd rancher/server "/usr/bin/s6-svscan /" About an hour ago Up About an hour 0.0.0.0:8080->8080/tcp, 3306/tcp boring_bhaskara

[ec2-user@ip-172-31-21-99 ~]$

以上测试结束后,可以在Web UI中查看该容器的状态,可以看到它已经处于stop的状态,它所使用网络地址与Rancher服务器容器同一个网段,这是默认执行docker run命令的默认结果;还可以在命令行制定使用Rancher服务器所管理的叠加的内部私有网络,命令行如下:

注意一下docker run命令使用了 --label io.rancher.container.network=true 参数

[ec2-user@ip-172-31-21-99 ~]$ docker run -it --label io.rancher.container.network=true ubuntu:14.04.2

进入新容器的命令行之后查看网络地址

root@a12455b64a7b:/# ifconfig

eth0 Link encap:Ethernet HWaddr 02:42:ac:11:00:05

inet addr:172.17.0.5 Bcast:0.0.0.0 Mask:255.255.0.0

inet6 addr: fe80::42:acff:fe11:5/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:9001 Metric:1

RX packets:5 errors:0 dropped:0 overruns:0 frame:0

TX packets:6 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:438 (438.0 B) TX bytes:508 (508.0 B)

lo Link encap:Local Loopback

inet addr:127.0.0.1 Mask:255.0.0.0

inet6 addr: ::1/128 Scope:Host

UP LOOPBACK RUNNING MTU:65536 Metric:1

RX packets:0 errors:0 dropped:0 overruns:0 frame:0

TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

root@a12455b64a7b:/# ping rancher.com

PING rancher.com (104.24.18.49) 56(84) bytes of data.

64 bytes from 104.24.18.49: icmp_seq=1 ttl=59 time=1.75 ms

64 bytes from 104.24.18.49: icmp_seq=2 ttl=59 time=1.95 ms

在不退出以上容器命令行的情况下,进入Web UI查看此容器的状态。

最下面一个是使用了内部叠加网的容器,它的Ip地址从Web UI中看和第一个 first_container的IP为同一个网段。

至此搞清楚了多个容器的运行和基本的网络概念之后,下面可以做更为复杂的测试。

用Web UI完成多层应用架构的部署

本测试需要完成WordPress应用的多层部署,期望的部署模式如下:

1.前端负载均衡服务,一个LB用来接入来自互联网的流量

2.WordPress应用层,有两个运行WordPress软件的容器组成

3.数据库服务层,有一个MySQL服务器容器

具体的操作步骤如下所示。

在登录后的首页,点击 Add Service 按钮开始创建整个堆栈。

1.选择 Add Service 增加 数据库服务,输入名称 database

2.选择使用mysql 镜像

3.点击高级选项卡

4.点击添加环境变量

5.数据环境变量的内容,mysql 数据库的root 密码为 pass1

6.点击创建此服务

1.创建后的服务默认为非活动状态,点击 Start 按钮,启动数据库服务

1.启动之后的mysql数据库服务状态正常,点击上面的 Add Service 按钮添加服务

1.拖动圆点,使本层服务的容器数量为2

2.输入名称为 mywordpress

3.输入所需要使用的Wordpress镜像

4.选择它所依赖的数据库服务

5.输入名称 mysql

6.点击创建按钮

1.点击菜单中的运行按钮,启动新建容器

2.观察容器的数量为2

3.观察容器所使用的镜像名称,点击 Add Service 下拉菜单,选择创建负载均衡器

1.使用默认1为LB的数量

2.输入LB的名称

3.输入在Host上LB对外服务的端口为8088

4.输入Wordpress容器的服务端口 80

5.选择对象服务,为myWordpress

6.点击 Save创建此容器和相关配置

1.运行创建好的LB容器,点击该容器,查看它的状态,点击Ports 选项卡

2.点击Host IP,浏览器就会连接到 http://your_host_ip:port 打开负载均衡的服务网址

如上图所示wordPress的安装页面正常打开,可以继续完成WordPress的安装和配置。至此您已经顺利完成了多层应用的部署和搭建。

后记

如果您再次刷新浏览器,或者用新的窗口打开该网址,有可能再次进入此安装页面,这是由于您连接到了第二个为曾执行过安装程序的WordPress容器,手工把wp-config.php复

制到该容器,再次刷新即可,看到安装好之后的页面。

如果您是用的是AWS的主机,或者其他云主机,默认情况下8080,8088这些服务端口是不通的,需要在使用前,先进入安全组管理,打开这些端口。

本文参考了Rancher官方文档: http://docs.rancher.com/rancher/quick-start-guide/

但是不包含docker-compse命令行工具 + yml 配置文件的创建方式,建议可以参考该

文档完成完整的测试。

本测试把Rancher的基础用法做了一个初级的尝试,希望对新手有所帮助。

Rancher官方网站: http://rancher.com/

_________________________________________________________________________________________________________

温馨提示:

云舒网络携手Rancher Labs推出【Rancher | 实战群】,在线为您分享Docker技术干货,更有往期回顾精选期刊等你拿!

本群汇集了Rancher中国最强技术精英团队及业内技术派高人,宗旨是为了大家拥有更专业的平台交流Rancher实战技术,实时与Rancher创始团队面对面!同时欢迎各位分享自己的经验、疑难问题,我们将定期邀请分享嘉宾做各类话题分享及回顾,共同实践研究Docker容器生态圈。

对Rancher和Docker技术感兴趣、或对本文中细节需继续探讨的朋友,欢迎加入本群参与讨论!

加群方法:

1.关注【云舒网络】公众号

2.留言”我要加群“

扩展阅读

搭建企业私有Docker Registry实战分享
容器服务如何在企业客户落地?Rancher解决之道分享。
docker资源汇总
Docker概述:什么Docker如此特别,它是如何构建的
电信行业的容器化改造之道

为您推荐

EvaThumber:基于URL的图片处理库 (可实现缩略图 | 二维码 | 水印 | 面部识别等)
Struts2 s:doubleselect级联下拉框 详解析
Google Dremel 原理 - 如何能3秒分析1PB
带来各种不同计算机视觉算法和技术的JS库:tracking.js
专为微信设计的 UI 库:WeUI

更多

Docker
虚拟化
相关文档  — 更多
相关经验  — 更多
相关讨论  — 更多