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

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

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

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

[[147887]]

編寫Mono應(yīng)用程序

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

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

  1. Mono AppName.exe 

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

為何是Docker?

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

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

開(kāi)始使用Docker

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

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

  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.     } 

我們想在容器里面運(yùn)行這個(gè)應(yīng)用程序。不妨先看一下更簡(jiǎn)單的應(yīng)用程序:Hello World,然后再回到這個(gè)話題。

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

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

Docker端Mono開(kāi)發(fā)入門

圖1 運(yùn)行echo

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

所以想運(yùn)行篩法應(yīng)用程序,我們就要確保Mono已安裝,因?yàn)槲覀儾粌H需要編譯篩法,還要運(yùn)行它。Docker注冊(cè)中心(https://registry.hub.docker.com)列出了一批Mono軟件庫(kù),第一個(gè)軟件庫(kù)似乎很受歡迎。那第一個(gè)Mono鏈接可以將你引到該頁(yè)面(https://hub.docker.com/_/mono/)。

現(xiàn)在為了定義發(fā)生的操作,我們就要?jiǎng)?chuàng)建一個(gè)文件,具體來(lái)說(shuō)名為Docker文件(Dockerfile)。

Dockerfile是什么?

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

參考頁(yè)面含有關(guān)于Docker文件的頁(yè)面。就示例篩法程序而言,這個(gè)文件很短。以下是我構(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。你可以指定你在此想使用哪個(gè)版本的Mono。ADD將文件拷貝到指定文件夾中,RUN使用Mono編譯器mcs來(lái)編譯,CMD使用Mono命令運(yùn)行可執(zhí)行文件。

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

  1. sudo docker build -t sieve . 

Docker端Mono開(kāi)發(fā)入門

圖2 創(chuàng)建dockerfile

然后,這個(gè)命令運(yùn)行篩法:

  1. sudo docker run sieve 

圖3 運(yùn)行sieve

瞧,一個(gè)Docker化的Mono應(yīng)用程序就這樣問(wèn)世了,顯示了最后一批素?cái)?shù)。現(xiàn)在,Docker方面可以進(jìn)行諸多操作,比如說(shuō)讓應(yīng)用程序成為守護(hù)進(jìn)程顯得特別重要,因?yàn)檫@讓W(xué)eb服務(wù)器及其他服務(wù)器成為了可能。

結(jié)束語(yǔ)

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

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

原文標(biāo)題:Getting Started With Mono on Docker

 

責(zé)任編輯:Ophira 來(lái)源: 51CTO
相關(guān)推薦

2018-09-13 08:49:08

DockerPythonDjango

2012-04-25 22:56:10

Android

2015-12-09 14:00:41

ios應(yīng)用

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

2011-06-01 13:20:29

ipad平板電腦移動(dòng)開(kāi)發(fā)

2021-07-15 09:47:20

Docker容器命令

2016-02-15 09:37:14

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

2020-08-25 14:03:20

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

2013-09-24 09:52:33

移動(dòng)應(yīng)用虛擬化

2013-01-05 10:28:18

虛擬化移動(dòng)應(yīng)用

2021-07-15 18:01:14

虛擬化應(yīng)用測(cè)試軟件開(kāi)發(fā)

2009-11-12 11:06:38

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

2015-11-05 10:16:33

2012-11-06 09:38:50

虛擬化

2009-02-26 17:03:36

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

2022-09-19 00:37:13

SaaS云計(jì)算開(kāi)發(fā)

2011-06-07 09:36:41

BlackBerry 應(yīng)用程序
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 日韩电影中文字幕在线观看 | 国产免费一级一级 | 自拍偷拍av| 91av视频在线观看 | 日本不卡免费新一二三区 | 国产精品日日摸夜夜添夜夜av | 欧美激情99 | 天天插天天射天天干 | 欧美一级毛片久久99精品蜜桃 | 国产成人福利 | 综合第一页 | 毛片免费视频 | 特级做a爱片免费69 精品国产鲁一鲁一区二区张丽 | 日本高清在线一区 | 青青草视频网站 | 7777久久| 久久综合一区二区三区 | 国产精品精品 | 欧美日产国产成人免费图片 | 四虎影院免费在线播放 | www.天天操.com | 一级全黄少妇性色生活免费看 | 欧美综合网 | 亚洲人一区| 精品美女久久久 | 日韩精品一区二区三区第95 | 成人在线观看免费 | 亚洲视频免费观看 | 亚洲国产专区 | 在线观看日本网站 | 国产中文一区二区三区 | 久久精品性视频 | 伊人久久麻豆 | 中文字幕精品一区 | 久久这里只有精品首页 | 久久精品国产一区二区三区不卡 | 九九综合 | 日韩精品久久久 | 美女久久 | 亚洲综合资源 | 久久91精品国产一区二区 |