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

相关推荐
Long_poem16 分钟前
【自学笔记】Spring Boot框架技术基础知识点总览-持续更新
spring boot·笔记·后端
望获linux1 小时前
如何在望获实时 Linux & 京博航友善 NanoPC-T6 上部署 Docker
linux·运维·服务器·docker·eureka·开源软件
小白电脑技术1 小时前
Docker小雅Emby全家桶配置夸克网盘Cookie教程
docker
人工干智能1 小时前
科普:“docker”与“docker compose”
运维·docker·容器
神马都会亿点点的毛毛张1 小时前
【Docker教程】万字长文详解Docker命令
java·运维·后端·docker·容器
程序员JerrySUN3 小时前
每天设计者模式-1:基础面试题
java·linux·运维·服务器·开发语言·python·docker
Niuguangshuo3 小时前
Python 单例模式笔记
笔记·python·单例模式
hjnjmjkj4 小时前
基于windows的docker-desktop安装kubenetes以及dashboard
docker·容器·kubernetes
Libby博仙4 小时前
docker 改了镜像源为阿里云,还是下载失败
阿里云·docker·容器
心无旁骛~5 小时前
Git笔记汇总,持续更新~
笔记·git