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

Docker 基础入门教程:容器化技术完全指南

目录

    • 引言
    • 一、Docker 概述与核心概念
      • 核心组件:
      • 与传统虚拟机的区别:
    • 二、Docker 安装与环境准备
      • 2.1 安装 Docker
      • 2.2 验证安装
    • 三、Docker 基础命令详解
      • 3.1 镜像管理命令
      • 3.2 容器管理命令
    • 四、Dockerfile 详解与最佳实践
      • 4.1 基本语法
      • 4.2 重要指令说明
      • 4.3 构建镜像
    • 五、实用案例:部署 Web 应用
      • 5.1 Flask 应用示例
      • 5.2 构建和运行
    • 六、Docker Compose 简介
      • 6.1 docker-compose.yml 示例
      • 6.2 Compose 命令
    • 七、数据持久化与卷管理
      • 7.1 数据卷类型
      • 7.2 卷管理示例
    • 八、网络配置
      • 8.1 Docker 网络类型
      • 8.2 自定义网络
    • 九、安全最佳实践
      • 9.1 安全原则
      • 9.2 安全配置示例
    • 十、总结

引言

Docker 是现代软件开发和部署的核心技术之一,它通过容器化技术彻底改变了应用程序的打包、分发和运行方式。本文将带你深入了解 Docker 的基本概念、核心组件和实际应用,帮助你掌握这一重要的容器化技术。

一、Docker 概述与核心概念

Docker 是一个开源的容器化平台,它允许开发者将应用程序及其依赖项打包到轻量级、可移植的容器中。与传统的虚拟机相比,Docker 容器更加轻便,启动更快,资源利用率更高。

核心组件:

  • Docker Engine: Docker 的核心组件,负责创建和管理容器
  • Docker Images: 只读模板,用于创建容器
  • Docker Containers: 镜像的运行实例
  • Dockerfile: 构建镜像的脚本文件
  • Docker Registry: 存储和分发镜像的服务

与传统虚拟机的区别:

传统虚拟机: 应用 -> 操作系统 -> Hypervisor -> 物理硬件 Docker容器: 应用 -> Docker Engine -> 操作系统 -> 物理硬件

二、Docker 安装与环境准备

2.1 安装 Docker

在 Ubuntu 上安装 Docker:

# 更新包索引sudoapt-getupdate# 安装必要的包sudoapt-getinstall\ca-certificates\curl\gnupg\lsb-release# 添加 Docker 官方 GPG 密钥sudomkdir-p /etc/apt/keyringscurl-fsSL https://download.docker.com/linux/ubuntu/gpg|sudogpg --dearmor -o /etc/apt/keyrings/docker.gpg# 设置仓库echo\"deb [arch=$(dpkg --print-architecture)signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \$(lsb_release -cs)stable"|sudotee/etc/apt/sources.list.d/docker.list>/dev/null# 安装 Docker Enginesudoapt-getupdatesudoapt-getinstalldocker-ce docker-ce-cli containerd.io docker-compose-plugin

2.2 验证安装

docker--versiondockerrun hello-world

三、Docker 基础命令详解

3.1 镜像管理命令

# 搜索镜像dockersearch nginx# 拉取镜像dockerpull nginx:latest# 查看本地镜像dockerimages# 删除镜像dockerrmi nginx

3.2 容器管理命令

# 运行容器dockerrun -d -p8080:80 --name my-nginx nginx# 查看运行中的容器dockerps# 查看所有容器(包括停止的)dockerps-a# 启动、停止、重启容器dockerstart my-nginxdockerstop my-nginxdockerrestart my-nginx# 进入容器dockerexec-it my-nginx /bin/bash# 查看容器日志dockerlogs my-nginx

四、Dockerfile 详解与最佳实践

Dockerfile 是构建 Docker 镜像的脚本文件,它包含了一系列指令来描述如何构建镜像。

4.1 基本语法

# 示例:Node.js 应用的 Dockerfile FROM node:18-alpine # 设置工作目录 WORKDIR /app # 复制 package.json 和 package-lock.json COPY package*.json ./ # 安装依赖 RUN npm ci --only=production # 复制应用源代码 COPY . . # 暴露端口 EXPOSE 3000 # 创建非 root 用户 RUN addgroup -g 1001 -S nodejs RUN adduser -S nextjs -u 1001 # 设置文件权限 RUN chown -R nextjs:nodejs /app USER nextjs # 启动命令 CMD ["npm", "start"]

4.2 重要指令说明

  • FROM: 指定基础镜像
  • RUN: 执行命令
  • COPY: 复制文件到容器
  • ADD: 类似 COPY,但支持远程 URL 和自动解压
  • WORKDIR: 设置工作目录
  • EXPOSE: 声明暴露端口
  • CMD: 指定容器启动时执行的命令
  • ENTRYPOINT: 配置容器启动时运行的命令

4.3 构建镜像

# 构建镜像dockerbuild -t my-app:latest.# 指定 Dockerfile 路径dockerbuild -f Dockerfile.prod -t my-app:prod.

五、实用案例:部署 Web 应用

5.1 Flask 应用示例

创建一个简单的 Flask 应用:

app.py

fromflaskimportFlask app=Flask(__name__)@app.route('/')defhello():return'<h1>Hello from Docker!</h1><p>This is a Flask app running in Docker.</p>'@app.route('/health')defhealth():return{'status':'healthy'}if__name__=='__main__':app.run(host='0.0.0.0',port=5000,debug=True)

requirements.txt

Flask==2.3.3

Dockerfile

FROM python:3.11-slim # 设置工作目录 WORKDIR /app # 复制依赖文件 COPY requirements.txt . # 安装依赖 RUN pip install --no-cache-dir -r requirements.txt # 复制应用代码 COPY . . # 暴露端口 EXPOSE 5000 # 启动命令 CMD ["python", "app.py"]

5.2 构建和运行

# 构建镜像dockerbuild -t flask-app.# 运行容器dockerrun -d -p5000:5000 --name my-flask-app flask-app# 验证运行curlhttp://localhost:5000

六、Docker Compose 简介

Docker Compose 是用于定义和运行多容器 Docker 应用的工具。

6.1 docker-compose.yml 示例

version:'3.8'services:web:build:.ports:-"5000:5000"volumes:-.:/appenvironment:-FLASK_ENV=developmentdepends_on:-redisredis:image:redis:alpineports:-"6379:6379"

6.2 Compose 命令

# 启动服务docker-composeup -d# 查看服务状态docker-composeps# 查看日志docker-composelogs# 停止服务docker-composedown

七、数据持久化与卷管理

7.1 数据卷类型

  • 命名卷:docker volume create my-volume
  • 绑定挂载:-v /host/path:/container/path
  • 临时文件系统:--tmpfs

7.2 卷管理示例

# 创建命名卷dockervolume create mysql-data# 使用命名卷运行 MySQLdockerrun -d\--name mysql-container\-eMYSQL_ROOT_PASSWORD=rootpassword\-v mysql-data:/var/lib/mysql\mysql:8.0# 检查卷dockervolumelsdockervolume inspect mysql-data

八、网络配置

8.1 Docker 网络类型

  • Bridge: 默认网络类型
  • Host: 直接使用主机网络
  • None: 无网络连接

8.2 自定义网络

# 创建自定义网络dockernetwork create my-network# 运行容器并连接到自定义网络dockerrun -d --network my-network --name web-server nginxdockerrun -d --network my-network --name app-server my-app# 查看网络dockernetworklsdockernetwork inspect my-network

九、安全最佳实践

9.1 安全原则

  • 使用非 root 用户运行容器
  • 限制容器权限
  • 定期更新基础镜像
  • 使用官方镜像

9.2 安全配置示例

FROM node:18-alpine # 创建应用用户 RUN addgroup -g 1001 -S appuser && \ adduser -S appuser -u 1001 -G appuser WORKDIR /app COPY package*.json ./ RUN npm ci --only=production && \ chown -R appuser:appuser /app USER appuser COPY --chown=appuser:appuser . . EXPOSE 3000 CMD ["npm", "start"]

十、总结

Docker 为我们提供了一种标准化的方式来打包、分发和运行应用程序。通过掌握 Docker 的基本概念和操作,你可以:

  1. 创建可移植的应用环境
  2. 简化开发和部署流程
  3. 提高资源利用率
  4. 实现微服务架构

随着实践经验的积累,你将能够更好地利用 Docker 的强大功能来构建和管理现代化的应用程序。


http://www.jsqmd.com/news/344023/

相关文章:

  • 2026年高性价比厚板柔性折弯中心供应商深度评估 - 2026年企业推荐榜
  • 华为HCCDA-AI人工智能入门级开发者题库(带详细解析)
  • 非标定制复合机床厂家哪家好?2026年权威榜单:非标定制复合机床生产厂家/数控车铣复合机床厂家TOP推荐 - 栗子测评
  • 2026必藏:免费AI搜索优化监测工具,GEO优化少走弯路
  • 通过云服务 快速体验 TDengine
  • 《Netcode框架灵活与性能协同设计指南》
  • Apptio:智能自动化规模化需要财务严谨性
  • 187.三段式状态机的第二段组合always块逻辑要用阻塞赋值=,不能用<=会出bug
  • WPS2023专业增强版-v12.1.0.23542-精简无用组件和功能 最小内存和磁盘空间占用,文档秒开
  • Soul 开源实时数字人模型,0.87s 亚秒级延时;DeepL 发布 Voice API,支持实时语音到语音翻译丨日报
  • 意大利比萨大学:让AI神经网络高效处理信息的新技术ParalESN
  • 听完冬姐的武汉“扫楼”复盘,我才真正看懂:中小企业的数据,为什么最需要松鼠备份
  • libarchive: 一个几乎可以解压所有压缩文件的C语言库
  • AI图像检测器“视觉盲区“:中科院揭示现有技术如何被轻松“欺骗“
  • 2026年评价高的二手集装箱转让热门推荐榜 - 行业平台推荐
  • Firefox浏览器新增AI功能但可选择关闭
  • 2026年热门的二手集装箱出售客户信赖推荐 - 行业平台推荐
  • 崇岸大学团队揭秘:AI评审员到底可不可靠?
  • 超越ChatGPT:知识图谱如何让大模型更聪明、更可靠(必藏指南)
  • 纯技术干货:多卡种兼容读卡器(DAIC-MJ-RW)通用性说明及对接数据格式+二次开发数据协议SDK。通用性:多奥门禁控制器/考勤机/智能通道门禁控制器/消费机/在线巡更读头/梯控主板/电子班牌/等
  • 加州大学欧文分校发明“内部监控器“:让大模型自己识别胡说八道
  • 谷歌联合医疗机构启动全国性AI虚拟医疗随机对照研究
  • 云成本清算:CIO们的云计算成本困境
  • 让多图对话AI不再“搞混“:首尔多所大学发现分隔符背后的秘密
  • 2026石笼网防护网源头厂商甄选:格宾石笼网生产厂家+格宾网源头厂家+镀锌格宾网厂家合集 - 栗子测评
  • ByteDance研究突破:让AI训练像养花一样“循序渐进“成长
  • Xcode 26.3正式支持智能体编码功能
  • 2026电焊石笼网源头工厂推荐:电焊石笼网生产厂家,包塑石笼网源头厂家选择指南 - 栗子测评
  • 智能门锁口碑加盟哪家好?2026智能门锁/指纹锁源头厂家靠谱品牌推荐实力榜单出炉 - 栗子测评
  • 石笼网哪家好?2026安平石笼网厂家:雷诺护垫生产厂商+景观石笼网厂商+加筋石笼网源头厂家实力榜单 - 栗子测评