No.33 笔记 | Docker入门:基础概念与实用指南

Docker快速入门:基础概念与实用指南


引言:为什么学习Docker?

现代软件开发中,Docker 已成为不可或缺的工具。通过容器化技术,开发者可以快速部署、运行和管理应用。相比传统环境,Docker 以其轻量级、高效率的特点,为开发、测试和生产环境带来了巨大的便利。

本文旨在帮助你快速掌握 Docker 的基础知识和使用技巧,涵盖容器与镜像的基本概念、常用命令以及如何通过 docker-compose 快速管理多容器应用。


1. Docker基础知识

1.1 容器与镜像
  • 镜像(Image) :
    • 一个静态模板,包含应用程序及其运行环境。
    • 类似于虚拟机的快照,打包了所有依赖但未实际运行。
    • 可通过 docker pull 拉取官方或社区提供的镜像。
  • 容器(Container) :
    • 镜像的运行实例,提供隔离的环境。
    • 轻量、高效,启动速度远快于虚拟机。
    • 可通过 docker run 创建和运行。
1.2 容器与虚拟机的区别
特性 容器 虚拟机
启动速度 秒级启动 分钟级启动
运行性能 接近物理机性能 存在虚拟化层性能损耗
磁盘占用 MB 级别 GB 级别
隔离性 进程级隔离,较轻量 完整操作系统级隔离,完全隔离
封装速度 快速打包应用及依赖 打包整个操作系统,较慢

通过上述对比,我们可以看出 Docker 更适合场景化部署和高频开发需求。


2. Docker核心操作

2.1 镜像操作
  • 查看镜像 :docker images
    • 显示本地镜像列表,包括镜像名称、版本、大小等信息。
  • 拉取镜像 :docker pull <镜像名>
    • 例如:docker pull nginx 拉取最新版本的 Nginx 镜像。
  • 删除镜像 :docker rmi <镜像名>
    • 例如:docker rmi nginx 删除本地的 Nginx 镜像。
  • 保存镜像 :docker save -o <文件名>.tar <镜像名>
    • 将镜像打包保存为 tar 文件。
  • 加载镜像 :docker load -i <文件名>.tar
    • 从 tar 文件中加载镜像。
2.2 容器操作
  • 运行容器 :docker run -d --name <容器名> -p <主机端口>:<容器端口> <镜像名>
    • 例如:docker run -d --name nginx -p 80:80 nginx 启动一个 Nginx 容器。
  • 查看容器 :
    • docker ps:查看运行中的容器。
    • docker ps -a:查看所有容器,包括已停止的。
  • 停止容器 :docker stop <容器名>
    • 例如:docker stop nginx 停止 Nginx 容器。
  • 删除容器 :docker rm <容器名>
    • 例如:docker rm nginx 删除 Nginx 容器。
  • 进入容器 :docker exec -it <容器名> bash
    • 进入运行中的容器,进行调试或操作。
2.3 快速命令优化
  • 命令别名 :通过修改 ~/.bashrc,设置常用命令的别名。
    • 示例:alias drun="docker run -d"

3. docker-compose:多容器管理神器

3.1 什么是docker-compose?
  • 定义 :docker-compose 是用于定义和管理多个容器的工具。
  • 优势 :
    • 通过一个简单的 docker-compose.yml 文件定义多容器架构。
    • 快速部署关联应用,如 Web 服务和数据库。
3.2 常用命令
  • 启动容器 :docker-compose up -d
    • 在当前目录下启动所有定义的容器。
  • 停止容器 :docker-compose down
    • 停止并移除所有容器及其关联的网络。
  • 查看容器 :docker-compose ps
    • 列出当前管理的容器状态。
  • 进入容器 :docker-compose exec <服务名> <命令>
    • 例如:docker-compose exec web bash 进入名为 web 的服务容器。
3.3 示例:Nginx 与 Redis 的部署
  1. 创建 docker-compose.yml 文件:

    yaml 复制代码
    version: '3'
    services:
      web:
        image: nginx
        ports:
          - "80:80"
      redis:
        image: redis
  2. 启动服务:在文件所在目录执行 docker-compose up -d。

  3. 验证服务:通过浏览器访问 http://localhost 查看 Nginx 是否正常运行。


4. Vulhub 靶场:实战中的练习场

  • 定义:Vulhub 是一个基于 Docker 的漏洞靶场平台,便于安全研究者学习和演练。
  • 启动方法 :
    1. 下载目标靶场目录。
    2. 在靶场目录下执行 docker-compose up -d。
    3. 通过浏览器访问指定端口,验证靶场是否启动成功。

5. 总结与反思

5.1 为什么选择Docker?
  • 快速:容器启动速度快,资源占用小。
  • 高效:一键部署,解决环境配置难题。
  • 灵活:支持分布式部署和跨平台运行。
5.2 建议与改进
  • 对于初学者,建议从简单的容器启动入手,逐步掌握多容器管理。
  • 在学习过程中多结合实际应用场景,例如搭建 Web 服务或数据库服务,增强理解。

通过本文的学习,你不仅可以掌握 Docker 和 docker-compose 的基本操作,还能快速应用到实际开发和测试中。如果遇到问题,不妨多动手实践,在实践中深化理解。

Docker 的世界大门已经打开,欢迎加入容器化开发的行列! 🚀

相关推荐
江屿风13 小时前
【Plain Language Large Model】【从浏览器到全栈:一课精通Node.js三剑客】流食般投喂
笔记·前端框架·npm·node.js·js·npx
一只大鸽子13 小时前
游戏开发笔记0-Godot启动
笔记·游戏引擎·godot
java_logo13 小时前
Docker 部署 DPanel:轻松搭建轻量容器管理平台
运维·docker·容器·podman·容器管理·dpanel·轩辕镜像
死磕音视频13 小时前
Open WebUI 入门:用 Docker 装上本地对话界面并连接 Ollama
docker·ollama·本地大模型·open webui
分布式存储与RustFS13 小时前
CI 老被 Docker Hub 的 429 卡住,自建 Registry 把镜像搬进内网
运维·docker·开源·镜像仓库·对象存储·ci·rustfs
Nuanyt13 小时前
LeetCode Hot 100 链表专题2 3 题 (Java)
java·笔记·算法·leetcode·链表
asaotomo13 小时前
截图识题、AI 讲解、笔记沉淀:Chrome 扩展体验
前端·chrome·笔记
熊猫钓鱼>_>14 小时前
鸿蒙PC高分屏与键鼠交互适配:DPI缩放、右键菜单一次讲清
开发语言·笔记·华为·ai编程·harmonyos·鸿蒙·鸿蒙心迹
H_BB14 小时前
面试笔记:数据加密和心跳机制
笔记·面试·职场和发展
n1121214 小时前
Docker 容器时区错 8 小时:3 个坑
运维·docker·容器·故障排查·服务器运维·容器时区