成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用Docker Swarm部署可擴展的Python3應用

云計算
我想展示給你的就是如何使用 Docker Swarm 部署一個簡單的 Python Falcon REST 應用。這展示的部分步驟是截取自 Swarm Tutorial,我已經修改了部分內容,并且增加了一個 Vagrant Helper 的倉庫來啟動一個可以讓 Docker Swarm 工作起來的本地測試環境。

 [[170500]]

Ben Firshman 最近在 Dockercon 做了一個關于使用 Docker 構建無服務應用的演講,你可以在這里查看詳情(還有視頻)。之后,我寫了一篇關于如何使用 AWS Lambda 構建微服務系統的文章。

今天,我想展示給你的就是如何使用 Docker Swarm 部署一個簡單的 Python Falcon REST 應用。這里我不會使用dockerrun 或者是其他無服務特性,你可能會驚訝,使用 Docker Swarm 部署(復制)一個 Python(Java、Go 都一樣)應用是如此的簡單。

注意:這展示的部分步驟是截取自 Swarm Tutorial,我已經修改了部分內容,并且增加了一個 Vagrant Helper 的倉庫來啟動一個可以讓 Docker Swarm 工作起來的本地測試環境。請確保你使用的是 1.12 或以上版本的 Docker Engine。我寫這篇文章的時候,使用的是 1.12RC2 版本。注意的是,這只是一個測試版本,可能還會有修改。

你要做的***件事,就是如果你想本地運行的話,你要保證 Vagrant 已經正確的安裝和運行了。你也可以按如下步驟使用你最喜歡的云服務提供商部署 Docker Swarm 虛擬機系統。

我們將會使用這三臺 VM:一個簡單的 Docker Swarm 管理平臺和兩臺 worker。

安全注意事項:Vagrantfile 代碼中包含了部分位于 Docker 測試服務器上的 shell 腳本。這是一個潛在的安全問題,它會運行你不能控制的腳本,所以請確保你會在運行代碼之前審查過這部分的腳本。

  1. $ git clone https://github.com/chadlung/vagrant-docker-swarm 
  2. $ cd vagrant-docker-swarm 
  3. $ vagrant plugin install vagrant-vbguest 
  4. $ vagrant up 

Vagrant up 命令需要一些時間才能完成。

SSH 登錄進入 manager1 虛擬機:

  1. $ vagrant ssh manager1 

在 manager1 的 ssh 終端會話中執行如下命令:

  1. $ sudo docker swarm init --listen-addr 192.168.99.100:2377 

現在還沒有 worker 注冊上來: 

  1. $ sudo docker node ls 

讓我們注冊兩個新的 worker,請打開兩個新的終端會話(保持 manager1 會話繼續運行):

  1. $ vagrant ssh worker1 

在 worker1 的 ssh 終端會話上執行如下命令:

  1. $ sudo docker swarm join 192.168.99.100:2377 

在 worker2 的 ssh 終端會話上重復這些命令。

在 manager1 終端上執行如下命令:

  1. $ docker node ls 

你將會看到: 

 


在 manager1 的終端里部署一個簡單的服務。

 

  1. sudo docker service create --replicas 1 --name pinger alpine ping google.com 

這個命令將會部署一個服務,它會從 worker 之一 ping google.com。(或者 manager,manager 也可以運行服務,不過如果你只是想 worker 運行容器的話,也可以禁用這一點)。可以使用如下命令,查看哪些節點正在執行服務:

  1. $ sudo docker service tasks pinger 

結果會和這個比較類似:

 所以,我們知道了服務正跑在 worker1 上。我們可以回到 worker1 的會話里,然后進入正在運行的容器:

  1. $ sudo docker ps 

 你可以看到容器的 id 是: ae56769b9d4d,在我的例子中,我運行如下的代碼:

  1. $ sudo docker attach ae56769b9d4d 

 

 你可以按下 CTRL-C 來停止服務。

回到 manager1,然后移除這個 pinger 服務。

  1. $ sudo docker service rm pinger 

現在,我們將會部署可復制的 Python 應用。注意,為了保持文章的簡潔,而且容易復制,所以部署的是一個簡單的應用。

你需要做的***件事就是將鏡像放到 Docker Hub上,或者使用我已經上傳的一個。這是一個簡單的 Python 3 Falcon REST 應用。它有一個簡單的入口: /hello 帶一個 value 參數。

放在 chadlung/hello-app 上的 Python 代碼看起來像這樣:

  1. import json 
  2. from wsgiref import simple_server 
  3. import falcon 
  4. class HelloResource(object): 
  5.     def on_get(self, req, resp): 
  6.         try: 
  7.             value = req.get_param('value'
  8.             resp.content_type = 'application/json' 
  9.             resp.status = falcon.HTTP_200 
  10.             resp.body = json.dumps({'message': str(value)}) 
  11.         except Exception as ex: 
  12.             resp.status = falcon.HTTP_500 
  13.             resp.body = str(ex) 
  14. if __name__ == '__main__'
  15.     app = falcon.API() 
  16.     hello_resource = HelloResource() 
  17.     app.add_route('/hello', hello_resource) 
  18.     httpd = simple_server.make_server('0.0.0.0', 8080, app) 
  19.     httpd.serve_forever() 

Dockerfile 很簡單:

  1. FROM python:3.4.4 
  2. RUN pip install -U pip 
  3. RUN pip install -U falcon 
  4. EXPOSE 8080 
  5. COPY . /hello-app 
  6. WORKDIR /hello-app 
  7. CMD ["python""app.py"

上面表示的意思很簡單,如果你想,你可以在本地運行該進行來訪問這個入口: http://127.0.0.1:8080/hello?value=Fred

這將返回如下結果:

  1. {"message""Fred"

在 Docker Hub 上構建和部署這個 hello-app(修改成你自己的 Docker Hub 倉庫或者使用這個):

  1. $ sudo docker build . -t chadlung/hello-app:2 
  2. $ sudo docker push chadlung/hello-app:2 

現在,我們可以將應用部署到之前的 Docker Swarm 了。登錄 manager1 的 ssh 終端會話,并且執行:

  1. $ sudo docker service create -p 8080:8080 --replicas 2 --name hello-app chadlung/hello-app:2 
  2. $ sudo docker service inspect --pretty hello-app 
  3. $ sudo docker service tasks hello-app 

現在,我們已經可以測試了。使用任何一個 Swarm 節點的 IP 來訪問 /hello 入口。在本例中,我在 manager1 的終端里使用 curl 命令:

注意,Swarm 中的所有的 IP 都可以,不管這個服務是運行在一臺還是更多的節點上。

  1. $ curl -v -X GET "http://192.168.99.100:8080/hello?value=Chad" 
  2. $ curl -v -X GET "http://192.168.99.101:8080/hello?value=Test" 
  3. $ curl -v -X GET "http://192.168.99.102:8080/hello?value=Docker" 

結果:

  1. * Hostname was NOT found in DNS cache 
  2. *   Trying 192.168.99.101... 
  3. * Connected to 192.168.99.101 (192.168.99.101) port 8080 (#0) 
  4. > GET /hello?value=Chad HTTP/1.1 
  5. User-Agent: curl/7.35.0 
  6. > Host: 192.168.99.101:8080 
  7. > Accept: */* 
  8. >  
  9. * HTTP 1.0, assume close after body 
  10. < HTTP/1.0 200 OK 
  11. Date: Tue, 28 Jun 2016 23:52:55 GMT 
  12. < Server: WSGIServer/0.2 CPython/3.4.4 
  13. < content-type: application/json 
  14. < content-length: 19 
  15. <  
  16. {"message""Chad"

從瀏覽器中訪問其他節點:

 如果你想看運行的所有服務,你可以在 manager1 節點上運行如下代碼:

 

  1. $ sudo docker service ls 

如果你想添加可視化控制平臺,你可以安裝 Docker Swarm Visualizer(這對于展示非常方便)。在 manager1 的終端中執行如下代碼:

  1. $ sudo docker run -it -d -p 5000:5000 -e HOST=192.168.99.100 -e PORT=5000 -v /var/run/docker.sock:/var/run/docker.sock manomarks/visualizer 

打開你的瀏覽器,并且訪問: http://192.168.99.100:5000/

結果如下(假設已經運行了兩個 Docker Swarm 服務):

 

要停止運行 hello-app(已經在兩個節點上運行了),可以在 manager1 上執行這個代碼:

  1. $ sudo docker service rm hello-app 

如果想停止 Visualizer, 那么在 manager1 的終端中執行:

  1. $ sudo docker ps 

獲得容器的 ID,這里是: f71fec0d3ce1,從 manager1 的終端會話中執行這個代碼:

  1. $ sudo docker stop f71fec0d3ce1 

祝你成功使用 Docker Swarm。這篇文章主要是以 1.12 版本來進行描述的。

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2015-08-03 16:15:53

Docker部署集群

2015-04-23 13:29:02

Flume分布式服務HDFS

2017-03-31 14:25:19

手動docker swar集群

2016-10-31 11:26:13

ReactRedux前端應用

2025-05-06 08:09:02

2023-11-10 09:00:00

人工智能機器學習Docker

2019-05-20 13:20:36

Python編程語言情感分析

2016-12-01 13:37:42

OpenStack MDocker Swar容器

2020-08-28 13:27:25

Docker Node應用

2023-07-26 16:20:36

云原生云計算

2017-06-07 10:00:56

PythonBeautifulSo解析器

2024-02-26 00:01:01

RedisGolang應用程序

2009-06-10 16:56:12

可擴展GlassFisJavaEE6

2012-11-14 15:25:58

2011-11-23 10:06:32

Azure微軟移動應用

2024-05-10 13:14:41

技巧云原生應用

2021-05-12 07:42:41

CentOS7Python3系統

2022-08-30 08:00:00

架構數據庫Postgres

2015-03-04 11:13:03

DockerDocker編排工具Docker可擴展性

2015-12-02 11:23:38

DockerUber容器服務
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲啊v在线| 国产高清免费视频 | 日日摸天天添天天添破 | 草草草影院 | av网站免费观看 | 精品一区二区三区av | 亚洲伊人精品酒店 | 日韩av成人 | 日韩免费视频一区二区 | 99久久免费精品 | 精品久久一区二区 | 欧美乱码精品一区二区三区 | 国产精品国产成人国产三级 | 亚洲精品1区2区3区 91免费看片 | 中文字幕乱码一区二区三区 | 日韩在线小视频 | 精品国产乱码久久久久久老虎 | 综合亚洲视频 | 成人福利电影 | 正在播放国产精品 | 亚洲高清av在线 | 久久精品一 | 日韩精品一区二区不卡 | 国产精品一区二 | 瑞克和莫蒂第五季在线观看 | 亚洲精品乱码8久久久久久日本 | 亚洲精品久久久久久久久久久 | aⅴ色国产 欧美 | 日韩精品一区二 | av天空 | 久久精品日产第一区二区三区 | 中文无码日韩欧 | 狠狠操电影 | 涩爱av一区二区三区 | 精品日韩一区 | 精品亚洲一区二区三区四区五区 | 亚洲国产成人精品女人久久久野战 | 成人在线亚洲 | 中文字幕二区三区 | 亚洲精品日韩精品 | 国产精品一区视频 |