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

server/2025/1/18 5:11:15/

在这里插入图片描述

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"

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

dockercompose_83">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: nginxports:- "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.ppmy.cn/server/159267.html

相关文章

Python 如何操作 PDF 文件?

&#x1f496; 欢迎来到我的博客&#xff01; 非常高兴能在这里与您相遇。在这里&#xff0c;您不仅能获得有趣的技术分享&#xff0c;还能感受到轻松愉快的氛围。无论您是编程新手&#xff0c;还是资深开发者&#xff0c;都能在这里找到属于您的知识宝藏&#xff0c;学习和成长…

动手学大数据-2常见的查询优化器

目录 什么是查询优化器 查询优化器分类 Top-downOptimizer Bottom-upOptimizer RBO-关系代数 RBO-优化原则 RBO-列裁剪 RBO-谓词下推 RBO-传递闭包 RBO-RuntimeFilter 小结 CBO&#xff08;Cost-basedOptimizer&#xff09; 概念 CBO-统计信息 CBO-统计信息…

Scala 提取器(Extractor)

Scala 提取器&#xff08;Extractor&#xff09;是一个重要的概念&#xff0c;它主要用于从对象中提取出构造该对象时所用的参数。在 Scala 中&#xff0c;提取器通常是一个带有 unapply 方法的单例对象。这个 unapply 方法是 apply 方法的反向操作&#xff1a;apply 方法接受参…

算法——归并排序(基本思想、java实现、实现图解)

我是一个计算机专业研0的学生卡蒙Camel&#x1f42b;&#x1f42b;&#x1f42b;&#xff08;刚保研&#xff09; 记录每天学习过程&#xff08;主要学习Java、python、人工智能&#xff09;&#xff0c;总结知识点&#xff08;内容来自&#xff1a;自我总结网上借鉴&#xff0…

DNS介绍与部署-Day 01

1. 什么是DNS DNS&#xff08;Domain Name System&#xff09;域名系统&#xff0c;是一种采用客户端/服务器机制&#xff0c;负责实现计算机名称与IP地址转换的系统。DNS作为一种重要的网络服务&#xff0c;既是Internet工作的基础&#xff0c;同时在企业内部网络中也得到了广…

前后端分离开发心得

前后端分离开发是一种软件开发模式&#xff0c;将前端和后端的开发分离开来&#xff0c;使得前端和后端可以独立开发、测试和部署。具体来说&#xff1a; • 前端&#xff1a;负责展示数据和用户交互&#xff0c;使用 HTML、CSS、JavaScript 等技术实现用户界面和交互逻辑&…

向量数据库如何助力Text2SQL处理高基数类别数据

01. 导语 Agent工作流和 LLMs &#xff08;大语言模型&#xff09;的出现&#xff0c;让我们能够以自然语言交互的模式执行复杂的SQL查询&#xff0c;并彻底改变Text2SQL系统的运行方式。其典型代表是如何处理High-Cardinality Categorical Data &#xff08;高基数类别数据&am…

SVM支持向量机

目录 算法原理 数学基础 向量内积&#xff08;向量点乘&#xff09; 范数 对偶问题 拉格朗日乘子法 ​线性可分与线性不可分 线性可分 线性不可分 超平面 超平面的定义 超平面的作用 如何寻找最优的超平面 损失函数求解 软间隔 鲁棒性 核函数 算法优缺点 优点…