国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

利用docker調試OpenStack服務

ysl_unh / 965人閱讀

摘要:而且恰巧接觸到了強大的,所以經過不斷的摸索,我最終能夠利用非常方便對自己的代碼進行調試。但是其他的組件應該也是適用,特別是除外與不依賴于特定環境的組件。安裝目前支持,和。我們暫且先用后者做一個自己的鏡像,并以調試為例。

背景

從工作開始就一直做openstack的開發,期間經歷了做私有云的開發,到現在在做公有云網絡控制器的開發。開發調試的時候,最讓我頭疼的是不是調試代碼和找bug。而是將自己改動的OpenStack部署到測試環境進行測試,哪怕是一個簡單的業務邏輯修改。基本上60%以上的時間都花在了部署環境上。由于后面要開發的業務邏輯實在太多,時間太短。而且恰巧接觸到了強大的docker,所以經過不斷的摸索,我最終能夠利用docker非常方便對自己的Neutron代碼進行調試。方便到什么程度?只要不與數據傳輸層相關,neutron業務代碼的調試就如本地調試python腳本一樣。再也不需要部署任何環境,甚至都不需要安裝。由于我現在只做OpenStack neutron的開發,以下的介紹都基于neutron。但是其他的OpenStack組件應該也是適用,特別是除nova外與不依賴于特定環境的組件。

基本思路

利用docker的共享volume將自己的neutron代碼庫映射到容器里面,在容器內部再將這些代碼軟連接到python的dist-packages里面。如果這一步軟連接都想省掉,則可以將本地代碼庫直接映射到容器的dist-packages里面。由于容器內的代碼與本地主機是共享的,所以本地的修改可以自動應用容器里面。這意味著,你用pycharm修改了neutron的一個業務邏輯,只要在容器里將對應的neutron服務重啟即可。

開發環境

目前我的開發環境是基于mac os,開發工具是pycharm。但是本套調試方案也可以基于windows和linux。

安裝docker

Dock目前支持windows,mac os和linux。其中windows server2016和linux都支持native模式。windows 10和mac os只能靠虛擬機里面的docker模式支持。以下是安裝方法:

Docker for Mac (macOS)

Docker for Windows (Microsoft Windows 10)

Ubuntu

CentOS

Windows native

注:windows的命令行是cmd,為了方便使用,建議下載一個方便的命令行工具,比如babun。

制作鏡像

制作docker鏡像可以通過dockerfile,也可以使用base鏡像自己根據需要安裝好必要的工具后,再commit成一個新的鏡像。我們暫且先用后者做一個自己的鏡像,并以調試neutron為例。

下載鏡像

docker pull ubuntu:latest

運行容器

docker run -it -v /your_neutron_repo:/neutron ubuntu:latest bash

安裝必要的軟件
運行容器后,我們安裝一些必要的軟件.比如pip,git,telnet等等你后面覺得你會在debug code用的上的一些工具。但是最重要的是要把neutron的依賴包給裝上。

cd /neutron;pip install -r requirements

保存鏡像

docker commit container_id neutron:latest
在容器里運行neutron-server 啟動容器
docker run -it -v /your_neutron/repo:/neutron/ -v /your_neutron_confs:/confs/ -p 9696:9696 --hostname server --name neutron_server neutron:lastest bash

-v選項是docker volume共享功能,可以將本地的文件夾映射到容器內部,前面本地文件夾,后面是容器內部的路徑.”your_neutron_confs"是neutron的配置文件(neutron庫里的etc/*.conf文件和*.ini文件),包含了mq的連接信息,mysql的連接信息等。之所把這個映射進去是為了方便在外面修改這些配置文件,并將這些配置文件共享給其他的容器(比如dhcp-agent),

-p選項是docker的端口映射功能,由于neutron的api使用的9696端口,所以我們必須把容器內部的9696端口映射出來。和-v一樣,前面的port是本地的port,后面的port是容器內部的port

--hostname是指定容器的honstname

--name是指定容器的名稱

配置

進入容器后,我們先用install一下neutron的代碼,這樣的話可以在bin下生成neutron-server等可執行文件。

cd /neutron;python setup.py install

刪除dist-packages下面的neutron代碼,并做好軟連接:

rm -rf /usr/local/lib/python2.7/dist-packages/neutron
ln -s /neutron/neutron /usr/local/lib/python2.7/dist-packages/neutron
啟動服務

上面的都完成后就可以啟動neutron-server了。

neutron-server --config-file /confs/neutron.conf

至此,neutron-server就已經起來了。而你的代碼修改只是在本地的pycharm里面做即可,修改代碼后,想調試,直接將容器的服務重啟下就可以了。

Tips

每次用完容器,可以不用刪除容器,下次直接start,再attach即可。這樣速度快,而且不用重新開啟容器。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/27043.html

相關文章

  • OpenStack 與 Rancher 融合的新玩法

    摘要:本次分享給大家帶來與能夠融合使用的一些玩法。計算節點的進程不能在運行在中。部署的過程需要拉取很多鏡像,需要耐心的等待。之前的計劃應該是在版會添加的支持,差不多就是今年月份左右。 OpenStack是開源Iaas云的事實標準,功能大而全,除了能管理虛機同時也能管理容器,OpenStack項目中的Magnum、Kuryr、Kolla、Murano、Nova-docker等都是與容器場景很不...

    android_c 評論0 收藏0
  • 虛擬化實踐

    摘要:本文并非虛擬化的科普文章,主要將我們在私有云實踐過程中的一些思想和遇到的問題拿出來跟大家討論分享。我們虛擬化實踐包含了傳統的基于協議的以及目前流行的。 引言 這里的虛擬化等于私有云。本文并非虛擬化的科普文章,主要將我們在私有云實踐過程中的一些思想和遇到的問題拿出來跟大家討論分享。我們虛擬化實踐包含了傳統的基于libvirt協議的KVM以及目前流行的docker。 為什么要虛擬化 虛擬化...

    newsning 評論0 收藏0
  • OpenStackDocker不能,ServerLess能決定云計算勝負嗎?

    摘要:彼時,從虛擬化管理到公有云,熱鬧異常。雖然年才明顯放棄公有云的全面競爭,但在年決定發起和開源項目是,不說明確,至少已經隱隱覺得肯定搞不過亞馬遜了。年前賣的多火,被視為虛擬主機的升級版。當然不是新堆棧,而是傳統堆棧。 還記得在十多年前,SaaS鼻祖SalesForce喊出的口號『No Software』嗎?SalesForce在這個口號聲中開創了SaaS行業,并成為當今市值460億美元的Saa...

    gitmilk 評論0 收藏0
  • 明與暗角力!開源云平臺中的拼圖“玩具”

    摘要:開源云平臺中的拼圖玩具對于云平臺,如今基本就意味著開源。明與暗角力開源云平臺中的拼圖玩具為什么會產生這種混淆正如之前談到由兩大部分組成和的計算引擎。 開源云平臺中的拼圖玩具?對于云平臺,如今基本就意味著開源。提及開源技術,著實在云計算和大數據下火起來。面對撲面而來的云服務,無論是何種服務對于企業和用戶來說都是熟悉的陌生人,熟悉是因為知道云計算的人都能說出IaaS、PaaS和SaaS這幾個詞,...

    1treeS 評論0 收藏0

發表評論

0條評論

ysl_unh

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<