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

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


http://www.kler.cn/a/507037.html

相关文章:

  • 细说STM32F407单片机窗口看门狗WWDG的原理及使用方法
  • Android 高德地图API(新版)
  • 【漏洞分析】DDOS攻防分析
  • STM32-笔记40-BKP(备份寄存器)
  • .net core 中使用AsyncLocal传递变量
  • Linux 服务器挖矿木马防护实战:快速切断、清理与加固20250114
  • wordpress的火车头商品发布接口
  • iOS面试模版
  • 赤店商城系统点餐小程序多门店分销APP共享股东h5源码saas账号独立版全插件全开源
  • 学习threejs,使用OrbitControls相机控制器
  • STM32的集成开发环境STM32CubeIDE安装
  • spark,读取和写入同一张表问题
  • 掌握 TypeScript 的 `Omit` 工具类型:灵活操作对象属性的艺术
  • [Qt]常用控件介绍-布局管理器-QVBoxLayout、QHBoxLayout、QGridLayout、QFormLayout、QSpace控件
  • AI实验室copilot自动化科研,AMD联手约翰霍普金斯大学:成本节约84%!
  • 【JVM-6】JVM 监控工具 jstat 的使用和具体应用案例
  • 【区间DP】【hard】力扣730. 统计不同回文子序列
  • css3网格布局
  • JavaEE:多线程初阶
  • shell安全类脚本(1.屏蔽每分钟访问过多的IP;2.拒绝ssh暴力破解)
  • MySQL基本知识梳理
  • linux上使用update-alternatives来选择软件版本
  • Jenkins+Docker一键打包部署项目!步骤齐全,少走坑路!
  • Vue3中使用组合式API通过路由传值详解
  • 模型参考自适应控制算法介绍及代码例程
  • 【机器学习:十八、更高级的神经网络概念】