在docker容器中部署網路程式進行通訊實驗

2021-08-21 03:28:18 字數 3219 閱讀 5541

語言:python

1.實驗目的:

這次試驗是在docker容器中部署網路程式,初定為寫乙個簡單的web伺服器並部署到docker上,然後讓其他主機訪問。開發語言使用python語言。

2.實驗過程:

(1)搭建python開發環境

注意,實驗是要在docker容器中進行的,所以是在docker容器內安裝環境的。首先新開啟乙個ubuntu容器,並進入

然後輸入以下命令安裝python3.6

sudo apt-get update 

sudo apt-get install software-properties

-common

sudo add-apt

-repository ppa:jonathonf/python-

3.6

sudo apt-get update

sudo apt-get install python3.6

cd /usr/bin

rm python

ln -s python3.6m python

進一步檢查是否安裝成功:

(2) 在linux環境下,使用python3.6寫乙個web簡單伺服器

新建乙個資料夾,把相應檔案放入:

然後新建乙個.html檔案和.py檔案,分別輸入以下**:

#空語句什麼都不做,保證結構完整性

pass

#設計basehttprequesthandler子類requesthandler

#重寫basehttprequesthandler類裡的方法

defsend_content

(self, page, status = 200):

self.send_response(status)

self.send_header("content-type", "text/html")

self.send_header("content-length", str(len(page)))

self.end_headers()

self.wfile.write(bytes(page, encoding = 'utf-8'))

defdo_get

(self):

#這裡要處理兩個異常,乙個是讀入路徑時可能出現的異常,

#乙個是讀入路徑後若不是檔案,要作為異常處理

try:

#os.getcwd()獲取當前工作目錄,self.path是handler得到的路徑

full_path = os.getcwd() + self.path

# 如果路徑不存在

ifnot os.path.exists(full_path):

#觸發異常

raise serverexception("'' not found".format(self.path))

#如果該路徑是乙個檔案

elif os.path.isfile(full_path):

self.handle_file(full_path)

#如果該路徑不是乙個檔案

else:

#觸發異常

raise serverexception("unknown object ''".format(self.path))

except exception as msg:

self.handle_error(msg)

defhandle_file

(self, full_path):

try:

#讀取檔案

with open(full_path, 'r') as file:

content = file.read()

self.send_content(content,200)

except ioerror as msg:

#處理檔案時出錯

msg = "'' cannot be read: ".format(self.path, msg)

self.handle_error(msg)

error_page = """\

"""#這個地方不是注釋,而是一段字串

defhandle_error

(self, msg):

#錯誤介面文字

content = self.error_page.format(path= self.path,msg= msg)

self.send_content(content, 404)

if __name__ == '__main__':

httpaddress = ('', 8030)#ip位址省略代表本機

(3)測試:

輸入python webdemo.py 執行該伺服器,之後程式處於等待使用者訪問階段。

在本虛擬機器上另開乙個終端,由於這個docker容器是採用的橋接模式,因此,本虛擬機器和docker容器之間是可以互通的。利用curl命令進行訪問。容器ip為172.17.0.2

訪問成功得到結果。

同時伺服器端也有響應:

開啟瀏覽器訪問也是可以的:

docker在獨立的容器中部署wordpress

yum install docker系統會自動安裝docker ce vi etc docker daemon.json 若檔案不存在則建立daemon.json 新增或修改以下字段 docker search mysql 從映象倉庫搜尋mysql映象 docker pull mysql 5.7.4...

在Docker容器中部署Django的時區問題

目錄 現在容器化部署已經非常成熟了,我們很多服務都會使用容器部署,更新恢復都非常方便,但是有乙個問題比較麻煩,就是時區處理,通常情況下,都採用注入 tz 環境變數來解決,但是實際這種處理方式在 django 中卻是不行的。在www.cppcns.comdjango的配置檔案 settings.py ...

在docker中部署gitlab

docker pull gitlab gitlab ce 12.5.4 ce.0 2.在docker建立容器,讓gitlab跑起來 docker run d publish 8443 443 publish 10080 80 publish 1022 22 name gitlab restart a...