哈囉,大家好,歡迎來到我們實戰旅程的第三天!
在昨天的 Day 2 中,我們聊了滿滿的「貨櫃」觀念,知道了 Docker 是為了解決什麼痛點而生,以及它的三大超能力。
理論知識是基礎,但工程師的熱情,終究要在終端機(Terminal)的閃爍游標中才會被真正點燃!今天,我們就要把理論化為現實,告別紙上談兵,親手完成兩件充滿儀式感的事情:
準備好了嗎?讓我們開始動手吧!
俗話說得好,工欲善其事,必先利其器。Docker Desktop 就是我們用來與 Docker 引擎互動最方便的工具。你可以把它想像成是管理所有貨櫃的「總控制台」,它不僅包含了在背景運行的 Docker 核心引擎(Daemon),還提供了一個超酷的圖形化介面(GUI),讓我們可以輕鬆查看和管理我們的容器。
安裝過程非常簡單,就像安裝你電腦上任何一個普通的應用程式一樣。
恭喜!你的電腦現在已經具備了運行 Docker 容器的能力了!
接下來,就是見證奇蹟的時刻!讓我們來運行一個最經典、最純粹的容器。
hello-world
打開你電腦的「終端機」(Terminal) 或「命令提示字元」(Command Prompt),輸入以下指令,然後按下 Enter:
docker run hello-world
如果你是第一次執行,你會看到終端機顯示類似以下的訊息:
看到 Hello from Docker!
這句話,請給自己一個大大的掌聲!你已經成功運行了你的第一個 Docker 容器!
是不是很神奇?讓我們來仔細拆解一下,在你按下 Enter 的那一瞬間,背後到底發生了什麼事。
眼尖的你可能已經發現,hello-world
的輸出訊息中,提到了 "Docker client" 和 "Docker daemon" 這兩個詞。這正是理解 Docker 運作模式的鑰匙!
docker
指令。它像是個「傳令官」,負責接收你的命令,並把它傳達給真正幹活的人。所以,完整的流程其實是這樣的:
hello-world
的東西」。hello-world
的設計圖(Image)」。hello-world
這張設計圖給下載(Pull)回來。hello-world
容器的任務很簡單:在螢幕上印出那段 "Hello from Docker!" 的訊息,然後就功成身退,自動停止了。現在回到 Docker Desktop,你會看到剛剛啟動的 hello world
容器。
剛剛的 hello-world
跑完就結束了,有點不過癮對吧?讓我們來跑一個會「持續運作」的服務型容器—一個小小的 Nginx 網站伺服器。
繼續在你的終端機輸入以下指令:
docker run -d -p 8080:80 nginx
這次你會發現,終端機只回傳給你一長串的亂碼(那是容器的 ID),然後就沒事了。但其實,一個網站正在你的電腦背景中默默運行!
我們來拆解一下這道更酷的指令:
docker run nginx
:這部分跟剛剛一樣,去下載並運行 Nginx 的 Image。d
:是 detached
的縮寫,意思是「分離模式」。讓容器在背景運行,不會佔住你的終端機視窗。p 8080:80
:是 port
的縮寫,這是個超重要的參數!意思是「將我本機電腦的 8080 埠,連接到這個容器內部的 80 埠」。Nginx 預設會在容器裡的 80 埠提供服務,這個指令就像是架了一座橋樑,讓我們可以從外部訪問它。現在,打開你的瀏覽器,在網址列輸入 http://localhost:8080
,然後按下 Enter。
噹啷!看到 "Welcome to nginx!" 的頁面,代表你已經成功地在本機運行了一個容器化的網站了!
現在讓我們回到 Docker Desktop 圖形化介面。
點擊左側欄的 Containers,你會清楚地看到,我們剛剛啟動的 nginx
容器正在 RUNNING
狀態。
在這裡,你可以對這個容器做很多事:
試著點擊 Stop
按鈕,然後再回到你的瀏覽器重新整理 http://localhost:8080
,你會發現網站已經連不上了。這就是用 GUI 管理容器的直觀與便利!
今天,我們完成了從 0 到 1 的關鍵一步!你不再只是聽過 Docker,而是:
docker run
這個核心指令。
d
和 p
這兩個超常用參數的意義。
你可能會想,hello-world
和 nginx
這些都是別人做好的 Image。那...我們能不能深入了解 Image 和 Container 到底是什麼關係?我們又該如何自己動手做一個專屬的 Image 呢?
在明天的文章中,我們就要來深入探討 Docker 的核心三劍客:Image, Container 與 Registry 的觀念,為我們之後親手打造自己的 Image 做好最充分的理論準備!明天見!