Rancher快速上手指南(虛擬機篇)

GayJUU 9年前發布 | 66K 次閱讀 Docker 虛擬化

來自: 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.留言”我要加群“

 本文由用戶 GayJUU 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!