Docker Hub 快速入門
Docker Hub 提供了龐大的預建映像檔與資源庫,可加速開發工作流程並縮短設定時間。您可以基於 Docker Hub 的預建映像檔進行建置,然後使用儲存庫與您的團隊或數百萬名開發人員分享並分發您自己的映像檔。
本指南將向您展示如何尋找並執行預建映像檔。接著,會引導您建立自訂映像檔並透過 Docker Hub 進行分享。
先決條件
步驟 1:在 Docker Hub 庫中尋找映像檔
您可以直接在 Docker Hub、Docker Desktop 儀表板中,或使用 CLI 來搜尋內容。
若要在 Docker Hub 上搜尋或瀏覽內容
前往 Docker Hub 探索頁面。
在探索 (Explore) 頁面上,您可以透過目錄或類別進行瀏覽,或是使用搜尋功能快速找到內容。
在類別 (Categories) 下,選擇網頁伺服器 (Web servers)。
結果顯示後,您可以使用頁面左側的篩選器進一步篩選結果。
在篩選器中,選擇Docker 官方映像檔 (Docker Official Image)。
透過「受信任內容」進行篩選,可確保您僅看到由 Docker 和經驗證的發布合作夥伴所策劃的高品質且安全的映像檔。
在結果中,選擇 nginx 映像檔。
選擇該映像檔後會進入映像檔頁面,您可以在此深入了解如何使用該映像檔。在該頁面上,您也會找到用於拉取映像檔的
docker pull指令。
開啟 Docker Desktop 儀表板。
選擇 Docker Hub 檢視。
在 Docker Hub 檢視中,您可以透過目錄或類別瀏覽,或是使用搜尋功能快速找到內容。
保持搜尋方塊為空,然後選擇搜尋 (Search)。
搜尋結果會隨之顯示,搜尋方塊旁會出現額外的篩選器。
選擇搜尋篩選圖示,然後選擇Docker 官方映像檔和網頁伺服器。
在結果中,選擇 nginx 映像檔。
開啟終端機視窗。
提示Docker Desktop 儀表板內建終端機。在儀表板底部,選擇 >_ Terminal 即可開啟。
在終端機中,執行下列指令。
$ docker search --filter is-official=true nginx與 Docker Hub 和 Docker Desktop 介面不同,您無法使用
docker search指令按類別瀏覽。關於該指令的更多詳細資訊,請參閱 docker search。
現在您已經找到映像檔,是時候在您的裝置上拉取並執行它了。
步驟 2:從 Docker Hub 拉取並執行映像檔
您可以使用 CLI 或 Docker Desktop 儀表板執行來自 Docker Hub 的映像檔。
在 Docker Desktop 儀表板的 Docker Hub 檢視中,選擇 nginx 映像檔。更多詳細資訊,請參閱 步驟 1:在 Docker Hub 庫中尋找映像檔。
在 nginx 畫面上,選擇執行 (Run)。
如果您的裝置上不存在該映像檔,它會自動從 Docker Hub 拉取。拉取映像檔可能需要幾秒鐘或幾分鐘,具體取決於您的連線速度。映像檔拉取完成後,Docker Desktop 會出現一個視窗,您可以在其中指定執行選項。
在主機連接埠 (Host port) 選項中,指定
8080。選擇 Run。
容器啟動後,會顯示容器日誌。
選擇 8080:80 連結以開啟伺服器,或在您的網頁瀏覽器中瀏覽 https://:8080。
在 Docker Desktop 儀表板中,選擇停止 (Stop) 按鈕來停止容器。
開啟終端機視窗。
提示Docker Desktop 儀表板內建終端機。在儀表板底部,選擇 >_ Terminal 即可開啟。
在您的終端機中,執行下列指令來拉取並執行 Nginx 映像檔。
$ docker run -p 8080:80 --rm nginxdocker run指令會自動拉取並執行映像檔,無需先執行docker pull。若要深入了解該指令及其選項,請參閱docker runCLI 參考資料。執行該指令後,您應該會看到類似下列的輸出。Unable to find image 'nginx:latest' locally latest: Pulling from library/nginx a480a496ba95: Pull complete f3ace1b8ce45: Pull complete 11d6fdd0e8a7: Pull complete f1091da6fd5c: Pull complete 40eea07b53d8: Pull complete 6476794e50f4: Pull complete 70850b3ec6b2: Pull complete Digest: sha256:28402db69fec7c17e179ea87882667f1e054391138f77ffaf0c3eb388efc3ffb Status: Downloaded newer image for nginx:latest /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf /docker-entrypoint.sh: Sourcing /docker-entrypoint.d/15-local-resolvers.envsh /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh /docker-entrypoint.sh: Configuration complete; ready for start up 2024/11/07 21:43:41 [notice] 1#1: using the "epoll" event method 2024/11/07 21:43:41 [notice] 1#1: nginx/1.27.2 2024/11/07 21:43:41 [notice] 1#1: built by gcc 12.2.0 (Debian 12.2.0-14) 2024/11/07 21:43:41 [notice] 1#1: OS: Linux 6.10.11-linuxkit 2024/11/07 21:43:41 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576 2024/11/07 21:43:41 [notice] 1#1: start worker processes 2024/11/07 21:43:41 [notice] 1#1: start worker process 29 ...瀏覽 https://:8080 以檢視預設的 Nginx 頁面,並確認容器正在執行。
在終端機中,按下
Ctrl+C 以停止容器。
您現在已成功執行一個網頁伺服器,無需任何設定或配置。Docker Hub 提供對預建、可立即使用之容器映像檔的即時存取,讓您無需手動安裝或配置軟體即可快速拉取並執行應用程式。利用 Docker Hub 龐大的映像檔庫,您可以輕鬆試驗並部署應用程式,從而提高生產力,並能更輕鬆地嘗試新工具、設定開發環境或基於現有軟體進行開發。
您也可以擴充來自 Docker Hub 的映像檔,這讓您能夠快速建置並自訂自己的映像檔以滿足特定需求。
步驟 3:建置映像檔並推送到 Docker Hub
建立一個 Dockerfile 來指定您的應用程式
FROM nginx RUN echo "<h1>Hello world from Docker!</h1>" > /usr/share/nginx/html/index.html此 Dockerfile 擴充了來自 Docker Hub 的 Nginx 映像檔以建立一個簡單的網站。只需幾行程式碼,您就可以使用 Docker 輕鬆設定、自訂並分享一個靜態網站。
執行下列指令來建置您的映像檔。將
<YOUR-USERNAME>取代為您的 Docker ID。$ docker build -t <YOUR-USERNAME>/nginx-custom .此指令會建置您的映像檔並進行標記,以便 Docker 了解要將其推送到 Docker Hub 中的哪個儲存庫。若要深入了解該指令及其選項,請參閱
docker buildCLI 參考資料。執行指令後,您應該會看到類似下列的輸出。[+] Building 0.6s (6/6) FINISHED docker:desktop-linux => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 128B 0.0s => [internal] load metadata for docker.io/library/nginx:latest 0.0s => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [1/2] FROM docker.io/library/nginx:latest 0.1s => [2/2] RUN echo "<h1>Hello world from Docker!</h1>" > /usr/share/ 0.2s => exporting to image 0.1s => => exporting layers 0.0s => => writing image sha256:f85ab68f4987847713e87a95c39009a5c9f4ad78 0.0s => => naming to docker.io/mobyismyname/nginx-custom 0.0s執行下列指令來測試您的映像檔。將
<YOUR-USERNAME>取代為您的 Docker ID。$ docker run -p 8080:80 --rm <YOUR-USERNAME>/nginx-custom瀏覽 https://:8080 以檢視頁面。您應該會看到
Hello world from Docker!。在終端機中,按下 CTRL+C 以停止容器。
登入 Docker Desktop。在將映像檔推送到 Docker Hub 之前,您必須先完成登入。
執行下列指令將您的映像檔推送到 Docker Hub。將
<YOUR-USERNAME>取代為您的 Docker ID。$ docker push <YOUR-USERNAME>/nginx-custom注意您必須透過 Docker Desktop 或命令列登入 Docker Hub,並且必須按照上述步驟正確命名您的映像檔。
此指令會將映像檔推送到 Docker Hub,如果儲存庫不存在,則會自動建立。若要深入了解該指令,請參閱
docker pushCLI 參考資料。執行指令後,您應該會看到類似下列的輸出。Using default tag: latest The push refers to repository [docker.io/mobyismyname/nginx-custom] d0e011850342: Pushed e4e9e9ad93c2: Mounted from library/nginx 6ac729401225: Mounted from library/nginx 8ce189049cb5: Mounted from library/nginx 296af1bd2844: Mounted from library/nginx 63d7ce983cd5: Mounted from library/nginx b33db0c3c3a8: Mounted from library/nginx 98b5f35ea9d3: Mounted from library/nginx latest: digest: sha256:7f5223ae866e725a7f86b856c30edd3b86f60d76694df81d90b08918d8de1e3f size: 1985
現在您已經建立了儲存庫並推送了映像檔,是時候檢視您的儲存庫並探索其選項了。
步驟 4:在 Docker Hub 上檢視您的儲存庫並探索選項
您可以在 Docker Hub 或 Docker Desktop 介面中檢視您的 Docker Hub 儲存庫。
前往 Docker Hub 並登入。
登入後,您應該會位於儲存庫 (Repositories) 頁面。如果沒有,請前往 儲存庫 頁面。
找到 nginx-custom 儲存庫並選擇該行。
選擇儲存庫後,您應該會看到關於儲存庫的更多詳細資訊和選項。
登入 Docker Desktop。
選擇 映像檔 (Images) 檢視。
選擇 Hub 儲存庫 (Hub repositories) 分頁。
隨即顯示您的 Docker Hub 儲存庫清單。
找到 nginx-custom 儲存庫,將滑鼠懸停在該行上,然後選擇 在 Hub 中檢視 (View in Hub)。
Docker Hub 隨即開啟,您可以檢視關於該映像檔的更多詳細資訊。
您現在已確認您的儲存庫存在於 Docker Hub 上,並發現了更多相關選項。檢視後續步驟以了解其中一些選項的更多資訊。
下一步
新增 儲存庫資訊 以幫助使用者尋找並使用您的映像檔。