10分鍾上手 AWS ECS


你在用 docker 么?你是否感覺在國內更新 docker 經常失敗?下載 docker image 速度緩慢?

如果你想解決這個問題,可以嘗試使用 AWS 提供的 Elastic Container Service(簡稱 ECS)把你的 docker 容器放在雲上。

把 docker 鏡像交給 AWS —— 創建 docker image 倉庫

通常,如果你想要在服務器上構建一個鏡像,你可能會通過 ssh 登錄服務器后,執行 docker build 命令,或者從 docker hub 上下載鏡像。如果使用 ECS 服務,你可以直接把鏡像交給 AWS 設置的 image 倉庫。

首先,我們在 ECS 服務中創建一個倉庫。和 docker hub 或者 github 倉庫一樣,我們在網頁上創建一個空倉庫,然后把我們的資源 push 到倉庫的地址。

在進入 Elastic Container Service 的控制台后,點擊「存儲庫」選項卡,並點擊「創建存儲庫」。

在下一頁,給你的存儲庫起個名字。比如我起的名字叫 example-image

 

 然后點擊下一步,會有一個詳細的上傳引導,按照這個引導一步一步做,當你本地的終端里顯示鏡像 push 完成后,點擊瀏覽器里的完成。你就能看到你上傳的鏡像了。

 

 

如果你不知道用什么鏡像,可以看我寫的這個 Dockerfile,一個基於 nginx 的很簡單的鏡像

找個地方承載你的服務 —— 創建集群

在上一步,我們已經准備好了要使用的鏡像,但是還沒有服務器可以讓我們來啟動這個鏡像。為了弄一台能運行 docker 的服務器,我們需要在 ECS 控制台中創建一個集群(盡管這個集群只有 1 台服務器)。

那么,點擊「集群」選項卡,並點擊「創建集群」:

 

 之后會有很多設置項需要填寫,我們在這里只填寫最少必要的設置項,也就是第一屏的設置項。如圖,我把集群名稱設置為example-cluster

 

 

之后,滑到頁面地圖,點擊創建。然后等待集群創建好,你就有了一個可以運行 docker 的 ECS 集群。

定義如何運行你的容器 —— 創建任務定義

有了 ECS 集群后,你就可以把容器放到上面運行了。但是在運行之前,你需要先定義一下,你要如何運行這些容器。

那么,我們就進入「任務定義」 選項卡,並點擊「創建新任務定義」:

 

 

之后又是一些設置項,但對我們來說,重要的只有兩個,一個是起名,一個是添加容器。我把這個任務起名為example-task,然后點擊添加容器。

在添加容器的時候,最基本的是前 5 項,更詳細的說明我寫在圖中。后面還有很多選項,其中大部分都可以看做是從 docker 命令演化而來的,在本教程中不詳細介紹。填寫之后,點擊右下角的創建:

 

 

這樣,我們就在任務中添加了一個容器作為任務的一部分。接着點擊頁面下方的「創建」,完成整個任務的創建。

啟動容器和配套設施 —— 創建服務

這是運行容器前的最后一步,也就是把剛才定義的任務運行起來。在 AWS 的詞典里,這叫創建服務[1]

要想創建服務,我們需要進入剛剛創建的集群:

 

 在「服務」選項卡(1號位置)下,點擊「創建」。之后會設置任務的參數,只需要填選第一屏的內容就好了。

 

 之后所有的設置項,我們都留作默認的。所以一路點擊下一步,並創建服務,直到頁面顯示「服務已創建」。這個時候,我們可以去查看服務狀態:

 

 

如果在服務的控制面板中,顯示剛剛啟動的任務為「RUNNING」狀態,代表着我們成功的啟動了在「創建任務定義」階段設置的容器。

為了查看實際效果,我們回到集群的控制面板,去查看 ECS 服務器的地址(公有 DNS 或者 公有 IP):

 

 我得到的實際效果是這樣的:

 

 

后話

恭喜,到這里你可能已經在使用自己的第一個 ECS 了。但是后續的更改要如何進行呢?

如果你想使用更多的服務器,就在集群控制面板中做「擴展 ECS 實例」的操作。
如果你想想更新容器運行的代碼,就把用新打包的鏡像推到倉庫中,然后對任務「創建新修訂」,然后更新服務。

 

 

最后,我要道歉的是,我對 ECS 服務也並不是很熟悉,無法達到生產環境要求的穩定性,可用性。如果有疑問,或者質疑,歡迎留言。

參考

Running Docker In Production Using AWS ECS


  1. 或者說,運行任務是創建服務的一部分,因為創建服務的過程中,還可以配置 auto scaling,負載均衡等超越運行任務的部分。



作者:劉思寧
鏈接:https://www.jianshu.com/p/d9a3093bd151
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM