9.1 再次認識 Docker Hub
來,我們更深入地認識一下 Docker Hub。提醒一下,這是 Docker 的主要公開 registry,使用者可以在這裡存放、分享和找到現成的容器映像。這個平台提供了數百萬個由官方組織和社群所創建的容器映像。在這堂課裡,我們會探討如何有效地搜索並下載 Docker Hub 上的現成映像。
Docker Hub 服務的主要功能
Docker Hub 是一個雲端服務,允許將映像上傳到集中式 storage,也可以從那裡提取它們。這個服務是個開發者可以分享他們的映像並利用別人創建的解決方案的地方。Docker Hub 的核心功能包括:
- 公開與私有 repositories: 可以將映像保存在對所有人公開或僅對特定使用者開放的存取權限中。
- 自動構建 (automated builds): 與版本控制系統(如 GitHub)整合,每次代碼變更時自動構建映像。
- Webhooks (網路鉤子): 設定在映像更新時執行自動操作。
9.2 搜尋現成的映像檔
1. 使用 Docker Hub 的網頁介面
- 進入 Docker Hub 網站: 打開你的瀏覽器,訪問 Docker Hub。
- 搜尋映像檔: 在搜尋欄中輸入映像檔名稱或與你的專案相關的關鍵字。例如,若要搜尋 Nginx 的映像檔,輸入 "nginx" 並按下 Enter。
- 瀏覽搜尋結果: 搜尋結果會顯示符合的映像檔。官方的映像檔標註為 "Official",並由 Docker 或相關組織支援。其他用戶的映像檔會顯示用戶名或組織的名稱。
- 選擇映像檔: 點擊你感興趣的映像檔,以查看其描述、可用的標籤、使用指導和其他有用資訊。
2. 使用命令列搜尋映像檔
Docker 也允許你直接從命令列使用指令 docker search 來搜尋映像檔。
指令範例:
docker search nginx
這條指令會顯示包含 nginx 在名稱或描述中的映像檔列表。輸出的資訊包括映像檔名稱、描述、星級(評分)、官方狀態標註以及自動建置資訊。
輸出範例:
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 13764 [OK]
jwilder/nginx-proxy Automated Nginx reverse proxy for... 2135 [OK]
richarvey/nginx-php-fpm Container running Nginx + PHP-FPM... 819 [OK]
9.3 上傳鏡像
在找到需要的鏡像之後,可以使用指令 docker pull 將其下載到本地機器上。
1. 下載具體的鏡像
要下載具體的鏡像,請使用以下語法:
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
其中:
- NAME: 鏡像名稱。
- TAG: (非必要)鏡像標籤。如果未指定其他標籤,將默認使用
latest標籤。 - @DIGEST: (非必要)SHA256 鏡像識別碼。
下載鏡像範例:
這個範例將下載帶有標籤 latest 的最新 nginx 鏡像。
docker pull nginx:latest
2. 下載特定標籤的鏡像
如果你需要某個特定版本的鏡像,請在冒號後指定標籤。這個範例將下載 Ubuntu 20.04 版本的鏡像。
docker pull ubuntu:20.04
3. 檢查已下載的鏡像
下載鏡像後,你可以用指令 docker images 查看本地機器上的所有鏡像。
指令範例:
指令的輸出將顯示所有已下載鏡像的列表,包括儲存庫、標籤、鏡像識別碼、創建日期和大小。
docker images
9.4 使用現有 image 的範例
1. 啟動 Nginx 網頁伺服器
下載 Nginx 的 image 後,可以快速啟動基於它的 container。
範例:
本範例展示如何在背景模式啟動 Nginx container,並將 container 的 80 port 轉發到主機的 8080 port。現在只需開啟瀏覽器並輸入 http://localhost:8080 就能訪問 Nginx 網頁伺服器了。
docker run -d -p 8080:80 nginx
2. 啟動 MySQL 資料庫
Docker Hub 提供多種資料庫的現成 image,例如 MySQL,可以輕鬆部署用於開發與測試的資料庫。
範例:
這個範例啟動一個 MySQL container,為 root 使用者設定密碼,並將 container 的 3306 port 轉發到主機的 3306 port。
docker run -d -p 3306:3306 --name my_mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw mysql:latest
3. 使用 Redis image 做快取
Redis 是一個很受歡迎的快取系統,而 Docker Hub 提供了 Redis 的現成 image,可以快速部署使用。
範例:
這個範例啟動一個 Redis container,並將 container 的 6379 port 轉發到主機的 6379 port。
docker run -d -p 6379:6379 --name my_redis redis:latest
GO TO FULL VERSION