雲端容器化技術與資源調度
簡單用 Docker 架設 Nginx
Docker Run!
在 Cloud Shell 中輸入以下指令來啟動一個 nginx
:
$ docker run --name my-nginx -p 8080:80 -d nginx:1.17.4
確認容器啟動狀態
$ docker ps
應該會看到類似下面的輸出:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c758c99a7d38 nginx:1.17.4 "nginx -g 'daemon of…" 11 seconds ago Up 8 seconds 0.0.0.0:8080->80/tcp my-nginx
啟動 Cloud Shell 網頁預覽
此時應該會看到 Welcome to nginx! 預設歡迎頁面。
進入容器內部
如果對容器概念很陌生的話,可以暫時先把我們剛剛啟動的容器想像為一台跑在 cloud shell linux 上面的VM。而這台VM幫我們預裝了一個 nginx
。
現在,我們就來試圖看看怎樣進入這個容器裡面,實際操控這個容器。
請注意,容器和VM本質上還是有很大的差異,只是暫時先這樣理解一下,後面會在詳細做出區別。
$ docker exec -it my-nginx bash
# 如果看到shell 的開頭變為以下這樣,說明你已經進入容器內了:
root@c758c99a7d38:/#
對預設頁面進行改動
在 Nginx 容器內,執行:
$ cd /usr/share/nginx/html/
$ ls
這時會看到以下輸出,其中 index.html
就是我們看到的歡迎頁面了。
50x.html index.html
透過指令故意在 index.html
檔案的最後面,補上一句 hello my nginx!
:
$ echo 'hello my nginx!' >> /usr/share/nginx/html/index.html
這時重新整理剛剛的預覽視窗,應該就會看到變化了。
退出容器內部
$ exit
# 退出回到cloud shell後,會看到原先cloud shell 的開頭,類似這樣:
jlin0420@cloudshell:~ (cloud-container-255813)$
把外部檔案傳入容器內
我們接下就要把 Nginx 歡迎頁面,取代為我們在前一章所準備的靜態網頁。因此,最直觀的方式就是把我們製作的網頁傳入該容器內,並取代掉容器內的 /usr/share/nginx/html/index.html
。
$ docker cp ~/hello-site/index.html my-nginx:/usr/share/nginx/html/index.html
這時重新整理剛剛的預覽視窗,應該就會看到我們自己的網頁了。
暫時停止容器
$ docker stop my-nginx
只是暫時停止容器,類似把VM關機的概念,但東西都還在。
啟動容器
$ docker start my-nginx
把處於停止狀態的容器再度啟動。
小結
到這邊,假設這是你第一次接觸容器的話,可以先暫時這樣理解我們剛才完成的事情:
- 我們擁有一台在雲端上的個人工作站 (其實是 Cloud Shell)
- 我們在這台工作站上開了一台『VM』 (其實是開了一個容器)
- 我什麼都沒做,但這台 『VM』 已經預裝了一個 Nginx 應用程式(其實是容器內有一個 Nginx)
- 我什麼都沒做,但這個 『VM』 的 Nginx 居然是跑起來的
- 我可以實際進入到這個 『VM』當中,並且操控這個內部的作業系統。 例如,
cd
,ls
。 - 我可以把一個檔案從『VM』外,傳送到到 『VM』裡面
- 這台 『VM』可以被關機、開機