初試Docker Desktop工具

文章目錄

  • 1. 概述
  • 2. 下載
  • 3. 安裝
  • 4. 注冊
  • 5. 登錄
  • 6. 啟動
  • 7. 容器
  • 8. 運行容器
    • 8.1 運行容器的鏡像
    • 8.2 獲取示例應用
    • 8.3 驗證Dockerfile文件
    • 8.4 拉取Alpine精簡鏡像
    • 8.5 創建鏡像
    • 8.6 運行容器
    • 8.7 查看前端
  • 9. 訪問靜態資源
    • 9.1 本地靜態資源
    • 9.2 創建服務器腳本
    • 9.3 修改Dockerfile文件
    • 9.4 重新構建鏡像
    • 9.5 刪除容器
    • 9.6 運行容器
    • 9.7 訪問靜態資源
  • 10. 實戰小結

1. 概述

  • Docker Desktop 是 Docker 官方為 Windows 與 macOS 提供的集成開發環境,內置 Docker Engine、Docker CLI、Docker Compose、Kubernetes 與資源管理界面。它通過 WSL 2(Windows)或 HyperKit(macOS)實現輕量級虛擬化,允許在本地一鍵構建、運行、調試 Linux 或 Windows 容器。安裝后,鏡像與容器在各用戶間共享,支持代理、資源限額、自動更新及擴展插件,是個人開發者和小團隊進行容器化開發、測試與學習的首選工具。

2. 下載

  • 下載網址:https://docs.docker.com/desktop/setup/install/windows-install/
    在這里插入圖片描述

  • Docker Desktop for Windows - x86_64下載到本地
    在這里插入圖片描述

3. 安裝

  • 雙擊安裝程序圖標進入向導,等待幾分鐘,安裝完成
    在這里插入圖片描述

4. 注冊

  • 啟動Docker Desktop
    在這里插入圖片描述
  • 單擊【Create an account】按鈕,進入注冊頁面
    在這里插入圖片描述
  • 輸入個人注冊信息
    在這里插入圖片描述
  • 單擊【Sign up】按鈕,注冊成功,跳轉到登錄頁面
    在這里插入圖片描述

5. 登錄

  • 輸入用戶名
    在這里插入圖片描述
  • 單擊【Continue】按鈕,輸入密碼
    在這里插入圖片描述
  • 單擊【Continue】按鈕,登錄成功
    在這里插入圖片描述

6. 啟動

  • 單擊【Proceed to Docker Desktop】按鈕,報錯說WSL需要更新
    在這里插入圖片描述
  • 執行命令:wsl --update,更新WSL
    在這里插入圖片描述
  • 單擊【Restart】按鈕,重新打開Docker Desktop
    在這里插入圖片描述

7. 容器

  • 容器(Container)是 Docker 中可移植、自包含的運行單元,打包應用及其全部依賴、配置與文件系統,形成鏡像的實例化對象。它共享主機操作系統內核,但擁有獨立的進程、網絡、文件與用戶空間,因此啟動秒級、資源占用低、環境一致性高。容器可在開發、測試、生產間無差異遷移,實現“一次構建,到處運行”。

8. 運行容器

8.1 運行容器的鏡像

  • 我們準備用Dockerfile和一個示例應用來創建鏡像
    在這里插入圖片描述

8.2 獲取示例應用

  • 執行命令:git clone https://github.com/docker/welcome-to-docker
    在這里插入圖片描述
  • 執行命令:cd welcome-to-docker
    在這里插入圖片描述

8.3 驗證Dockerfile文件

  • 打開應用目錄下的Dockerfile文件
    在這里插入圖片描述

8.4 拉取Alpine精簡鏡像

  • 執行命令:docker pull node:22-alpine,拉取官方Node.js v22的Alpine精簡鏡像
    在這里插入圖片描述
  • 輸入用戶名:huawei2025
    在這里插入圖片描述
  • 輸入密碼,注意,屏幕并不回顯密碼
    在這里插入圖片描述
  • 執行命令:winget install GnuWin32.Grep (Windows 11 已內置winget)
    在這里插入圖片描述
  • 配置環境變量(C:\Program Files (x86)\GnuWin32\bin
    在這里插入圖片描述
  • 于是可以在任意位置訪問grep.exe程序
    在這里插入圖片描述
  • 重新打開命令行窗口
    在這里插入圖片描述
  • 執行命令:cd welcome-to-docker,進入應用目錄
    在這里插入圖片描述
  • 執行命令:grep --version,查看grep的版本
    在這里插入圖片描述
  • 執行命令:docker images | grep node,確認已存在node標簽為22-alpine的鏡像
    在這里插入圖片描述
  • Docker Desktop窗口,切換到Images選項卡,可以查看拉取的鏡像 - node: 22-alpine
    在這里插入圖片描述

8.5 創建鏡像

  • 在應用目錄里執行命令:docker build -t welcome-to-docker .
    在這里插入圖片描述

  • 查看構建的鏡像 - welcome-to-docker在這里插入圖片描述

8.6 運行容器

  • 找到運行容器的按鈕
    在這里插入圖片描述
  • 單擊運行按鈕,彈出配置窗口
    在這里插入圖片描述
  • 配置容器名、端口、掛載卷和環境變量
    在這里插入圖片描述
  • 現在配置:運行一個叫my-welcome-app的容器,把本地D:\howard文件夾掛載到容器內/app/howard,并通過 http://localhost:3000訪問它,同時告訴應用“我現在在生產環境運行”。
  • 單擊【Run】按鈕
    在這里插入圖片描述

8.7 查看前端

  • 訪問http://localhost:3000
    在這里插入圖片描述

9. 訪問靜態資源

9.1 本地靜態資源

  • D:\howard里放一張圖片docker.png在這里插入圖片描述

9.2 創建服務器腳本

  • 在應用根目錄里創建server.js
    在這里插入圖片描述
// server.js
const express = require('express');
const path = require('path');
const app = express();
const PORT = process.env.PORT || 3000;// 把 /app/howard 映射成 /static
app.use('/static', express.static('/app/howard'));// 托管 React 構建產物
app.use(express.static(path.join(__dirname, 'build')));// 兜底路由:所有未匹配的請求都返回 React 的 index.html
app.get('*', (_req, res) => {res.sendFile(path.join(__dirname, 'build', 'index.html'));
});app.listen(PORT, () => {console.log(`Server is listening on port ${PORT}`);
});

9.3 修改Dockerfile文件

  • 讓它先構建React,再用server.js啟動
    在這里插入圖片描述
# 構建階段
FROM node:22-alpine AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build# 運行階段
FROM node:22-alpine
WORKDIR /app
# 安裝生產依賴
COPY package*.json ./
RUN npm ci --only=production && npm cache clean --force
# 拷入構建產物和后端腳本
COPY --from=build /app/build ./build
COPY server.js ./EXPOSE 3000
CMD ["node", "server.js"]

9.4 重新構建鏡像

  • 執行命令:docker build -t welcome-to-docker .
    在這里插入圖片描述

9.5 刪除容器

  • 執行命令:docker rm -f my-welcome-app
    在這里插入圖片描述

9.6 運行容器

  • 配置運行的容器
    在這里插入圖片描述
  • 單擊【Run】按鈕
    在這里插入圖片描述

9.7 訪問靜態資源

  • 訪問http://localhost:3000/static/docker.png
    在這里插入圖片描述

10. 實戰小結

  • 本次實操在 Windows 11 上成功安裝 Docker Desktop,通過 WSL 2 與 Hyper-V 雙后端完成 Linux 容器環境搭建。注冊并登錄 Docker Hub 后,拉取 node:22-alpine 鏡像,基于示例應用構建自定義鏡像 welcome-to-docker,實現 React 前端與 Express 后端一體化部署。通過掛載本地 D:\howard 目錄并映射端口 3000,實現靜態資源訪問與開發調試。過程中完成 WSL 更新、grep 工具安裝及 Dockerfile 多階段構建優化,驗證了“一次構建,到處運行”的容器化優勢,為后續微服務與 CI/CD 實踐奠定堅實基礎。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/96556.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/96556.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/96556.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

百度披露Q2財報:營收327億,AI新業務收入首超百億

8月20日,百度發布2025年第二季度財報,顯示季度總營收327億元,百度核心營收263億元,歸屬百度核心凈利潤74億元,同比增長35%。受AI驅動,涵蓋智能云在內的AI新業務收入增長強勁,首次超過100億元&am…

【字母異位分組】

思路 核心思路:使用排序后的字符串作為鍵,將原始字符串分組 鍵的選擇:對于每個字符串,將其排序后得到標準形式作為鍵分組存儲:使用哈希表,鍵是排序后的字符串,值是對應的原始字符串列表結果構建…

高防cdn如何緩存網頁靜態資源

為什么需要優化網頁靜態資源的緩存? 網頁靜態資源包括圖片、CSS、JavaScript等文件,它們通常體積大、訪問頻繁。在網頁訪問過程中,如果每次都從源服務器請求這些靜態資源,會導致網絡延遲和帶寬消耗。而優化網頁靜態資源的緩存&am…

使用Pandas進行缺失值處理和異常值檢測——實戰指南

目錄 一、缺失值處理 1.1 缺失值的識別 1.2 刪除缺失值 1.3 填充缺失值 二、異常值檢測 2.1 異常值的定義 2.2 常用檢測方法 IQR(四分位數間距)法 Z-score(標準分數)法 三、實戰案例:基因表達數據預處理 四…

B.30.01.1-Java并發編程及電商場景應用

摘要 本文深入探討了Java并發編程的核心概念及其在電商系統中的實際應用。從基礎并發機制到高級并發工具,結合電商業務場景中的典型問題,如高并發秒殺、庫存管理、訂單處理等,提供了實用的解決方案和最佳實踐。 1. Java并發編程基礎 1.1 并發…

怎樣避免游戲檢測到云手機?

以下是一些可能避免游戲檢測到云手機的方法:云手機可能會因網絡配置等因素出現一些異常網絡行為,如網絡延遲的規律性變化等,在使用云手機玩游戲時,盡量保持網絡行為的穩定性和自然性,避免短時間內頻繁切換網絡連接&…

文件上傳 --- uploadlabs靶場

目錄 1 前端和js校驗 抓包改包 2 . 2.1 .htaccess(偽靜態) 2.2 %00截斷 (php5.2) 2.3 user_init_ 2.4 3 圖片碼防御 4 競爭型漏洞 思路: 容易出現的問題: 1 前端和js校驗 關閉JS的代碼,上傳PHP…

漢化版本 k6 dashboard

目前官方提供的 dashboard 只有英文版本,國內使用不方便,因此 fork 了下官方倉庫,添加了漢化版本 https://github.com/kinghard7/xk6-dashboardhttps://github.com/kinghard7/xk6-dashboard安裝 xk6 構建程序:go install go.k6.i…

視覺識別:ffmpeg-python、ultralytics.YOLO、OpenCV-Python、標準RTSP地址格式

視覺識別:ffmpeg-python、ultralytics.YOLO、OpenCV-Python、標準RTSP地址格式 ffmpeg-python 核心概念 常用過濾器(Filters) 高級操作 視頻截幀轉換圖片示例 參考 ultralytics.YOLO(You Only Look Once) 1. 模型加載 2. 訓練模型 (`train()`) 標準YAML格式示例 3. 預測 (…

浙江龍庭翔新型建筑材料有限公司全屋定制:暢享品質生活新境界!

在消費升級的時代浪潮中,浙江龍庭翔新型建筑材料有限公司以卓越的產品質量和創新的服務理念,重新定義全屋定制的內涵,為追求高品質生活的消費者打造理想家居。公司秉承"匠心質造,樂享生活"的核心價值觀,將環…

鷹角網絡基于阿里云 EMR Serverless StarRocks 的實時分析工程實踐

一、客戶背景與業務挑戰 1.1 客戶介紹 鷹角網絡(HYPERGRYPH) 成立于2017年,總部位于上海,是中國知名游戲研發與發行公司,代表產品包括現象級手游《明日方舟》及《泡姆泡姆》《來自星辰》《終末地》等。公司依托阿里云…

LWIP的IP 協議棧

IP 協議棧 下面的分析把上文對 IPv4 概念的說明與 lwIP 中的具體實現代碼對應起來,便于將理論與實現對照理解。分析覆蓋:輸入處理、路由與轉發、輸出與報文構建、分片/重組、校驗和與各種配置點(hook、選項、統計等)。目錄&#x…

高并發短信網關平臺建設方案概述

本方案涵蓋了架構設計、技術選型、核心功能、高可用保障以及實施路徑,旨在構建一個能夠應對千萬級日吞吐量、穩定、安全、可擴展的現代短信網關平臺。 高并發短信網關平臺建設方案 一、 項目概述與目標 1.1 項目背景 為滿足公司業務(如用戶注冊、登錄、交易驗證、營銷通知…

阿里云服務-開啟對象存儲服務及獲取AccessKey教程

(1)阿里云OSS簡介 (2)打開阿里云網址:阿里云登錄 - 歡迎登錄阿里云,安全穩定的云計算服務平臺 點擊“立即開通” (2)開通成功后,充值任意金額 頂欄選擇“費用”|“充值…

[特殊字符] 高可用高并發微服務架構設計:Nginx 與 API Gateway 的協同實踐

一、Nginx 和 Gateway 的關系:是替代還是協作? 不是替代關系,而是協作關系。 1. Nginx 的角色(通常在最外層) 反向代理 & 負載均衡:將前端請求分發到多個后端服務或網關實例。 靜態資源服務&#xf…

解碼LLM量化:深入剖析最常見8位與4位核心算法

解碼LLM量化:深入剖析8位與4位核心算法 大型語言模型(LLM)的性能日益強大,但其龐大的體積和高昂的計算成本構成了部署的主要障礙。模型量化,作為一種將高精度浮點權重(如16位)映射到低位寬整數&…

提問:溫度不改變 logits 與概率的排名,為何還會影響模型輸出?

你此前圍繞溫度的核心困惑始終是:“溫度不改變 logits 與概率的排名,為何還會影響模型輸出?” 以下總結將緊扣這一困惑,并重點補充核采樣(Top-p)在其中的作用,明確溫度與核采樣如何共同影響輸出…

【文獻閱讀】Lossless data compression by large models

1. 中華人工智能研究中心,鄭州。 2. 鵬程實驗室,深圳。 3. 上海數學與交叉學科研究所,上海。 4. 中國科學院計算技術研究所,北京。 5. 寧波人工智能產業研究所,寧波。 6. 滑鐵盧大學計算機科學學院,加拿大安…

注意力機制:捕獲長距離依賴關系的革命性技術

本文由「大千AI助手」原創發布,專注用真話講AI,回歸技術本質。拒絕神話或妖魔化。搜索「大千AI助手」關注我,一起撕掉過度包裝,學習真實的AI技術! ? 1. 注意力機制概述:為什么需要關注"長距離依賴&qu…

PHP如何使用JpGraph生成柱形圖?

PHP使用JpGraph庫生成各類統計圖形具有顯著優勢,該庫作為專業的PHP圖表生成工具,能夠高效創建包括折線圖、餅圖、散點圖在內的多種數據可視化圖形,其核心價值在于提供了豐富的圖形定制能力和簡潔的API接口。JpGraph通過純PHP實現,…