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

實戰(zhàn)教程:如何Docker化你的Mono應用程序

譯文
云計算
Docker是一種非常方便、節(jié)省時間的方法,它可以幫你實現(xiàn)軟件從開發(fā)環(huán)境始終如一地轉(zhuǎn)移到生產(chǎn)環(huán)境。本文將舉例表明如何結(jié)合使用Docker和Mono技術(shù),希望你能從中得到幫助。

【51CTO.com快譯】Docker發(fā)布至今才過去了兩年多點的時間,現(xiàn)在從Docker中心(Docker Hub)可以下載的映像數(shù)量早已超過13000個。如果你剛接觸Docker,最恰當?shù)拿枋鼍褪牵@是一種可以在任何Linux服務器上運行的虛擬容器里面封裝應用程序及其依賴項的一種方式。相比在虛擬機和操作系統(tǒng)里面封裝應用程序,其要求低得多。

[[147887]]

編寫Mono應用程序

C#是受歡迎程度僅次于Java和C/C++的一門編程語言,它是Windows上的.NET環(huán)境的一部分。C#發(fā)布后沒過多久,就啟動了Mono項目,旨在開發(fā)與NET相對應的環(huán)境,不過是在Linux和Mac上運行。盡管最初有人懷疑這是微軟通過專利權(quán)攻擊Linux的一種方式,不過Mono已得到了發(fā)展,如今成為跨平臺移動開發(fā)系統(tǒng)Xamarin的基礎(chǔ)。

.NET和Mono之間存在一些重大的區(qū)別,比如說WinForms和WPF只面向Windows;不過大體上來說,你拿來大多數(shù).NET編譯過的C#可執(zhí)行文件后,即可將它們拷貝到安裝有Mono的Linux系統(tǒng),用下面這個命令運行相應的應用程序:

  1. Mono AppName.exe 

本文的目的是,舉例表明如何結(jié)合使用Docker和Mono技術(shù)。

為何是Docker?

為什么Docker那么好?假設(shè)你想在Nginx、Centos或PostgreSQL上試用某個軟件。要不是Docker,你可能得花幾個小時來完成安裝、配置等操作。要是有了Docker,實際上在幾秒鐘內(nèi)就能完成。

Docker是開源技術(shù),會出現(xiàn)在下一個Windows 2016 Server版本中,不過眼下它的使用僅限于Linux和Mac OS X。使用開源Oracle VirtualBox,你就可以安裝Docker,并在Windows上的VirtualBox里面的虛擬機中運行。比如說,你可以將Ununtu Server之類的標準Linux安裝到VirtualBox中,或者使用一款名為Boot2Docker的特殊的幫助應用程序(https://docs.docker.com/installation/windows/#running-docker)。

開始使用Docker

如果你剛接觸Docker,請閱讀用戶指南(http://docs.docker.com/userguide/)。你需要了解運行中的應用程序、在容器中工作以及讓應用程序成為守護進程。這不是很難;用戶指南頁面內(nèi)容齊全、通俗易懂。

構(gòu)建在Docker中運行的應用程序時,情況變得有點復雜。我用C#編寫的應用程序是一個簡單的“計算頭1000個素數(shù)”程序,使用埃拉托斯特尼篩法(sieve of Eratosthenes)。它輸出2到1000之間的所有素數(shù)。這個程序編譯好后在Windows上運行,也可以在安裝Mono的任何Linux系統(tǒng)上運行。

  1. using System; 
  2.  
  3. namespace sieve 
  4.     class Program 
  5.     { 
  6.         const int HiPrime=1000; 
  7.         static readonly bool[] Primes = new bool[HiPrime];//by default they're all false 
  8.  
  9.         private static void Main(string[] args) 
  10.         { 
  11.  
  12.             for (var i = 2; i < HiPrime; i++) 
  13.             { 
  14.                 Primes[i] = true;//set all potential primes true 
  15.             } 
  16.  
  17.             for (var j = 2; j < HiPrime; j++) 
  18.             { 
  19.                 if (!Primes[j]) continue
  20.                 for (long p = 2; (p * j) < HiPrime; p++) 
  21.                 { 
  22.                     Primes[p * j] = false
  23.                 } 
  24.             } 
  25.  
  26.             for (var index = 2; index < Primes.Length; index++) 
  27.             { 
  28.                 if (Primes[index]) Console.WriteLine(index); 
  29.             } 
  30.  
  31.         } 
  32.     } 

我們想在容器里面運行這個應用程序。不妨先看一下更簡單的應用程序:Hello World,然后再回到這個話題。

為了力求完整,我們將在Ubuntu 14.04(Trusty Tahr)下運行Hello World。如果你安裝了Docker,可以使用這個命令,運行只有一行的Hello World。

  1. sudo docker run ubuntu:14.04 /bin/echo 'Hello world' 

Docker端Mono開發(fā)入門

圖1 運行echo

這里,Ubuntu 14.04就是容器。你第一次運行該應用程序時,它會下載容器,并安裝,整個過程大概只要1分鐘,如果是68MB大小的映像,時間稍微長一點。然后,它運行命令/bin/echo ‘Hello World’,然后在終端上輸出Hello World。第二次運行及之后運行時,它會立即運行。

所以想運行篩法應用程序,我們就要確保Mono已安裝,因為我們不僅需要編譯篩法,還要運行它。Docker注冊中心(https://registry.hub.docker.com)列出了一批Mono軟件庫,第一個軟件庫似乎很受歡迎。那第一個Mono鏈接可以將你引到該頁面(https://hub.docker.com/_/mono/)。

現(xiàn)在為了定義發(fā)生的操作,我們就要創(chuàng)建一個文件,具體來說名為Docker文件(Dockerfile)。

Dockerfile是什么?

Dockerfile是一個文本文件,里面含有獲取和構(gòu)建文件的所有指令。

參考頁面含有關(guān)于Docker文件的頁面。就示例篩法程序而言,這個文件很短。以下是我構(gòu)建的Dockerfile:

  1. FROM mono:latest 
  2. ADD . /home/david/sieve 
  3. RUN mcs /home/david/sieve/sieve.cs 
  4. CMD [ "mono""/home/david/sieve/sieve.exe" ] 

命令使用大寫字母。FROM指定了使用的Mono映像。在這里,它是mono:latest。你可以指定你在此想使用哪個版本的Mono。ADD將文件拷貝到指定文件夾中,RUN使用Mono編譯器mcs來編譯,CMD使用Mono命令運行可執(zhí)行文件。

你第一次運行構(gòu)建的文件時,它會獲取本地沒有的任何內(nèi)容。這個命令負責構(gòu)建:

  1. sudo docker build -t sieve . 

Docker端Mono開發(fā)入門

圖2 創(chuàng)建dockerfile

然后,這個命令運行篩法:

  1. sudo docker run sieve 

圖3 運行sieve

瞧,一個Docker化的Mono應用程序就這樣問世了,顯示了最后一批素數(shù)?,F(xiàn)在,Docker方面可以進行諸多操作,比如說讓應用程序成為守護進程顯得特別重要,因為這讓Web服務器及其他服務器成為了可能。

結(jié)束語

Docker是一種非常方便、節(jié)省時間的方法,以便在不同的平臺上試用軟件。有了它,就很容易將軟件從開發(fā)環(huán)境始終如一地轉(zhuǎn)移到生產(chǎn)環(huán)境。它讓應用程序可以連同操作系統(tǒng)放入到容器中,好像在虛擬機上運行,不過占用的空間卻少得多。每個虛擬機都有一份操作系統(tǒng),可能會有數(shù)GB大小。換成是Docker,其實只有一個共享的操作系統(tǒng)。

【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】

原文標題:Getting Started With Mono on Docker

 

責任編輯:Ophira 來源: 51CTO
相關(guān)推薦

2018-09-13 08:49:08

DockerPythonDjango

2012-04-25 22:56:10

Android

2015-12-09 14:00:41

ios應用

2020-09-04 15:06:04

Docker容器化Node.js

2023-06-29 07:45:03

2013-06-26 08:52:12

2010-05-20 09:48:36

2021-07-15 09:47:20

Docker容器命令

2011-06-01 13:20:29

ipad平板電腦移動開發(fā)

2016-02-15 09:37:14

Docker持續(xù)交付應用程序

2020-08-25 14:03:20

應用程序屏蔽應用程序內(nèi)保護網(wǎng)絡(luò)攻擊

2013-09-24 09:52:33

移動應用虛擬化

2013-01-05 10:28:18

虛擬化移動應用

2021-07-15 18:01:14

虛擬化應用測試軟件開發(fā)

2010-02-26 11:05:04

Linux Mono

2023-12-20 09:43:09

Docker容器代碼

2009-11-12 11:06:38

VS創(chuàng)建MFC應用程序

2012-11-06 09:38:50

虛擬化

2009-02-26 17:03:36

虛擬化Windows桌面系統(tǒng)

2011-06-07 09:36:41

BlackBerry 應用程序
點贊
收藏

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