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 的世界大门已经打开,欢迎加入容器化开发的行列! 🚀

相关推荐
半导体守望者1 小时前
英福康INFICON VGC501, VGC502, VGC503 单通道、双通道和三通道测量装置
经验分享·笔记·功能测试·自动化·制造
Timmer丿1 小时前
kafka学习笔记(三、消费者Consumer使用教程——配置参数大全及性能调优)
笔记·学习·kafka
Timmer丿1 小时前
kafka学习笔记(三、消费者Consumer使用教程——消费性能多线程提升思考)
笔记·学习·kafka
zwjapple1 小时前
docker创建postgreSql带多个init的sql
docker·postgresql
保持学习ing1 小时前
黑马Java面试笔记之 消息中间件篇(Kafka)
java·笔记·面试·kafka
太空1号2 小时前
飞腾D2000,麒麟系统V10,docker,ubuntu1804,小白入门喂饭级教程
linux·c++·docker
@蓝莓果粒茶2 小时前
LeetCode第244题_最短单词距离II
c++·笔记·学习·算法·leetcode·职场和发展·c#
肥肠可耐的西西公主2 小时前
前端(vue)学习笔记(CLASS 7):vuex
前端·笔记·学习
liux35282 小时前
彻底掌握 Containerd:生产环境安装部署全解析
运维·docker·容器
arui23 小时前
Docker部署与应用、指令
阿里云·docker·容器