Docker部署配置全流程(超详细——Windows和Linux)

Docker部署配置全流程(超详细——Windows和Linux)

文章目录

前言

一、Docker 简介

Docker 是一个开源的容器化平台,用于开发、部署和运行应用程序。它通过容器技术将应用及其依赖项打包到一个可移植的标准化单元中,确保应用在不同环境中高效运行

1.核心特点

特点说明
轻量级容器共享宿主机的操作系统内核,相比传统虚拟机更节省资源
可移植性容器可在任何支持 Docker 的环境中运行,确保一致性
隔离性每个容器独立运行,互不干扰,提高安全性
快速部署秒级启动和停止,适合动态扩展和微服务架构
版本控制支持镜像分层存储和版本管理,便于回滚和更新

2.主要应用场景

场景说明
微服务架构将单体应用拆分为多个独立容器,提高可维护性
持续集成/持续部署 (CI/CD)自动化构建、测试和发布流程
开发环境标准化避免“在我机器上能运行”的问题,统一开发、测试和生产环境
云原生应用与 Kubernetes 等编排工具结合,实现弹性伸缩和高可用
快速实验与测试快速创建一次性环境,测试新技术或配置

3.优势

优势说明
资源高效相比虚拟机,容器占用更少 CPU 和内存
跨平台支持可在 Linux、Windows 和 macOS 上运行
丰富的生态系统提供 Docker Hub 等镜像仓库,方便共享和获取预构建镜像
简化运维通过 Dockerfile 定义环境,减少手动配置错误

二、Linux

1.安装前准备

1.1 系统要求检查

# ubuntu# 检查内核版本(需3.10+)uname -r # 检查系统版本 lsb_release -a # 输出示例:Ubuntu 22.04 LTS# centos# 检查内核版本(需3.10+)uname -r # 输出示例:3.10.0-1160.el7.x86_64# 检查系统版本cat /etc/redhat-release # 输出示例:CentOS Linux release 7.9.2009 (Core)
在这里插入图片描述

1.2 卸载旧版本 Docker

如果之前安装过Dokcer的,需要先卸载旧的版本

# ubuntusudoapt-get remove docker docker-engine docker.io containerd runc # centossudo yum remove -y docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine 
在这里插入图片描述

1.3 安装基础依赖

# ubuntusudoapt-get update sudoapt-getinstall -y ca-certificates curl gnupg lsb-release # centossudo yum install -y yum-utils device-mapper-persistent-data lvm2 
在这里插入图片描述


在这里插入图片描述

2.Docker 安装流程

2.1 配置国内镜像源(阿里云)

# ubuntu# 添加阿里云GPG密钥curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg |sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg # 设置仓库echo"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"|sudotee /etc/apt/sources.list.d/docker.list > /dev/null # Ubuntu更新APT缓存sudoapt-get update # centos# 设置阿里云Docker仓库sudo yum-config-manager --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 更新yum缓存sudo yum makecache fast 
在这里插入图片描述

2.2 安装 Docker 引擎

# ubuntusudoapt-getinstall docker-ce docker-ce-cli containerd.io docker-compose-plugin # centos# 安装最新版本sudo yum install -y docker-ce docker-ce-cli containerd.io 
在这里插入图片描述


在这里插入图片描述

2.3 启动 Docker 服务

# 启动服务sudo systemctl start docker # 设置开机自启sudo systemctl enable docker # 验证服务状态sudo systemctl status docker 
在这里插入图片描述

2.4 配置镜像加速器

2.4.1 方案一:临时加速(单次有效)
#通用格式(镜像地址不加https://)sudo docker pull [镜像源]/镜像名:版本号 #使用示例 sudo docker pull docker.m.daocloud.io/hello-world:latest 
在这里插入图片描述
2.4.2 方案二:永久配置(推荐)
#创建配置文件目录(已存在可跳过)sudomkdir -p /etc/docker #通过命令行生成配置(推荐新手)sudotee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": [ "https://docker.m.daocloud.io", "https://docker.imgdb.de", "https://docker-0.unsee.tech", "https://docker.hlmirror.com" ] } EOF#应用配置(必须执行)sudo systemctl daemon-reload sudo systemctl restart docker 
在这里插入图片描述
2.4.3 验证配置
#测试基础镜像 sudo docker pull hello-world #查看已用镜像源  docker info |grep Mirrors -A 3
在这里插入图片描述
在这里插入图片描述

2.5 用户权限配置(免sudo)

# 添加docker用户组sudogroupadd docker # 将当前用户加入docker组sudousermod -aG docker $USER# 激活组权限变更 newgrp docker # 验证权限 docker run hello-world 
在这里插入图片描述

2.6 内核参数优化(可选)

# 编辑sysctl配置文件sudotee /etc/sysctl.d/docker.conf <<-'EOF' net.ipv4.ip_forward=1 net.bridge.bridge-nf-call-iptables=1 net.bridge.bridge-nf-call-ip6tables=1 vm.max_map_count=262144 fs.may_detach_mounts=1 EOF# 加载配置sudo sysctl --system 
在这里插入图片描述


在这里插入图片描述

2.7 存储驱动配置(可选)

2.7.1 检查存储驱动
docker info |grep"Storage Driver"# 推荐输出:overlay2
在这里插入图片描述
2.7.2 配置Overlay2存储
# 停止Docker服务sudo systemctl stop docker # 备份原有数据sudomv /var/lib/docker /var/lib/docker.bak # 创建新存储目录sudomkdir -p /var/lib/docker # 修改存储驱动配置sudotee /etc/docker/daemon.json <<-'EOF' { "storage-driver": "overlay2", "storage-opts": [ "overlay2.override_kernel_check=true" ] } EOF# 重启服务sudo systemctl start docker 

2.8 防火墙配置(可选)

2.8.1 开放Docker端口
# 开放2375端口(管理端口)sudo firewall-cmd --zone=public --add-port=2375/tcp --permanent # 开放常用应用端口sudo firewall-cmd --zone=public --add-port=80/tcp --permanent sudo firewall-cmd --zone=public --add-port=443/tcp --permanent sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent # 重新加载防火墙sudo firewall-cmd --reload 
2.8.2 Docker与Firewalld集成
# 允许Docker操作防火墙sudo firewall-cmd --permanent --zone=trusted --add-interface=docker0 sudo firewall-cmd --permanent --zone=trusted --add-port=2376/tcp sudo firewall-cmd --reload 

3.故障排查指南

3.1 常见问题解决方案

3.1.1 问题1:容器无法访问外网
# 解决方案:sudo firewall-cmd --zone=public --add-masquerade --permanent sudo firewall-cmd --reload sudo systemctl restart docker 
在这里插入图片描述
3.1.2 问题2:存储空间不足
# 查看Docker磁盘使用 docker system df# 清理无用资源 docker system prune -a -f --volumes 
在这里插入图片描述
3.1.3 问题3:镜像拉取失败
在这里插入图片描述
3.1.3.1 DNS
# 检查DNS配置sudocat /etc/resolv.conf # 如果DNS没有配置,执行下面指令添加sudotee /etc/resolv.conf <<<"nameserver 8.8.8.8"
3.1.3.2 镜像源
# 临时使用其他镜像源 或者直接配置永久源,参照上面的 2.4.2 方案二:永久配置sudo docker pull docker.m.daocloud.io/hello-world:latest 

3.2 日志分析命令

# 查看Docker服务日志 journalctl -u docker.service --since "2025-08-01" --no-pager # 查看容器日志 docker logs -f [容器ID] --tail 100

三、Windows

1.安装前的准备工作

  • 操作系统:Windows 10/11(专业版、企业版或家庭版支持WSL 2)
  • 内存:至少4GB RAM
  • 磁盘空间:至少20GB可用空间
  • 虚拟化
    • BIOS/UEFI中启用虚拟化
  • 启用Hyper-V和WSL 2
    • Docker Desktop依赖Hyper-V和WSL 2(Windows Subsystem for Linux)
      • 打开“控制面板” > “程序” > “启用或关闭Windows功能”
      • 勾选 Hyper-V、Windows Subsystem for Linux 和 虚拟机平台
  • 安装WSL 2

设置默认版本为WSL 2

wsl --set-default-version 2 
在这里插入图片描述

安装WSL

wsl.exe --install 
在这里插入图片描述

检查WSL版本

wsl --status 
在这里插入图片描述

重启电脑

在这里插入图片描述


在这里插入图片描述

任务管理器 > 性能 > CPU > 虚拟化状态:“已启用”

在这里插入图片描述

2.下载和安装(Docker Desktop)

2.1 下载

网址:官方下载

在这里插入图片描述

2.2 安装

  • 双击安装包,进入安装向导
  • 安装选项
    • 勾选 Use WSL 2 instead of Hyper-V(推荐)
    • 勾选 Add Docker Desktop to PATH
    • 完成安装,点击 Close and restart 重启电脑
最新安装包默认包含两项

2.3 验证安装

  • 启动Docker Desktop
    • 如果输出 Hello from Docker! 表示安装成功

测试运行:

docker run hello-world 

检查版本

docker --version docker-compose --version 
在这里插入图片描述

安装完成后,系统托盘会显示鲸鱼图标(表明Docker正在运行)

在这里插入图片描述

3.配置Docker

3.1 配置镜像加速器(推荐)

Docker默认从Docker Hub拉取镜像,国内用户可配置其他镜像源提升速度

  • 步骤:

点击 Apply

在这里插入图片描述

编辑 daemon.json 文件,添加镜像源(推荐地址:最新镜像源参考

"registry-mirrors":["https://docker.m.daocloud.io","https://hub-mirror.c.163.com"]

打开 Docker Desktop > Settings > Docker Engine

在这里插入图片描述

3.2 配置WSL 2集成

  • 启用WSL 2集成:
    • Docker Desktop > Settings > Resources > WSL Integration
    • 启用默认WSL发行版(如Ubuntu)

可添加其他WSL发行版(如Debian、Kali)

在这里插入图片描述

4.常见问题与解决方案

4.1 虚拟化未开启

  • 错误提示:WSL 2 requires virtualization to be enabled in the BIOS
  • 解决方法
    • 进入BIOS(开机时按Del/F2/F12)开启虚拟化功能(Intel VT-x/AMD-V)
    • 检查任务管理器 > 性能 > CPU > 是否显示“虚拟化:已启用”

4.2 Hyper-V冲突

  • 错误提示:Cannot connect to the Docker daemon at unix:///var/run/docker.sock
  • 解决方法
    • 关闭其他虚拟机软件(如VirtualBox)。

通过PowerShell禁用Hyper-V

bcdedit /set hypervisorlaunchtype off Restart-Computer-Force 

4.3 Docker Desktop无法启动

  • 解决方法
    • 重新安装WSL 2内核

重置WSL 2

wsl --shutdown 

4.4 Docker 镜像拉取失败

在这里插入图片描述
  • 解决方法

修改 DNS 设置

"dns": ["8.8.8.8", "114.114.114.114"] 

配置镜像加速器

"registry-mirrors": ["https://docker.m.daocloud.io","https://hub-mirror.c.163.com"]
在这里插入图片描述

Read more

Java最新面试题库——精选100道(含精简答案),收藏这篇就够了

JavaEE面试题整理 * 一、Java基础篇 * 二、JVM篇 * 三、Tomcat篇 * 四、MyBatis篇 * 五、Spring篇 * 六、SpringMVC面试题整理 * 七、Redis篇 * 八、Mongodb篇 * 九、MQ篇 * 十、Shiro篇 * 十一、搜索引擎篇 * 十二、Nginx篇 * 十三、SpringBoot篇 * 十四、Dubbo篇 一、Java基础篇 1、JAVA中的几种基本数据类型是什么,各自占用多少字节? 浮点类型:float(4字节)、double(8个字) 整数类型:byte(1字节)、short(2字节)、int(4字节)、long(8字节) 字符类型:char(

By Ne0inhk
JavaScript 中 var、let、const 的核心区别与实战应用

JavaScript 中 var、let、const 的核心区别与实战应用

要理解 const、var、let 的区别,我们可以从 作用域、变量提升、可重复声明、可修改性 这几个核心维度展开,这些也是新手最容易混淆的点。 一、核心概念铺垫 首先明确两个基础概念,能帮你更好理解区别: * 函数作用域:变量只在声明它的函数内部可访问(var 是函数作用域)。 * 块级作用域:变量只在声明它的 {} 内部可访问(let/const 是块级作用域,{} 包括 if/for/while/ 普通代码块)。 * 变量提升:JS 引擎在执行代码前,会把变量声明 “提升” 到当前作用域顶部(但赋值不会提升)。 二、逐个拆解 + 对比 1. var(ES5 语法) var 是 ES5 中声明变量的方式,特性如下:

By Ne0inhk
2025最新版 Android Studio安装及组件配置(SDK、JDK、Gradle)

2025最新版 Android Studio安装及组件配置(SDK、JDK、Gradle)

目录 * 原生 Android 简介 * Android Studio必备组件 * 一、Android Studio安装 * 二、Android SDK 配置 * 三、JDK 配置(选做) * 四、Gradle 配置 * 五、新项目测试 原生 Android 简介 Android 是由 Google 开发的移动操作系统,而“原生 Android 开发”指的是直接使用 Java 或 Kotlin 语言,以及 Android SDK,来为这个操作系统构建应用程序。是深耕 Android 生态、追求极致性能和系统集成的选择,其市场份额和应用基础极为庞大。 Android Studio必备组件 在安装之前我们必须要清楚原生Android开发,

By Ne0inhk
SpringBoot+Vue web药店管理系统平台完整项目源码+SQL脚本+接口文档【Java Web毕设】

SpringBoot+Vue web药店管理系统平台完整项目源码+SQL脚本+接口文档【Java Web毕设】

系统架构设计### 摘要 随着信息技术的飞速发展,传统药店管理模式逐渐暴露出效率低下、数据管理混乱等问题。药店在日常运营中涉及药品库存管理、销售记录、客户信息等多方面数据,传统的人工记录方式不仅耗时耗力,还容易出现错误。为了提高药店的管理效率和服务质量,开发一套基于现代Web技术的药店管理系统显得尤为重要。该系统能够实现药品信息的数字化管理,优化库存流转,提升销售效率,并为用户提供便捷的查询和购买体验。关键词:药店管理、数字化、效率提升、SpringBoot、Vue。 本系统采用前后端分离架构,后端基于SpringBoot框架实现,提供RESTful API接口,前端使用Vue.js框架构建用户界面,确保系统的高效性和可扩展性。系统主要功能包括药品信息管理、库存监控、销售记录统计、会员管理以及数据报表生成等。通过Spring Security实现用户权限控制,确保数据安全性;利用MyBatis作为持久层框架,优化数据库操作效率。系统还提供了完善的接口文档,便于后续功能扩展和维护。关键词:SpringBoot、Vue.js、RESTful API、权限控制、MyBatis。 数据表

By Ne0inhk