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

相关推荐
API_technology39 分钟前
api开发及运用小红书笔记详情api如何获取笔记详情信息
大数据·开发语言·数据库·数据仓库·笔记·爬虫
小卡规划2 小时前
检验统计量与p值笔记
笔记
羊小猪~~5 小时前
MYSQL学习笔记(二):基本的SELECT语句使用(基本、条件、聚合函数查询)
数据库·笔记·sql·学习·mysql·考研·数据分析
周杰伦_Jay5 小时前
Ubuntu20.4和docker终端指令、安装Go环境、安装搜狗输入法、安装WPS2019:保姆级图文详解
linux·python·ubuntu·docker·centos
程思扬5 小时前
Android笔记: 实现点击事件透传到底部
android·前端·windows·经验分享·笔记·科技·ui
macrozheng5 小时前
Jenkins+Docker一键打包部署项目!步骤齐全,少走坑路!
java·spring boot·后端·docker·jenkins
PzZzang26 小时前
dockerfile2.0
docker
雪球不会消失了6 小时前
一文掌握Docker
运维·docker·容器