# Docker初體驗-走進鯨魚的世界 一直以來都對Docker很好奇,不理解這隻小鯨魚厲害在哪裡? 之前問同事:Docker好用在哪裡? 同事:他可以讓你的電腦環境保持乾淨、可以快速打包你的專案、可以快速部署... 身為一位菜鳥工程師,真的是有聽沒有懂XD 偶然的機會接觸到小賴老師的[Docker課程](https://5xcampus.com/courses/docker.html?srsltid=AfmBOoqhc9YK2e0sextDiMak-gp0SsIJkq4EuR2FdSUzgeNnhQt14ZsB),我只能說太超值了! ## 課程回顧 首先,老師先介紹整個docker運作的基本概念,接著進入了指令的環節,我以為老師會直接帶我們一行一行輸入指令然後打包一個專案,但沒有,老師先從最基本的終端機指令開始說起,再來帶到docker指令,我以為的docker指令: 1. `docker container run` 2. `docker container stop` 老師教的docker指令: **指令的組成:docker 對象 指令 (參數)** 1. `docker container run -it alpine ash` 建立並啟動一個基於 Alpine Linux 的新容器,並使用互動式終端機開啟 ash shell 2. `docker container ls` 查看所有運行中的容器 3. `docker container prune` 移除所有停止運行的容器(!) 4. `docker container run –rm echo "hello"` 建立並啟動一個基於 Alpine 的臨時容器,執行 echo "hello",結束後 自動刪除容器(因為有 --rm 參數) 5. `docker container stop {id}` 停止指定的容器 6. `docker exec -it {container id} ash` 在 已運行中的容器 裡開一個新的互動式終端機,並進入 ash shell 7. `docker container logs -f {id}` 查看指定容器的 日誌輸出 8. `docker container diff {id}` 查看該容器做過什麼事 9. `docker container rm {container name or id}` 移除容器 老師特別補充: -d 在背景執行 -i 允許互動 -t 開啟類似終端機介面 #### 課堂趣事 老師特別示範如果沒加`-i`會生什麼事 `docker container run -t alpine ash` 結果:完全不能互動,連想要退出exit都沒用 哈哈哈 <hr/> 第一天的課程感覺主要是在打穩基礎,講的內容非常細,每一個指令、每一個單字都解釋了它的用途,也實作說明下這個指令會發生什麼事。親眼看到實際操作的結果,遠比只是文字敘述更容易記得住;同時也有介紹到 container 的用途,以及它與 image 之間的關係,讓我對 Docker 的基本概念有了初步的理解。 第二天的課程則是更進一步,開始把 image 和 container 串連起來。老師先帶我們理解 docker image 的來源,是由 Dockerfile 透過 docker build 建立出來的,然後再用這些 image 去產生 container。這樣的關係讓我能把抽象的概念和實際操作連結起來,理解「image 就像藍圖,container 則是依照藍圖生成的實體」。 在操作中我也更清楚地看到: * 每個 container 都是獨立的環境,互相之間不會直接干擾。 * 如果要讓 container 彼此溝通,需要透過網路設定或 docker 的 network 功能。 * 這樣的設計讓服務之間能保持獨立性,但又能在需要的時候建立連線,達到彈性部署的效果。 整體來說,第二天的內容讓我開始能將第一天的知識串起來,從「知道指令」到「理解架構與流程」,對 Docker 的運作模式有更完整的認識。 ## 關於這門課 小賴老師教學的內容遠比他 ppt 做的還要多還要細,能感受到老師想傳授的秘訣真的很多,可惜受限於時間關係,沒辦法全部教完,不過也能理解,畢竟老師的書叫「[Docker實戰6堂課](https://www.tenlong.com.tw/products/9786263335769)」,要濃縮成兩堂課教完真的是太為難老師了 XDD。 好在老師提供很好的售後服務(?),除了有完整的簡報檔可以隨時觀看以及 Notion 完整版教材,還有課後社群可以發問、交流,等於課程結束後學習並不會中斷。這樣的安排讓人覺得很貼心,也減少了「上完課就忘光」的焦慮。 整體來說,這兩天的課程雖然緊湊,但收穫很大,既有基礎知識的扎根,也有實務操作的體驗。讓我對 Docker 不再只是模糊的概念,而是能實際理解它在專案中的價值與應用,覺得這堂課真的物超所值。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up