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

docker4dotnet #2 容器化主機

開發 開發工具
這篇我們來看看如何創建和管理容器化主機。

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

所謂容器化主機Dockerized Host,就是安裝了docker engine的主機,可以使用docker工具進行管理。使用docker來協助開發,我們至少需要本地和云端的容器化主機,本地用于開發,測試,打包;云端的用于生產環境發布。使用容器化主機我們可以將所有的環境標準化,也即是使用統一的docker工具來完成容器在不同環境中的遷移(搬運),真正將容器化開發的優勢發揮出來。

docker發布應用與以往的應用發布方式

使用docker發布應用與以往的應用發布方式有很大不同,從上圖中可以看出。

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

在不同的環境中統一使用容器化主機就是向著容器化開發演進的***步,也是大幅降低自動化系統復雜程度的***步。

創建容器化主機

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

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

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

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

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

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

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

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

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

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

  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 的環境驅動

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

– Virtual Box (virtualbox)

– Hyper-V (hyperv)

– Azure (azure)

– Aws (amazonec2)

– VMware Fusion (vmwarefusion)

– VMware vCloud Air (vmwarevcloudair)

– Vmware vSphere (vmwarevshpere)

– …

括號中的內容就是驅動的命令參數,完整的列表可以訪問:

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

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

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

小編測試了以下幾個環境

Azure 國際版命令:

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

Azure 世紀互聯版命令:

  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} 

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

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

這些主機創建好以后,如果要列出所有綁定到你自己環境上主機,可以運行:

  1. docker-machine ls 

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

  1. docker-machine ssh {machine-name} 

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

注:因為網絡的原因,這些操作有可能失敗。如果遇到這種情況,先進入云平臺的控制臺查看相關的資源是否都創建成功呢了,如果已經資源已經在那里了。嘗試運行:

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

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

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

將應用發布到云端

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

進入你的應用目錄調用那個 dockertask.ps1 腳本,就可以完成應用的打包和image上傳操作

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

然后運行

  1. docker images 

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

  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 

小結

到這里,我們就完成了本地和云端的docker環境的創建,并進行了最簡單的應用部署。你可以看到,docker 提供了一套簡單易用的工具和部署方式,讓我們的應用開發,調試和打包部署都變的非常快捷。下一篇中我們將介紹如何使用macOS環境完成.net core應用的創建,調試和docker打包部署過程。

【本文為51CTO專欄作者“徐磊”的原創稿件,轉載請通過作者微信公眾號devopshub獲取授權】

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

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2017-02-14 15:51:16

docker開發調試

2017-02-14 19:57:27

docker云存儲Azure

2017-02-14 20:15:15

docker容器持續交付

2017-03-01 09:20:30

2023-09-15 10:15:43

Docker網絡

2017-11-28 09:21:53

LinuxWindowsDocker

2019-07-08 08:59:41

Docker容器主機

2022-07-20 15:19:17

容器Docker

2022-08-01 07:27:36

JavaDocker容器

2023-08-29 15:17:40

Docker容器架構

2015-01-08 10:29:59

Shipyardweb管理集中化

2023-10-25 18:08:13

應用容器化Docker

2016-10-31 15:33:57

DockerMySQL容器管理

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數據

2024-09-06 12:28:48

2023-08-28 16:10:00

容器化DockerKubernetes

2023-09-26 00:40:35

Docker容器操作命令
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品国产一区二区在线 | 亚洲成人一区 | 中文字幕一级 | 99视频免费在线观看 | 天堂一区二区三区四区 | 在线激情视频 | 日本人爽p大片免费看 | 久久久久久av | 国产农村妇女毛片精品久久麻豆 | 国产精品久久国产精品 | 亚洲日本乱码在线观看 | 国产区视频在线观看 | 黄色精品| 国产精品海角社区在线观看 | 日韩欧美国产一区二区 | 欧美精产国品一二三区 | 久久久久亚洲精品 | 国产午夜精品久久久 | 亚洲精品一区二区在线观看 | 欧美一级免费 | 色资源在线视频 | 国产精品免费一区二区 | 久久精品亚洲一区 | 久久久精品一区二区三区四季av | 久久久久久久久久久久久久久久久久久久 | 久久精品在线 | 亚洲成av人片在线观看 | 99综合| 欧美又大粗又爽又黄大片视频 | 成人免费观看视频 | 亚洲欧美精品国产一级在线 | 在线午夜电影 | 国产精品久久9 | 国产精品一区二区在线 | 午夜免费看| 有码一区| 99精品网| 午夜免费| 精品日韩在线观看 | 91一区二区 | 涩涩导航 |