日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
docker4dotnet#2容器化主機

.NET 猿自從認(rèn)識了小鯨魚,感覺功力大增。上篇《docker4dotnet #1 前世今生 & 世界你好》中給大家介紹了如何在Windows上面配置Docker for Windows和Docker Tools for Visual Studio來使用docker協(xié)助.NET Core應(yīng)用的開發(fā),這篇我們來看看如何創(chuàng)建和管理容器化主機。

我們提供的服務(wù)有:成都做網(wǎng)站、成都網(wǎng)站設(shè)計、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、彭澤ssl等。為上千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的彭澤網(wǎng)站制作公司

所謂容器化主機Dockerized Host,就是安裝了docker engine的主機,可以使用docker工具進(jìn)行管理。使用docker來協(xié)助開發(fā),我們至少需要本地和云端的容器化主機,本地用于開發(fā),測試,打包;云端的用于生產(chǎn)環(huán)境發(fā)布。使用容器化主機我們可以將所有的環(huán)境標(biāo)準(zhǔn)化,也即是使用統(tǒng)一的docker工具來完成容器在不同環(huán)境中的遷移(搬運),真正將容器化開發(fā)的優(yōu)勢發(fā)揮出來。

使用docker發(fā)布應(yīng)用與以往的應(yīng)用發(fā)布方式有很大不同,從上圖中可以看出。

  • 因為應(yīng)用本身與依賴,應(yīng)用服務(wù)器和操作系統(tǒng)都是分離的;我們在自動化過程中就必須處理各種不同的場景,難以標(biāo)準(zhǔn)化;而使用容器技術(shù),我們就可以將自動化簡化為對容器的搬運。
  • 各種依賴的解決都集中在開發(fā)環(huán)境中完成,常見的npm,nexus, nuget等工具都是開發(fā)人員很熟悉的,這些依賴的獲取都可以由開發(fā)人員自己解決,在后續(xù)的自動化中無需再次處理。
  • 僅從自動化的復(fù)雜程度來說,你可以很明顯的看出傳統(tǒng)開發(fā)中自動化會變成各種復(fù)雜情況的匯聚點,這就是為什么做CI/CD需要如此復(fù)雜的工具;如果再考慮不同種類的工具,如:Jenkins/TeamCity/Travis,Chef/Puppet等,這個環(huán)境會變的非常難以控制和維護(hù)。
  • 以往我們必須給不同的應(yīng)用創(chuàng)建不同的運行環(huán)境,而且這個環(huán)境必須從操作系統(tǒng)開始一層層搭建;使用容器話之后,不同類型的應(yīng)用可以運行在統(tǒng)一的操作系統(tǒng)層之上,大大提高了資源利用率和靈活性。

在不同的環(huán)境中統(tǒng)一使用容器化主機就是向著容器化開發(fā)演進(jìn)的***步,也是大幅降低自動化系統(tǒng)復(fù)雜程度的***步。

創(chuàng)建容器化主機

今天給大家介紹一下docker工具集中用來管理容器化主機的工具 docker-machine。上一篇文章中我們提到 Docker for Windows 其實是在 Hyper-V 中創(chuàng)建了一臺運行著 docker daemon 守護(hù)程序的 linux vm 來接收 windows 命令行中運行的 docker 指令的,在你***次啟動 docker for windows 的過程中, docker-machine 工具完成了這個 vm 的初始化工作。

這個初始化的操作很簡單,如果你已經(jīng)安裝了 docker for windows,可以打開命令行(注意:一定要用管理員權(quán)限),然后鍵入如下命令;

 
 
  1. docker-machine create --driver hyperv {machine-name} 

這樣,docker-machine 就完成了在你本地的hyper-v上初始化一臺可以運行容器的vm(一般稱為Dockerized host 容器化主機)的工作了。

注:在以上過程中如果docker-machine無法在本地找到boot2docker.iso這個文件的話,會從網(wǎng)絡(luò)上下載,這個過程會很慢,我已經(jīng)將這個文件上傳到了 d4dtools 的網(wǎng)站盤中,請在公眾號中輸入 d4dtools 獲取。

下載后放入當(dāng)前用戶的~\.docker\machine\cache\ 這個目錄即可。

完成初始化后,如果你希望讓docker命令直接對這個新的主機進(jìn)行操作,可以運行下面的命令。

 
 
  1. @FOR /f "tokens=*" %i IN ('docker-machine env {machine-name}') DO @%i 

注意將{machine-name}替換成你自己的容器化主機名稱,這個命令會設(shè)置以下三個環(huán)境變量

 
 
  1. SET DOCKER_TLS_VERIFY=1 
  2.  SET DOCKER_HOST=tcp://xxx.xxx.xxx.xxx:2376 
  3.  SET DOCKER_CERT_PATH=C:\Users\LeiXu\.docker\machine\machines\{machine-name} 
  4.  SET DOCKER_MACHINE_NAME={machine-name} 

完成后如果運行 docker 命令,那么你所使用的就是新的容器化主機了。

Docker-Machine 的環(huán)境驅(qū)動

上面的命令中你會注意到 –driver hyperv 這個參數(shù),docker 提供了很多驅(qū)動可以讓你在不同的環(huán)境中一鍵創(chuàng)建容器化主機,這些環(huán)境包括:

– Virtual Box (virtualbox)

– Hyper-V (hyperv)

– Azure (azure)

– Aws (amazonec2)

– VMware Fusion (vmwarefusion)

– VMware vCloud Air (vmwarevcloudair)

– Vmware vSphere (vmwarevshpere)

– …

括號中的內(nèi)容就是驅(qū)動的命令參數(shù),完整的列表可以訪問:

https://docs.docker.com/machine/reference/create

另外,阿里云也提供了driver,不過并不再 docker 官方列表中

https://github.com/denverdino/docker-machine-driver-aliyunecs

小編測試了以下幾個環(huán)境

Azure 國際版命令:

 
 
  1. docker-machine create --driver azure --azure-subscription-id {sub-id} --azure-open-port 80 {machine-name} 

Azure 世紀(jì)互聯(lián)版命令:

 
 
  1. docker-machine create --driver azure --azure-environment "AzureChinaCloud" --azure-subscription-id {sub-id} --azure-open-port 80 --azure-location "ChinaNorth" {machine-name} 

AWS 國際版命令:

 
 
  1. docker-machine create --driver amazonec2 --amazonec2-region "ap-northeast-1" --amazonec2-vpc-id {vpc-id} {machine-name} 

這些命令都可以提供豐富的參數(shù)來控制主機的操作系統(tǒng)鏡像,主機配置大小,網(wǎng)絡(luò)連接,主機位置等。大家可以通過以下命令獲取這些參數(shù)的詳情:

 
 
  1. docker-machine create --driver {driver-name} 

這些主機創(chuàng)建好以后,如果要列出所有綁定到你自己環(huán)境上主機,可以運行:

 
 
  1. docker-machine ls 

如果你需要直接登陸到主機上進(jìn)行操作,可以 運行:

 
 
  1. docker-machine ssh {machine-name} 

因為docker-machine在創(chuàng)建主機的過程中已經(jīng)自動完成了public key的生成和配置,你無須輸入用戶名和密碼就可以ssh進(jìn)入主機進(jìn)行操作,所有這些public key的證書文件都存放在 ~\.docker\machine的目錄下面。

注:因為網(wǎng)絡(luò)的原因,這些操作有可能失敗。如果遇到這種情況,先進(jìn)入云平臺的控制臺查看相關(guān)的資源是否都創(chuàng)建成功呢了,如果已經(jīng)資源已經(jīng)在那里了。嘗試運行:

 
 
  1. docker-machine regenerate-certs {machine-name} 

這樣會強制宿主機的 docker deamon 重啟,一般來說可以解決問題。

使用docker-machine這個工具,你可以完成容器化主機的創(chuàng)建,啟動,關(guān)閉等主要操作;而不必通過云提供商的控制臺來完成,也就是說你本地的docker環(huán)境就變成中對于所有開發(fā),測試和生產(chǎn)環(huán)境的控制臺;通過docker所提供的命令,你可以完成從應(yīng)用打包,環(huán)境創(chuàng)建,發(fā)布部署的整個過程。當(dāng)然,如果你的團隊比較大,其中的一些步驟還是需要借助自動化系統(tǒng)來完成,這樣才能完成代碼的集成和團隊協(xié)同,安全性控制和集群環(huán)境的編排也是需要考慮的問題。這些,我們將在后續(xù)的文章中給大家提供解決方案。

將應(yīng)用發(fā)布到云端

到了這里,小編到覺得沒啥可說的了,docker的發(fā)布實在是簡單!簡單!簡單!重要事情說三遍。

進(jìn)入你的應(yīng)用目錄調(diào)用那個 dockertask.ps1 腳本,就可以完成應(yīng)用的打包和image上傳操作

 
 
  1. .\DockerTask.ps1 -Build -Environment Release -Machine {machine-name} 

然后運行

 
 
  1. docker images 

就可以看到已經(jīng)上傳到你的目標(biāo)宿主機上面的 images,這時就可以運行 docker run 了 (注意:要確保你正確配置了 宿主機的環(huán)境變量)

 
 
  1. docker run -p 80:80 username/webapp01:latest 

注:這個過程中你可能會碰到docker版本不匹配的問題

你可以安裝 docker version manager 這個工具,然后使用以下命令來獲取使用正確版本

dvm install {version}

dvm use {version}

安裝命令(Poweshell):

 
 
  1. Invoke-WebRequest https://download.getcarina.com/dvm/latest/install.ps1 -UseBasicParsing | Invoke-Expression 

小結(jié)

到這里,我們就完成了本地和云端的docker環(huán)境的創(chuàng)建,并進(jìn)行了最簡單的應(yīng)用部署。你可以看到,docker 提供了一套簡單易用的工具和部署方式,讓我們的應(yīng)用開發(fā),調(diào)試和打包部署都變的非??旖?。下一篇中我們將介紹如何使用macOS環(huán)境完成.net core應(yīng)用的創(chuàng)建,調(diào)試和docker打包部署過程。

【本文為專欄作者“徐磊”的原創(chuàng)稿件,轉(zhuǎn)載請通過作者微信公眾號devopshub獲取授權(quán)】


新聞標(biāo)題:docker4dotnet#2容器化主機
當(dāng)前網(wǎng)址:http://www.dlmjj.cn/article/dpppdej.html