自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

docker4dotnet #2 容器化主機

開發(fā) 開發(fā)工具
這篇我們來看看如何創(chuàng)建和管理容器化主機。

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

所謂容器化主機Dockerized Host,就是安裝了docker engine的主機,可以使用docker工具進行管理。使用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ā)布方式

使用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)境會變的非常難以控制和維護。
  • 以往我們必須給不同的應(yīng)用創(chuàng)建不同的運行環(huán)境,而且這個環(huán)境必須從操作系統(tǒng)開始一層層搭建;使用容器話之后,不同類型的應(yīng)用可以運行在統(tǒng)一的操作系統(tǒng)層之上,大大提高了資源利用率和靈活性。

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

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

今天給大家介紹一下docker工具集中用來管理容器化主機的工具 docker-machine。上一篇文章中我們提到 Docker for Windows 其實是在 Hyper-V 中創(chuàng)建了一臺運行著 docker daemon 守護程序的 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} 

本地的hyper-v上初始化一臺可以運行容器的vm

這樣,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命令直接對這個新的主機進行操作,可以運行下面的命令。

  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 

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

  1. docker-machine ssh {machine-name} 

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

注:因為網(wǎng)絡(luò)的原因,這些操作有可能失敗。如果遇到這種情況,先進入云平臺的控制臺查看相關(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ā)布實在是簡單!簡單!簡單!重要事情說三遍。

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

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

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2017-02-14 15:51:16

docker開發(fā)調(diào)試

2017-02-14 19:57:27

docker云存儲Azure

2017-02-14 20:15:15

docker容器持續(xù)交付

2017-03-01 09:20:30

2023-09-15 10:15:43

Docker網(wǎng)絡(luò)

2019-07-08 08:59:41

Docker容器主機

2017-11-28 09:21:53

LinuxWindowsDocker

2022-07-20 15:19:17

容器Docker

2022-08-01 07:27:36

JavaDocker容器

2023-08-29 15:17:40

Docker容器架構(gòu)

2015-01-08 10:29:59

Shipyardweb管理集中化

2016-10-31 15:33:57

DockerMySQL容器管理

2023-10-25 18:08:13

應(yīng)用容器化Docker

2024-09-19 08:49:13

2020-02-05 14:31:04

兩種互通方法

2024-05-29 12:39:55

2019-09-02 09:11:58

MySQLDocker數(shù)據(jù)

2024-09-06 12:28:48

2023-08-28 16:10:00

容器化DockerKubernetes

2023-09-26 00:40:35

Docker容器操作命令
點贊
收藏

51CTO技術(shù)棧公眾號