iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 5
1
DevOps

就是「懶」才更需要重視DevOps系列 第 5

Day5 K8S架構 & Docker 快速建立環境示範

首先,先來說明一下昨天的架構圖為什麼不建議使用「虛擬機」,在成本允許下盡量使用「實體機器」的原因是,每次從「實體機」建置新的「虛擬機」總是需要預留些許資源供機器os使用,所以每多一台「虛擬機器」,多少就會浪費一些資源,當「虛擬機」數量越多浪費的資源就越多。

另外,K8S本身會自行分配Container資源,當Container資源達自動擴展的數值時(可以手動調整該數值),K8S會自動長出一台Container分散連線數減輕Loading,所以可以不必擔心資源過剩的問題,因此在資源成本足夠的情況,會建議以「實體機」取代「虛擬機」,不過也是有看過在「虛擬機」上建置K8S Cluster的案例,就看讀者們怎麼調整與使用。


經過前幾天較為枯燥乏味的架構敘述,是時候要來一點實做示範了,Docker安裝的步驟就不再多做說明,會直接透過範例使用 Docker Command 示範快速建立服務。

當執行完這一行指令時,恭喜你已經完成nginx的環境建置了,只是...還需要在做一些調整

$ docker run -d nginx 

## -d 表示於背景執行,因此不會影響使用者在 terminal 操作
## nginx 若不指定tag版本耗時,預設會安裝會新版本
## 可以到官網查看有哪些版本(https://hub.docker.com/_/nginx?tab=tags)

執行以下指令,可以看見剛剛安裝的nginx container

$ docker ps -a

## -a 表示列出所有的 container ,包含停用的

這時你會看見一個看不懂的container 名稱,原因是如果沒有指令沒有指定container名稱時,docker會自動提供一個唯一的名稱,可以透過下方指令賦予container名稱,並且在執行一次 docker ps -a 結果。

$ docker run -d --name=nginx nginx

## --name 參數可以為container 提供名稱
## 更多詳細參數可以透過 docker run --help 查看

接著當 Nginx Container 安裝完畢後,該如何使用呢,目前的操作上是還無法對外服務的,因為尚未將 Container 外的 Port 對應到 Container 內的 Port,可以透過以下指令將容器外的 Port 與容器內對應。

$ docker run -d --name=nginx -p 8081:80 nginx

## -p 容器外的Port:容器內的Port
## nginx為例,預設為 80Port,所以若無特別更改 nginx.conf,那麼謹需處理 80Port 即可

此時,打開 nginx 頁面 ,即可看見 nginx 畫面。
雖然成功看見nginx畫面了,但是該如何將自己的專案放入容器中呢?可以參考下方指令

  • index.html 內容
<h1>1234</h1>
$ docker run -d --name=nginx -p 8081:80 -v "$(pwd)/index.html:/usr/share/nginx/html/index.html" nginx

## -v 容器外路徑(可是是整個資料夾,或單一檔案):容器內路徑(可是是整個資料夾,或單一檔案)
## 若指定檔案掛載至容器內,會將原有檔案內容覆蓋,掛載資料夾也是相同案例
## 該指令指:將當前路徑的index.html掛載至容器內的/usr/share/nginx/html/index.html

此時,從新刷新頁面 nginx 頁面 ,即可看見 index.html 內容。

以上操作恭喜你已經完成了,使用docker command 建置屬於自己的 nginx 服務,明天會說明使用docker command 建置服務的缺點,以及解決辦法。


上一篇
Day4 該如何規劃虛擬世界的架構
下一篇
Day6 Docker-Composr 與 Docker Command 差異
系列文
就是「懶」才更需要重視DevOps30

尚未有邦友留言

立即登入留言