第一次在AWS EC2 執行Docker 就上手,新手入門之實作教學 ...

文章推薦指數: 80 %
投票人數:10人

使用心得 Skiptocontent LastUpdatedon2020-05-29byJeslyn 翻翻工程師的職缺,越來越多高薪工作將AmazonAWS列為加分技能,甚至是必要技能。

深究其中,不難發現企業對於如AWS、GCP、Azure等雲端主機的需求愈來愈大(尤其AWS使用最普遍),為什麼呢? 因為雲端主機最大的優點–可擴展性(scalability),只要架構得對,就算突然流量暴增,也能自動生出新的伺服器分流,特別是電商公司最怕優惠活動時大量訪客湧入,網站卻被打掛而喪失訂單。

本篇文章將從頭到尾分享如何註冊AWS帳戶、創建EC2,最後在EC2上執行Docker以提供應用程式服務。

本文章之快速連結 AWS概述AWS免費方案AmazonEC2簡介用途和優點計費方式Docker概述AWS帳戶註冊步驟AWSEC2建立與使用選擇服務主機建立EC2SSH連到EC2instance在MacOS或一般LinuxOS操作在Windows操作在EC2上執行Docker安裝Docker執行應用程式其他注意事項使用心得 AWS概述 AWS(AmazonWebServices),由Amazon提供的雲端運算服務,讓使用者不需維護IT基礎設施,減少維護成本,也不需考慮架設備的地理因素和其他各種硬體因素,並且可以根據使用需求擴展,以量訂價。

對新創公司、小型企業、個人使用者來說,AWS非常方便,若有較高的硬體設備需求,不必一下子就花很多錢構建與維運,或者想做評估才決定是否投入開發某產品的人,也可先利用AWS試驗、研發,成本小。

AWS免費方案 AWS提供許多免費方案,一註冊就可以先試用,等到使用量比較大或需要更多功能時,可以再付費增加或升級。

(點我到AWS免費方案頁面) AWS的服務爆炸多,主要有10種:AmazonEC2、AmazonVPC、AmazonS3、AmazonRDS、AmazonSES、AmazonSNS、AmazonCloudFront、AWSIAM、ElasticLoadBalancer、AWSAutoScaling。

這麼多服務項目,讓人「霧煞煞」,不知道要怎麼開始,對新手很不友善。

不過在這其中,AmazonEC2是最常用的,故本文章以EC2為主,介紹如何實現部署Docker的目標。

AmazonEC2簡介 AmazonElasticComputeCloud(AmazonEC2)在AWS雲端提供可擴展的運算容量,又稱AWSEC2。

每個EC2使用的單位是instance(實例)。

若單獨使用它就像虛擬主機,需要選硬體規格和資源。

用途和優點 可以減少一開始所需要的硬體投入成本,快速開發且部署應用程式。

可以依照需求啟動任意數量的虛擬伺服器、設定安全和聯網功能,還有管理儲存。

可以彈性地擴展或縮減規模,因時處理需求的變更,減少不必要的資源浪費與成本投入。

計費方式 以小時計費,關掉它就不會算錢,但要注意運算實例以外的部分若有使用到也要算錢,比如硬碟空間可以加錢擴增,或是固定連外IP也需要負額外費用…。

你可以在登入主控台後,從「我的帳單儀表板」去看目前的使用到什麼服務與使用量,以及花費。

在免費方案中,EC2的用量上限是一個月750小時,硬碟空間是30G。

若啟用多個instances,它會加總用量,比如我啟用2個instances,一起用了30小時,時數的用量計算即2*30=60小時。

再次提醒,AWS的免費方案讓你使用某些服務在一定的範圍內不用錢,一旦超過就開始收費,所以如果你只想先試用但不想花錢,務必小心使用! Docker概述 Docker為開放原始碼,是一个很棒的工具,用來打包程式碼,將應用程式自動化部署成可攜式、可自足的容器,在雲端或內部部署上執行,使其在開發、測試和production環境運作方式一致,減少解決不同環境所產生之問題的時間。

若是想更深入且詳細的瞭解Docker,可以看Docker官方文件或參考微軟的文件。

AWS帳戶註冊步驟 (1)建立AWS帳戶(點我到帳戶建立頁面),填好E-mail、密碼、帳戶名稱後,按「繼續」。

(2)選擇帳戶類型,有「專業級」和「個人」2個選項,專業級帳戶需要多填公司名稱和一些相關資料,如果只是自己試用就選「個人」。

ps.本文是新手自學的分享,所以這裡選個人帳戶。

ps.選「專業級」的話,一段時間沒去用,AWS可能會來找你,關心一下是否有什麼問題。

如果有公司的需求或相關稅務問題,直接打電話給AWS,目前它們在台灣有辦公室,不只能回答問題,還能提供更詳細的資訊。

此外,地址的部分最好填英文,可以到中華郵政的網站將中文地址英譯。

(3)接著,會要求你填信用卡資訊。

除非用量超過AWS免費方案的限制,不然不會向你收費。

(4)然後,完成電話驗證。

如果填好電話的資訊後,一直沒有接到電話打來,可以換個電信公司的電話號碼試試看。

ps.據說台灣之星的號碼比較不容易收到。

(5)最後,選擇基本免費方案,就可以開始使用了。

(6)選完後,AWS會問你的角色和興趣,並在下面提供一些教學影片,你可以都不理它,直接點「登入主控台」。

ps.這裡有可能會要你再輸入帳密一次,重新登入,才會到AWS管理控制台頁面。

AWSEC2建立與使用 EC2就像是虛擬主機,唯一不同的點,在於一般的虛擬主機你租用什麼等級,就只能固定使用該等級,而EC2具擴展性,你可以隨時依照需求彈性地擴增或縮減。

這也是企業喜歡用EC2的緣由,有時難免因特殊情況而流量暴增,EC2可以馬上應付突發情況,不像虛擬主機要手動更改設定;之後流量回穩降低,EC2也能立刻調整,而虛擬主機則可能改不回來,無法降級。

選擇服務主機 進入AWS管理控制台後,先點擊右上方選擇要把服務掛在哪裡,如果主要服務的客群在台灣,可以選東京或新加坡。

建立EC2 (1)第一次使用要先創建虛擬機器。

如果在「最近瀏覽的服務」有EC2,可以點進去再「Launchinstance」;或者,直接到下面「建置解決方案」裡點「啟動虛擬機器」,都會進到同樣的建立頁面。

(2)進入正式創建虛擬主機步驟。

首先,要決定選用哪一種Linux主機。

如果有「Freetiereligible」表示有包含免費方案可以免費使用,沒有的話就沒有免費。

我們要建在Linux環境上,所以選UbuntuServer,建議選最新版本,按「Select」。

(3)接著,要選擇instance的類型。

如果想用免費方案,基本上只有1個選項可選,而且裡面的其他設定其實也不太能改什麼。

選好後,若沒有其他特別想設定的,可以直接點擊「ReviewandLaunch」,跳到最後一步「Review」;或者,點擊「Next:ConfigureInstanceDetails」。

(4)在”ConfigureInstanceDetails”頁面,可以看到一些基本設定。

如果你只是新手初學,想試用看看,原則上這裡的設定都不用動,然後下一步。

ps.如果未來要建實際上線的instance,可以對「Enableterminationprotection」勾選Protectagainstaccidentaltermination作為一個保護措施,不會因為不小心刪掉,instance就不見,但在測試階段容易刪減修改,就不需要特別勾選。

(5)在”AddStorage”頁面,是關於硬碟空間的設定,預設8GB,免費方案最多30GB,多用要多收費。

硬碟空間可以動態擴充,一開始不須擔心是否夠用。

你可以先用8GB,之後不夠用要增加,改設定就可以了,改完後只需要把instance關掉重開,不必砍掉重建,非常彈性。

(6)“AddTags”頁面並沒有什麼要注意的地方,直接下一步。

(7)“ConfigureSecurityGroup”這個步驟很重要,預設只打開port22,讓你用SSH連過去,其他都是鎖起來的狀態,如果有其他需求,比如架wordpress網站等,可以點「AddRule」多開port80、443。

(8)“ReviewInstanceLaunch”會列出所有設定讓你再確認一下,如果都沒問題,就按「Launch」。

(9)由於accessAWSinstance沒辦法用帳號、密碼,需要使用keypair才能建入管理畫面,所以launch前會要求設定keypair。

如果之前有建過其他keypair,可直接選用;如果沒有,就輸入keypairname自己建一個,然後下載keyfile。

一定要注意下載後的檔案不能搞丟,一旦launch成功後離開頁面,就不能再回來重新下載! (10)最後,給它一點時間launch起來,完成後可以點「Viewinstances」,或到EC2的控制頁,看到所建instance的一些資訊,還可以操作它、改設定…。

SSH連到EC2instance 選擇instance,點擊上面的「Connect」,會有如何連到此instance的方法,這裡文件寫得蠻詳細的,其實只要照做就可以了。

在MacOS或一般LinuxOS操作 直接打開終端機,跟著下圖紅框框裡的步驟,下linux指令: cd到keyfile的位置。

cdmod改變keyfile的權限。

400表示只有建立者可以”read“,其他人什麼事都不能做。

將example的ssh指令照貼到終端機,Enter後就可以直接連進instance。

在Windows操作 利用PuTTY連過去,可點擊”connectusingPuTTY“(或點我看文件),有很完整的文件。

原則上,這裡最主要的2個重點為: (1)打開PuTTYgen,把keyfile(.pem檔)轉成.ppk檔。

→這個步驟只要有做過一次,之後若key不變就不需再重複做。

(2)打開PuTTY。

(下圖一為步驟全覽) 在HostName輸入PublicDNS或IPv6,這裡以PublicDNS為例,你可以從AWSinstance的管理頁面找到(如下圖二)。

設定SSH的Auth,選擇之前轉換好的keyfile(.ppk檔),然後「Open」。

(圖一) (圖二) (3)連線成功後,要輸入username,我們這裡用的是免費方案的UbuntuServer,預設是”ubuntu“。

在EC2上執行Docker 建議先瞭解docker的基本架構與一些常用語法,比如對image、container…的操作指令。

安裝Docker 最方便快速的方法就是使用apt安裝: sudoapt-getinstalldocker.io 可以把自己的使用者帳號加入docker群組:(這裡的使用者帳號是ubuntu) sudousermod-aGdockerubuntu ps.記得要重新登入後才會生效。

執行應用程式 (1)先把想要的dockerimage從dockerhub拉下來。

(點我看dockerpull文件) dockerpull[OPTIONS]NAME[:TAG|@DIGEST] 舉例:(這裡假設要用的是demo_account/test,其中,demo_account是dockerhub帳號,test是repository,v1是版本號) dockerpulldemo_account/test:v1 (2)接著,下dockerrun指令,它會自己部署到container後執行應用程式。

(點我看dockerrun文件) dockerrun[OPTIONS]IMAGE[COMMAND][ARG...] 舉例:(這個例子要開的是用flask做的網站,需要有hostport和containerport(分別是80和5000),底層是用python寫的程式碼,所以要用python執行app.py) dockerrun-d-p80:8050demo_account/test:v1pythonapp.py (3)以我的例子,在run完後,到瀏覽器輸入我的publicDNS(下圖二),就能連到我的網站,其他人也可以連到(下圖一)。

(圖一) (圖二) ps.本文章只是大致介紹常用的docker語法與步驟,其他語法你可以參考docker文件,並且示範我的例子,你可以依自己的需求,自己拉dockerimage到EC2instance,然後執行應用程式。

其他注意事項 將應用程式上到EC2,使用一段時間後,發現有些地方需要特別注意: #1)PublicIP不是固定的,你從instance的管理頁面看到的IP和進入server後下”ifconfig“指令所看到的IP是不一樣的。

#2)也許是本身具備彈性增減的功能,instance如果一段時間沒有使用,會自己死掉,需要把它”Stop”後再”Start”。

#3)幾乎每次instance關掉重開後,publicDNS都會變動。

使用心得 整體來說,AWSEC2蠻好用的,只要軟體程式開發完部署上去,能夠正常運作,其他跟設備相關的東西(如伺服器流量、防火牆、網路…)都不必考慮,真的很方便。

或者,公司的某項軟體還在研發階段,但要跟讓客戶試用,不希望連到公司自己的網域,也可以把EC2當作sandbox,不必擔心研發尚未完整、可能潛在一些缺陷的東西,影響到其他正式營運的產品。

如果有興趣學習更多關於AWS知識,現在已經有越來越多相關的線上課程和書籍。

點我到Hahow看AWS相關課程 點我到Udemy看AWS相關課程 ※相關書籍:–AWS實戰:快速開發、建立和部署應用程式–WordPress+AWS架設企業級雲端網站 希望大家看完這篇文章,對AWS有初步瞭解,並開始動手嘗試,跟我一起學習! 如果覺得這篇文章有幫助,請幫我拍手5下鼓勵我、支持我,讓我繼續有創作的動力! 如果有任何問題或想分享的資訊,歡迎在下方留言! 文章導覽 ←Previous文章Next文章→ LeaveaCommentCancelReply發佈留言必須填寫的電子郵件地址不會公開。

必填欄位標示為*Typehere..Name* Email* Website 在瀏覽器中儲存顯示名稱、電子郵件地址及個人網站網址,以供下次發佈留言時使用。

Δ 搜尋關鍵字: 寫文章也能增加收入線上課程學習 機票比價找優惠 近期留言「Jeslyn」在〈想學寫程式該如何入門?初學者怎麼選擇程式語言?完全沒有技術背景也可以學嗎?〉發佈留言「文帥」在〈想學寫程式該如何入門?初學者怎麼選擇程式語言?完全沒有技術背景也可以學嗎?〉發佈留言「Jeslyn」在〈法拍屋好賺嗎?投資法拍屋的重要心態&競標前一定要注意且審慎評估的5大風險〉發佈留言「Ryan」在〈法拍屋好賺嗎?投資法拍屋的重要心態&競標前一定要注意且審慎評估的5大風險〉發佈留言分類 旅遊分享(18) 印尼旅遊(6) 英國旅遊(11) 高雄旅遊(1) 理財投資(13) ETF投資(4) 法拍投資(7) 理財觀念(2) 程式開發(7) Python開發(4) 初學寫程式(1) 軟體應用(2) 聯盟行銷(1) 遠距工作(2)



請為這篇文章評分?