Docker + shipyard 測試
1 測試拓撲:
2 測試目的:
在兩臺Centos7服務器上安裝docker程序,測試鏡像封裝
從鏡像運行兩個apache應用,測試服務訪問
安裝shipyard容器管理程序,測試管理兩臺主機及container
3 測試過程
3.1 Linux橋接
若已啓用docker,先停止docker服務和移除docker0網橋:
# Stopping Docker and removing docker0
$ sudo service docker stop
$ sudo ip link set dev docker0 down
$ sudo brctl delbr docker0
創建需要的網橋:
$ sudo brctl addbr docker0
$ sudo ip addr add 10.0.1.197/24 devbridge0
$ sudo ip link set dev docker0 up
$ ip addr show docker0
修改eth網卡使橋接生效:
修改需要通信的eth網卡,模式改爲BRIDGE=bridge,並重啓網絡;ifconfig觀察橋接是否生效並啓用。
以上操作在兩臺host都需要執行,可實現bridge與需要通信的網卡橋接,然後通過管理端訪問控制container;container會獲取到和docker0同一個網段地址,方便完成測試。
3.2 第一部分
對服務器做初始化,使正常訪問互聯網。安裝運行docker:
# sudo yum install docker
# sudo service docker start
# sudo chkconfig docker on
創建非root用戶mds,運行docker:
# sudo usermod -a -G docker mds
拉取centos的docker鏡像:
# docker pull centos
查看拉取的docker鏡像:
# docker images
運行一個centos6docker鏡像:
安裝並運行apache服務:
bash-4.1# yum -y install httpd
bash-4.1# service httpd start
bash-4.1# chkconfig httpd on
退出當前容器:
bash-4.1# exit
重新封裝該容器,創建鏡像:
# Docker commit b1bd49907d55 httpd
生成新鏡像:
3.3 第二部分
從鏡像部署兩個apache應用:
# docker run –i–t 55a05053732c /bin/bash
bash-4.1#ifconfig eth0 查看IP地址:10.0.1.3
bash-4.1#service httpd start
bash-4.1#[ctrl+q] 切出當前容器
# docker run –i–t 55a05053732c /bin/bash
bash-4.1#ifconfig eth0 查看IP地址:10.0.1.4
bash-4.1#service httpd start
bash-4.1#[ctrl+q]
操作步驟一樣,但是新的容器會生成不同的containerID,查看已創建的容器:
分別在操作端使用IE瀏覽器訪問兩個容器服務地址:
http://10.0.1.3/
3.4 第三部分
拉取並運行shipyard鏡像(shipyard用於集中管理docker主機和container):
# docker pull shipyard/shipyard
# docker images 查看images id
# docker run –i –t 30e0b59613ff /bin/bash
運行shipyard服務
root@029b8401c5a0:/app# ifconfig 查看IP地址10.0.1.2
root@029b8401c5a0:/app# sudo pythonmanage.py runserver 0.0.0.0:8000
root@029b8401c5a0:/app# netstat -ant | grep 8000 查看服務狀態
tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN
在兩臺host下載shipyard/agent,向shipyard註冊host:
# wget https://github.com/shipyard/shipyard-agent/releases/download/v0.3.2/shipyard-agent
# ./shipyard-agent -url http://10.0.1.2:8000 –register
# ./shipyard-agent -url http://10.0.1.2:8000 –key 1234567890qwertyuiop
登錄shipyard管理端:
Username: admin
Password: shipyard
在shipyard的UI管理界面,驗證通過host加入的請求:
通過web UI管理container:
管理鏡像:
用戶權限管理:
單個container無法查看和管理的解決辦法:
分別查看4500、4243端口是否被監控
關閉host防火牆,關閉docker服務,並執行以下命令;
/usr/bin/docker -d -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock
之後重新啓用docker,重複上述部署操作。
4 參考資料
Docker學習筆記
http://blog.tankywoo.com/docker/2014/05/08/docker-1-start.html
Docker Advanced networking
https://docs.docker.com/articles/networking/
Shipyard QuickStart
https://github.com/shipyard/shipyard/wiki/QuickStart
Docker 的一個 Web 管理界面 Shipyard
http://www.vpsee.com/2013/11/shipyard-a-docker-web-ui/
docker shipyard multihost
http://serverascode.com/2014/05/25/docker-shipyard-multihost.html
centos6.5下安裝docker0.11
說明:該測試只是針對一個特定場景測試,中間坑比較多很多問題未解決,只是爲了達到測試目的,觀察測試結果的一個簡單驗證。