当前位置: 首页 > news >正文

Docker从安装到代码打包到部署云服务器全过程保姆级教程

核心说明本教程面向新手全程无复杂命令每一步均附操作截图级说明覆盖「Windows10/11、Mac、Linux」三大系统Docker安装「Python/Java/前端」通用代码打包「阿里云/腾讯云」服务器部署同时整合常见报错解决确保全程可复现。第一部分本地Docker安装三大系统全覆盖前置要求Windows需Win10/11专业版家庭版需额外配置下文附解决方法Mac需macOS 10.15Linux优先Ubuntu 20.04/22.04最适配Docker。1.1 Windows系统Win10/11安装步骤1开启系统必要功能关键否则Docker无法启动1. 以「管理员身份」打开「PowerShell」按下WinX选择“Windows终端管理员”2. 输入以下两条命令开启WSL2Windows子系统Docker依赖此功能每条命令输入后按回车等待执行完成dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart3. 重启电脑必须重启否则功能不生效4. 下载WSL2内核更新包解决Docker启动报错下载地址WSL2内核更新包下载后双击安装一路下一步即可。步骤2下载并安装Docker Desktop1. 下载地址官网国内可直接访问Docker Desktop for Windows2. 双击安装包勾选「Use WSL 2 instead of Hyper-V」重点避免Hyper-V冲突其余默认下一步安装完成后点击「Close and restart」3. 重启后Docker会自动启动桌面右下角出现Docker图标白色鲸鱼等待图标停止闪烁约1-2分钟说明启动成功。步骤3验证安装必做1. 打开PowerShell输入命令docker --version若输出类似「Docker version 26.0.0, build 2ae903e」说明版本正常2. 输入命令docker run hello-world若输出「Hello from Docker!」相关内容说明Docker能正常运行首次执行会自动下载hello-world镜像耐心等待。Windows家庭版补充说明若为Win10/11家庭版无法直接开启Hyper-V需先安装「Hyper-V激活工具」百度搜索“Hyper-V家庭版激活”下载后以管理员身份运行激活后再按上述步骤操作即可。1.2 Mac系统安装步骤1下载Docker Desktop1. 下载地址Docker Desktop for Mac根据自己的芯片选择Intel芯片选Intel版本M1/M2/M3芯片选Apple Silicon版本2. 下载后双击.dmg文件将Docker拖到「应用程序」文件夹中。步骤2启动并验证1. 打开「应用程序」找到Docker双击启动首次启动会提示“是否允许Docker使用系统权限”点击「允许」2. 等待Docker启动图标停止闪烁打开「终端」输入命令docker --version输出版本信息即正常3. 输入命令docker run hello-world输出正常说明安装成功。1.3 Linux系统Ubuntu 20.04/22.04安装Linux系统安装最简洁全程终端命令操作无需图形界面。步骤1更新系统软件包sudo apt update sudo apt upgrade -y步骤2安装Docker依赖sudo apt install -y ca-certificates curl gnupg lsb-release步骤3添加Docker官方镜像源国内加速避免下载缓慢curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/docker.gpg echo deb [arch$(dpkg --print-architecture) signed-by/etc/apt/trusted.gpg.d/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null步骤4安装Docker Enginesudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io步骤5启动Docker并设置开机自启sudo systemctl start docker sudo systemctl enable docker步骤6验证安装docker --version docker run hello-world补充若执行docker命令时提示“权限不足”无需每次加sudo执行以下命令重启终端生效sudo usermod -aG docker $USER newgrp docker1.4 通用优化配置国内镜像加速必做解决下载镜像缓慢Docker默认镜像源在国外国内下载速度极慢配置国内加速源后下载速度可提升10倍以上。Windows/Mac配置1. 打开Docker Desktop点击右上角「设置」齿轮图标2. 找到「Docker Engine」在右侧输入框中添加加速源替换原有内容注意格式正确逗号分隔{ registry-mirrors: [ https://docker.mirrors.aliyun.com, https://hub-mirror.c.163.com, https://mirror.baidubce.com ] }3. 点击「Apply Restart」重启Docker后生效。Linux配置sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json -EOF { registry-mirrors: [ https://docker.mirrors.aliyun.com, https://hub-mirror.c.163.com, https://mirror.baidubce.com ] } EOF sudo systemctl daemon-reload sudo systemctl restart docker验证加速是否生效输入docker info找到「Registry Mirrors」显示配置的加速源即成功。第二部分本地代码打包成Docker镜像通用教程适配所有语言核心逻辑编写Dockerfile告诉Docker如何构建镜像→ 构建镜像 → 测试镜像以「Python Flask项目」为例Java、前端项目仅需修改Dockerfile下文附差异说明。2.1 准备工作本地步骤1整理代码目录创建一个单独的项目文件夹避免中文路径结构如下以Flask项目为例my_flask_project/ # 项目根目录 ├── app.py # 核心代码Flask入口文件 ├── requirements.txt # 项目依赖如flask2.0.1 └── Dockerfile # 重点需手动创建无后缀名步骤2编写核心文件示例1. app.pyFlask简单示例可替换为自己的代码from flask import Flask app Flask(__name__) app.route(/) def hello(): return Hello Docker! 部署成功 if __name__ __main__: app.run(host0.0.0.0, port5000) # 必须写host0.0.0.0否则容器外无法访问2. requirements.txt项目依赖通过命令生成pip freeze requirements.txtflask2.0.12.2 编写Dockerfile核心中的核心打开项目根目录新建「Dockerfile」文件无后缀名注意首字母大写复制以下内容每一行均附注释可根据自己的项目修改# 1. 指定基础镜像必须选择对应语言的基础镜像轻量化优先 # Python项目用python:3.9-alpinealpine版本体积小适合部署 FROM python:3.9-alpine # 2. 设置工作目录容器内的目录后续命令均在此目录执行 WORKDIR /app # 3. 复制项目依赖文件到容器工作目录先复制依赖再复制代码可利用Docker缓存加快构建速度 COPY requirements.txt . # 4. 安装项目依赖国内镜像加速避免安装缓慢 RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple # 5. 复制项目所有代码到容器工作目录 COPY . . # 6. 暴露端口必须和代码中port一致仅声明端口不实际映射 EXPOSE 5000 # 7. 容器启动时执行的命令启动项目和代码中入口一致 CMD [python, app.py]不同语言Dockerfile差异关键补充1. Java项目SpringBoot# 基础镜像jdk1.8轻量化 FROM openjdk:8-jre-alpine WORKDIR /app # 复制打包好的jar包需先本地用maven打包成jar放在项目根目录 COPY target/myproject.jar app.jar EXPOSE 8080 # 启动jar包 CMD [java, -jar, app.jar]2. 前端项目Vue/React# 第一步构建前端项目依赖node环境 FROM node:16-alpine as build WORKDIR /app COPY package.json package-lock.json ./ RUN npm install --registryhttps://registry.npm.taobao.org COPY . . RUN npm run build # 第二步部署用nginx运行打包后的静态文件 FROM nginx:alpine # 复制构建好的静态文件到nginx目录 COPY --frombuild /app/dist /usr/share/nginx/html # 暴露80端口nginx默认端口 EXPOSE 80 # 启动nginx CMD [nginx, -g, daemon off;]2.3 构建Docker镜像终端操作步骤1进入项目根目录打开终端Windows用PowerShellMac/Linux用终端cd到项目根目录示例命令cd /Users/xxx/Documents/my_flask_project # Mac/Linux cd C:\Users\xxx\Documents\my_flask_project # Windows步骤2执行构建命令docker build -t my_project:v1.0 .命令解释-t给镜像打标签命名格式为「镜像名:版本号」方便后续识别和部署my_project:v1.0镜像名可自定义如flask-app、vue-app版本号可自定义如v1.0、latest.表示当前目录Dockerfile所在目录不可省略。注意若构建过程卡死大概率是基础镜像拉取失败可先手动拉取基础镜像如docker pull python:3.9-alpine再重新执行构建命令或检查国内镜像加速是否配置正确。步骤3验证镜像是否构建成功输入命令docker images若列表中出现「my_project:v1.0」对应自己的镜像名和版本说明构建成功。2.4 本地测试镜像可选确保镜像能正常运行执行命令启动容器映射端口让本地能访问docker run -d -p 5000:5000 --name my_project_container my_project:v1.0命令解释-d后台运行容器不占用终端-p 5000:5000端口映射格式为「本地端口:容器端口」本地访问http://localhost:5000即可访问容器内的项目--name给容器命名可自定义如my_container最后面是镜像名:版本号和构建时一致。测试打开浏览器访问http://localhost:5000能看到「Hello Docker! 部署成功」说明镜像正常。停止容器测试完成后docker stop my_project_container第三部分镜像部署到云服务器阿里云/腾讯云通用核心逻辑云服务器安装Docker → 本地镜像上传到服务器 → 服务器启动容器 → 配置安全组让公网能访问。3.1 云服务器准备以阿里云为例腾讯云操作一致步骤1购买云服务器新手推荐配置系统Ubuntu 20.04 LTS64位最适配Docker避免CentOS新手操作更复杂配置1核2G足够部署小型项目新手入门性价比最高带宽1M足够测试后续可升级购买后记录服务器「公网IP」后续连接和访问需要。步骤2连接云服务器终端操作1. 本地打开终端Windows用PowerShellMac/Linux用终端2. 输入连接命令替换为公网IPssh root你的公网IP3. 首次连接会提示「Are you sure you want to continue connecting?」输入「yes」按回车4. 输入服务器密码购买时设置的密码输入时不显示输完按回车成功连接后终端会显示「rootxxx:~#」说明已进入服务器。补充若连接失败大概率是服务器22端口未开放进入阿里云控制台 → 服务器实例 → 安全组 → 入方向添加「22端口SSH」允许所有IP访问。3.2 云服务器安装Docker和本地Linux安装一致快速复用在连接好的服务器终端依次执行以下命令复制粘贴即可每执行完一条按回车# 1. 更新软件包 sudo apt update sudo apt upgrade -y # 2. 安装依赖 sudo apt install -y ca-certificates curl gnupg lsb-release # 3. 添加阿里云Docker镜像源 curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/docker.gpg echo deb [arch$(dpkg --print-architecture) signed-by/etc/apt/trusted.gpg.d/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null # 4. 安装Docker sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io # 5. 启动Docker并设置开机自启 sudo systemctl start docker sudo systemctl enable docker # 6. 配置国内镜像加速和本地Linux一致 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json -EOF { registry-mirrors: [ https://docker.mirrors.aliyun.com, https://hub-mirror.c.163.com, https://mirror.baidubce.com ] } EOF sudo systemctl daemon-reload sudo systemctl restart docker验证输入docker --version输出版本信息即安装成功。3.3 本地镜像上传到云服务器两种方法新手推荐方法1方法1镜像保存为文件上传到服务器简单无需配置仓库步骤1本地终端将镜像保存为tar文件进入项目根目录执行命令docker save -o my_project.tar my_project:v1.0解释-o表示输出文件my_project.tar是保存后的文件名可自定义后面是镜像名:版本号。步骤2将tar文件上传到云服务器本地终端执行替换公网IP和文件路径# Windows/Mac/Linux通用命令 scp 本地tar文件路径 root你的公网IP:/root示例Mac/Linuxscp /Users/xxx/Documents/my_flask_project/my_project.tar root123.45.67.89:/root示例Windowsscp C:\Users\xxx\Documents\my_flask_project\my_project.tar root123.45.67.89:/root说明上传时会提示输入服务器密码输完按回车等待上传完成根据镜像大小约1-5分钟。步骤3服务器终端加载上传的镜像执行命令# 进入root目录tar文件上传到了这里 cd /root # 加载镜像 docker load -i my_project.tar验证输入docker images能看到本地构建的镜像my_project:v1.0说明上传成功。方法2通过阿里云镜像仓库上传适合频繁更新进阶操作1. 登录阿里云控制台搜索「容器镜像服务」进入后创建「命名空间」自定义名称2. 创建「镜像仓库」选择「本地仓库」填写仓库名称如my-project完成创建3. 本地终端登录阿里云镜像仓库替换自己的用户名和仓库地址docker login --username你的阿里云用户名 registry.cn-你的地域.aliyuncs.com4. 给本地镜像打标签替换为自己的仓库地址docker tag my_project:v1.0 registry.cn-你的地域.aliyuncs.com/你的命名空间/my-project:v1.05. 推送镜像到阿里云仓库docker push registry.cn-你的地域.aliyuncs.com/你的命名空间/my-project:v1.06. 服务器终端拉取镜像替换为自己的仓库地址docker pull registry.cn-你的地域.aliyuncs.com/你的命名空间/my-project:v1.03.4 云服务器启动容器部署核心步骤在服务器终端执行启动命令和本地测试命令类似端口映射一致docker run -d -p 5000:5000 --name my_project_container --restartalways my_project:v1.0新增参数说明--restartalways表示服务器重启后容器自动启动避免服务器重启后项目失效。验证容器是否启动成功docker ps若列表中出现「my_project_container」且「STATUS」为「Up X minutes」说明容器正常运行。补充若容器启动后立即停止执行docker logs my_project_container查看报错信息大概率是端口占用或代码错误针对性解决即可。3.5 配置安全组关键否则公网无法访问云服务器默认关闭所有端口需手动开放项目端口如5000端口步骤如下阿里云为例登录阿里云控制台找到「云服务器ECS」→ 选择自己的服务器实例点击左侧「安全组」→ 点击当前安全组的「配置规则」点击「入方向」→ 「添加规则」填写以下信息端口范围5000/5000和容器映射的端口一致授权对象0.0.0.0/0允许所有公网IP访问新手推荐后续可根据需求限制IP协议类型TCP描述自定义如my_project端口。点击「确定」生效时间约1-2分钟。腾讯云操作控制台 → 云服务器 → 安全组 → 入方向规则 → 添加端口参数和阿里云一致。3.6 公网访问测试最终验证打开本地浏览器输入地址http://你的公网IP:5000若能看到「Hello Docker! 部署成功」说明整个部署流程完成第四部分常见问题排查新手必看避坑指南1. Docker启动失败Windows未开启WSL2或未安装内核更新包重新执行1.1步骤若提示「Hermes相关冲突」关闭Docker Desktop的「Experimental Features」。Mac芯片不兼容如M芯片装了Intel版本重新下载对应芯片的Docker Desktop。Linux权限不足执行sudo systemctl start docker或镜像源配置错误重新配置国内加速。2. 镜像构建失败报错「no such file or directory」Dockerfile路径错误确保终端在Dockerfile所在目录或命令末尾加「.」。依赖安装缓慢/失败未配置国内镜像在Dockerfile的pip/npm命令中添加国内源如Python用清华源前端用淘宝源。构建卡死手动拉取基础镜像或检查网络重新执行构建命令。3. 容器启动失败执行docker logs 容器名查看报错常见原因端口占用、代码错误、配置文件缺失。端口占用执行netstat -tulpn | grep 端口号找到占用端口的进程执行kill -9 进程ID再重启容器。4. 公网无法访问安全组未开放端口重新配置安全组确保端口和容器映射端口一致授权对象为0.0.0.0/0。容器端口映射错误重新执行docker run命令确保「-p 本地端口:容器端口」正确代码中host0.0.0.0。服务器防火墙拦截执行sudo ufw allow 5000开放5000端口或关闭防火墙sudo ufw disable新手推荐。5. 配置文件处理若项目有配置文件如数据库配置不建议打包进镜像可通过「挂载目录」方式挂载宿主机配置文件docker run -d -p 5000:5000 -v /root/config:/app/config --name my_project_container my_project:v1.0解释将服务器/root/config目录挂载到容器/app/config目录修改宿主机配置文件即可生效无需重新构建镜像。第五部分总结全程核心流程本地Docker安装→编写Dockerfile→构建镜像→上传镜像到云服务器→启动容器→配置安全组→公网访问所有步骤均为新手友好型无复杂命令只要严格按照教程操作均可成功部署
http://www.gsyq.cn/news/1375382.html

相关文章:

  • 机器学习赋能冷等离子体种子处理:Extra Trees模型精准预测发芽率提升
  • 2025-2026年尚百年电话查询:定制全铝家居前需核实资质与合同条款 - 品牌推荐
  • 工业相机和镜头参数和选型
  • Liunx常用命令
  • RHEL9.2保姆级安装教程:从VMware虚拟机创建到系统配置的完整避坑指南
  • Linux系统篇,开发工具(六):文件的编译配置、调试的理解、cgdb和gdb的操作使用
  • 基于对比学习的机器遗忘框架CoUn:原理、实现与调优指南
  • 基于Intel Xe GPU与SYCL的AI模型完整性验证框架设计与实现
  • ML系统可持续性工程实践:从能耗优化到全生命周期管理
  • 告别Alt+F4秒退!在UE4/UE5中实现窗口事件监听的三种方法全评测
  • MyBatis 与 MySQL 执行流程
  • 从spring到spring boot——JAVA项目开发
  • UE4项目实战:用两个Widget组件搞定3DUI穿模问题(附蓝图与材质设置)
  • 2026年4月惠州知名的设备运输服务商推荐,精密设备搬迁/工厂设备搬运/设备安装搬迁/平台吊装,设备运输一站式服务哪家好 - 品牌推荐师
  • Armv9 SME指令集:FMLS与FMLSL浮点运算优化
  • 跨VM RowHammer攻击防御技术与DRAM安全研究
  • LLM推理解耦技术:提升大型语言模型推理效率的关键方法
  • BFloat16与SME2指令集在AI加速中的应用
  • 亚秒级计时电流法在室温离子液体中的突破应用
  • Mysql:事务管理(上)
  • 基于机器学习的癫痫发作检测与预测:从EEG信号处理到LSTM时序建模
  • 告别瞎猜!用DBSCAN和K-means搞定毫米波雷达点云聚类,附完整Matlab代码与数据集
  • 基于退火序贯蒙特卡洛的符号回归:从高维物理数据中自动发现多项式约束
  • 纯前端到底要不要学 Java
  • Unity新手避坑指南:从预制体变体到导航网格,这些基础概念别再搞混了
  • CentOS 7最小化安装后,复制粘贴和网络配置的保姆级教程(附图形界面切换)
  • DYNAMIX:基于强化学习的动态批处理优化,破解分布式训练效率与精度困局
  • 手把手教你用Linux命令‘偷看’UEFI启动日志,排查系统启动失败问题
  • 企业IT必看:如何用Chrome企业版MSI配合组策略,实现全网电脑静默部署
  • 流式处理与可解释AI:构建实时电竞胜率预测系统的核心技术