丙申年把真假美猴王囚禁在容器中跑 ASP.NET Core 1.0

来源:http://www.cnblogs.com/qin-nz/archive/2016/02/07/aspnetcore-run-on-mono-in-year-of-monkey.html
-Advertisement-
Play Games

丙申年把真假美猴王囚禁在容器中跑 ASP.NET Core 1.0¶警告您當前查看的頁面是未經授權的轉載! 如果當前版本排版錯誤,請前往查看最新版本:http://www.cnblogs.com/qin-nz/p/aspnetcore-run-on-mono-in-year-of-monkey.ht...


丙申年把真假美猴王囚禁在容器中跑 ASP.NET Core 1.0

警告

您當前查看的頁面是未經授權的轉載!
如果當前版本排版錯誤,請前往查看最新版本:http://www.cnblogs.com/qin-nz/p/aspnetcore-run-on-mono-in-year-of-monkey.html

提示

更新時間:2016年02月07日。

各位程式媛/程式猿們,猴年快樂。 相信不少媛/猿都是被標題吸引來的,那我我先解釋下標題。

提示

本文是一篇半科普文,不對技術細節進行深入探究。

標題解釋

ASP.NET Core 1.0

ASP.NET Core 1.0 是一個是跨平臺開源的用於開髮網站/Web API 的框架, 原名 ASP.NET 5 (再早期稱作 ASP.NET vNext),但並不是 ASP.NET 4.6 的升級版;而是從零開始的版本。

ASP.NET Core 1.0 把所有的功能和模塊都進行了拆分,進行了徹底解耦。 源代可以在 Github ASP.NET 上找到。

容器

容器技術是一種虛擬化技術,和虛擬機不同的是:容器技術不會提供一整個操作系統,它只能提供隔離的程式運行環境; 容器技術對系統資源的消耗要遠小於虛擬機。

Docker 是一個開源的應用容器引擎,他不需要對內核進行改變,他主要利用操作系統內核特性實現虛擬化,所有容器運行在同一個內核中。

註解

所有容器運行在同一個內核中,意味著所有容器必須和操作系統相匹配,Windows容器不能直接運行在Linux上。

猴子

猴子 是西班牙語單詞 mono翻譯 , 西班牙語中,這個詞同時還有可愛的意思。

而我想表達的意思是 Mono Project

因此,本文的意思是:在2016年創建一個包含Mono運行環境的Docker容器,然後啟動兩個實例,讓它們給你運行 ASP.NET Core 1.0 的程式。

給猴子建一個家

首先你需要安裝 Docker (Linux) 的運行環境,也就是圖中藍色的部分。

https://blogs.blob.core.chinacloudapi.cn/images/aspnetcore-mono-docker-linux-linux.png https://blogs.blob.core.chinacloudapi.cn/images/aspnetcore-mono-docker-linux-windows.png

啊,這個好麻煩啊…… 如果你和我一樣有 Microsoft Azure 的訂閱,直接創建個 Ubuntu on Docker 的虛擬機來的更方便。

沒有的話,請參考官網文檔吧……

在 Windows 上安裝 Docker

在 Mac OS 上安裝 Docker

提示

Docker 不只有Linux版,也有Windows版(目前是預覽版),也就是說,如果想要安裝下麵兩張圖的方式安裝也可以。

只不過,真用了Windows,一般也就用完整的 .NET Framework 了,而不用 mono

https://blogs.blob.core.chinacloudapi.cn/images/aspnetcore-mono-docker-windows-linux.png https://blogs.blob.core.chinacloudapi.cn/images/aspnetcore-mono-docker-windows-windows.png

一起動手囚禁一隻猴子吧

接下來,有了容器,就可以弄只猴子了。

微軟已經製作好了一個容器,並且預置了一隻猴子,並上傳到了 Docker Hub ,我們可以直接拿來用。

或者,我們可以從Github上弄到培育猴子的代碼來自己生成猴子。

在Docker(Linux)中安裝Mono及ASP.NET運行環境

在Docker(Windows)中安裝Mono及ASP.NET運行環境

創建空的 ASP.NET Core 網站

首先,你需要一個已經完成的 ASP.NET Core 1.0 應用。

對於Windows用戶,直接用 vs2015 創建一個新的 ASP.NET Core (模板名稱為ASP.NET 5) Web應用即可。

https://blogs.blob.core.chinacloudapi.cn/images/create-aspnetcore-project-1.png https://blogs.blob.core.chinacloudapi.cn/images/create-aspnetcore-project-2.png

Mac OS 用戶,可以參考 在 Mac OS 上創建的 ASP.NET Core 1.0 應用 的前半部分。

給容器里放點吃的

剛剛從 Docker Hub 下載的容器,裡面並沒有我們的應用,就只有一隻猴子而已,並沒什麼卵用。 現在我們準備把剛剛創建的應用加入到容器中。

  • 創建Dockerfile

如果你在Mac OS上使用了 yo aspnet 來生成的項目,那麼你已經有了Dockerfile;否則你需要自己在項目目錄創建一個文件名為Dockerfile的文件。

FROM microsoft/aspnet:1.0.0-rc1-update1

COPY . /app
WORKDIR /app
RUN ["dnu", "restore"]

EXPOSE 5000/tcp
ENTRYPOINT ["dnx", "-p", "project.json", "web"]

解釋一下每一行。

  • 由於Docker的文件系統是一層層的,FROM 表示在什麼的基礎上構建當前鏡像,冒號後面是版本號;
  • COPY 是把本地文件拷貝到 Docker 中, . 表示當前目錄;
  • WORKDIR 指定工作目錄;
  • RUN 表示運行某一個程式,後面的是參數;
  • EXPOSE 表示將Docker的某個埠號暴露出來,以便主機與容器通信;
  • ENTRYPOINT 指定入口點,第一個是程式,後面的是參數。
  • 構建項目
docker build .

查看構建完成的鏡像,其中IMAGE ID是構建完成鏡像的標識符

docker images

給鏡像起個名字

docker tag {IMAGE ID} qinnz/wukong

小技巧

鏡像相當於容器的底片,我們可以用鏡像創建出許多一模一樣的容器。

讓真假美猴王同時給我們跑 ASP.NET Core

好了,你已經有了一個鏡像,需要把它運行起來,當然你可以運行多個實例(不過不能綁定同一個埠)。

docker run --name monkey_king -d -p 80:5000 qinnz/wukong
docker run --name his_dobule -d -p 81:5000 {IMAGE ID}

我們在後臺( -d )啟動了2個實例(一個是真猴王,一個是假猴王),分別把這兩個容器(可以使用 Tag 或 IMAGE ID來標識)的5000埠映射到宿主機的80和81兩個埠了。

至此,我們就創建一個包含Mono運行環境的Docker容器,然後讓它給你運行 ASP.NET Core 1.0 的程式。

更多資源

ASP.NET 官方文檔

在 Mac OS 上創建並運行 ASP.NET Core 1.0 網站

在 Mac OS X 上創建的 .NET 命令行程式訪問資料庫 (使用Entity Framework 7 )

Docker

Docker 文檔

聲明 知識共用許可協議

丙申年把真假美猴王囚禁在容器中跑 ASP.NET Core 1.0勤奮的小孩 創作,採用 知識共用 署名-非商業性使用-禁止演繹 4.0 國際 許可協議進行許可。
本許可協議授權之外的使用許可權可以從 http://space.cnblogs.com/msg/send/qin-nz 處獲得。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 首先,手機橫豎長度的懸殊差距,註定了app橫豎屏的表現的差異化。老實說,目前絕大多數android的App在產品設計之初都是在豎屏的基礎上進行設計的(也就是單手操作),並無專門地去考慮切換橫屏後的用戶體驗。這些App若是允許切換橫屏操作,而用戶的手機又設置了允許自動旋轉,那麼用戶在使用這些App的時...
  • Request failed: unacceptable content type: text/plain(AFNetworking) = 在使用AFNetworking遇到如下問題,已解決。。。 Error Domain=com.alamofire.error.serialization.resp
  • 分類:C#、Android、VS2015;創建日期:2016-02-06 第4章 UI設計基礎 第3章雖然通過百度地圖應用展示了你可能感興趣的內容,但是,如果你是一個初學者,一開始就看懂和理解代碼可能會非常費勁。為瞭解決此問題,從這一章開始,本模塊將從最基本的內容講起,帶你逐步進入用C#進行Andr...
  • 實在太忙,靈魂有香氣的女子這個App,斷斷續續開發了1個多月了,前後臺自己獨立完成, 由於接觸swift沒多久,還屬於新手行列,不熟悉,希望大家給出意見, 根據意見,完善後將於近期將考慮開放swift版本的源代碼。 下載方式: 1、靈魂有香氣的女子這個App :https://itunes.appl
  • 分類:C#、Android、VS2015、百度地圖應用; 創建日期:2016-02-04 一、簡介 POI(Point of Interest),中文可以翻譯為“興趣點”。在地理信息系統中,一個POI可以是一棟房子、一個商鋪、一個郵筒、一個公交站等。 1、POI檢索 百度地圖SDK提供三種類型的PO
  • 微軟一統 Windows 10 的音頻和 MIDI API 微軟在夏季NAMM上的A3E大會上做了主題演講,他們對Windows 10的音頻和MIDI API都做了新的規劃,開發者針對Windows 10開發的應用在手機、平板、桌面電腦、Raspberry Pi 2上也可以運行。 微軟之前在音頻方面
  • 基本概念 塊設備(blockdevice) --- 是一種具有一定結構的隨機存取設備,對這種設備的讀寫是按塊進行的,他使用緩衝區來存放暫時的數據,待條件成熟後,從緩存一次性寫入設備或者從設備一次性讀到緩衝區。 字元設備(Character device) ---是一個順序的數據流設備,對這種設備的讀
  • 如果沒記錯的話,阿裡雲ECS上的Ubuntu也是LTS版本。 如果還在使用較舊版本的Ubuntu,或者是Ubuntu LTS,那麼我們是很難體驗新版gcc的。怎麼辦呢? 我們或許可以自己去編譯用舊版本的gcc去編譯新版本,但比較繁瑣而且坑點較多。如果有現成的包就好啦! 原來,在toolchain/t
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...