Docker 入门:什么是 Docker 及其核心概念

1. 什么是 Docker?

1.1 Docker 概述

Docker 是一个 轻量级的容器化技术,用于打包、分发和运行应用程序。它提供了一种标准化的方式,将应用及其所有依赖项打包到一个 可移植的容器(Container) 中,使应用可以在任何环境中 一致地运行

1.2 Docker 的核心特点

轻量级:Docker 容器比传统虚拟机更小巧,启动速度快。
可移植性:容器可以运行在本地、云端、服务器、开发环境等任何地方。
一致性:消除“在我电脑上可以运行”的问题,确保在不同环境下的行为一致。
隔离性:每个容器运行在独立的环境中,互不干扰。
快速部署:使用 Docker 可以一键启动应用,提升 CI/CD 效率。


2. Docker vs 传统虚拟机

2.1 Docker 容器与虚拟机的区别

特性 Docker 容器 传统虚拟机(VM)
启动速度 秒级 分钟级
资源占用 共享主机内核,占用更少 每个 VM 运行完整 OS,占用更多
性能 接近物理机 比容器慢
隔离性 进程级隔离(共享内核) 完整 OS 级别隔离
可移植性 支持本地、云端、不同系统间运行 不同平台之间迁移复杂

2.2 Docker 容器的运行架构

Docker 不需要运行完整的操作系统,它使用 宿主机(Host)内核,容器仅包含应用和依赖,启动速度更快,资源占用更少。

Docker 运行架构

+-----------------------------+
|  宿主机操作系统 (Host OS)   |
+-----------------------------+
|  Docker 引擎 (Docker Daemon) |
+-----------------------------+
|  容器1  |  容器2  |  容器3  |
| (App1)  | (App2)  | (App3)  |
+-----------------------------+

3. Docker 的核心概念

Docker 由多个核心组件组成,理解这些组件可以帮助我们更好地使用 Docker。

3.1 镜像(Image)

  • Docker 镜像是一个包含应用及其依赖的 只读模板,用于创建容器。
  • 镜像类似于 虚拟机的 ISO 文件,可以从 Docker Hub 下载或自行构建。
  • 常见命令
    docker pull ubuntu  # 从 Docker Hub 下载 Ubuntu 镜像
    docker images       # 查看本地镜像
    docker rmi ubuntu   # 删除 Ubuntu 镜像
    

3.2 容器(Container)

  • Docker 容器是镜像的运行实例,可以被启动、停止、删除,并保持隔离性。
  • 容器提供了一种 轻量级、可移植的运行环境,不会影响宿主机系统。
  • 常见命令
    docker run -d --name my-app nginx  # 以守护进程方式运行 Nginx 容器
    docker ps                           # 查看运行中的容器
    docker stop my-app                   # 停止容器
    docker rm my-app                      # 删除容器
    

3.3 容器仓库(Registry)

  • Docker Registry 用于存储和分发 Docker 镜像。
  • Docker Hub 是官方的公共仓库,私有仓库(如阿里云、Harbor)可以存储企业镜像。
  • 常见命令
    docker push myrepo/myimage:latest  # 推送镜像到远程仓库
    docker pull myrepo/myimage:latest  # 从远程仓库拉取镜像
    

3.4 Dockerfile

  • Dockerfile 是用于构建 Docker 镜像的脚本,它定义了镜像的构建步骤(如安装软件、复制文件等)。
  • 示例 Dockerfile
    # 使用 Ubuntu 作为基础镜像
    FROM ubuntu:20.04
    
    # 安装 Nginx
    RUN apt update && apt install -y nginx
    
    # 复制本地文件到容器
    COPY index.html /var/www/html/
    
    # 暴露 80 端口
    EXPOSE 80
    
    # 启动 Nginx
    CMD ["nginx", "-g", "daemon off;"]
    
  • 构建和运行镜像
    docker build -t my-nginx .
    docker run -d -p 8080:80 my-nginx
    

3.5 Docker Compose

  • Docker Compose 用于管理多个容器,可以在 docker-compose.yml 文件中定义多个服务。
  • 示例 docker-compose.yml
    version: "3.8"
    services:
      web:
        image: nginx
        ports:
          - "8080:80"
      db:
        image: mysql
        environment:
          MYSQL_ROOT_PASSWORD: root
    
  • 启动服务
    docker-compose up -d
    

4. Docker 的实际应用场景

1. 轻量级开发环境

  • 运行 Python / Node.js / Java 应用,避免安装一堆依赖:
    docker run -it --rm python:3.9 bash
    

2. 微服务架构

  • 使用 Docker 容器化微服务,使服务隔离、快速部署。
  • 结合 Kubernetes 进行容器编排,实现自动伸缩。

3. 持续集成(CI/CD)

  • 结合 Jenkins / GitLab CI,实现自动化构建和测试:
    stages:
      - build
      - deploy
    build:
      script:
        - docker build -t my-app .
        - docker push myrepo/my-app
    

4. 运行数据库

  • 轻松启动 MySQL、Redis、MongoDB:
    docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 mysql
    

5. 运行 Web 服务器

  • 快速运行一个 Nginx 服务器:
    docker run -d -p 80:80 nginx
    

5. 常用 Docker 命令总结

命令 作用
docker pull 下载镜像
docker images 查看本地镜像
docker rmi 删除镜像
docker run -d -p 8080:80 nginx 启动 Nginx 容器
docker ps 查看运行中的容器
docker stop 停止容器
docker rm 删除容器
docker exec -it 容器ID bash 进入容器
docker logs 容器ID 查看容器日志
docker build -t my-app . 构建镜像
docker-compose up -d 运行 docker-compose.yml

6. 总结

Docker 是一种轻量级的容器化技术,使应用开发、测试和部署更高效。
Docker 容器比传统虚拟机更快、更小,支持 CI/CD、微服务、数据库管理等多种场景。
掌握 Docker 的核心概念(镜像、容器、Dockerfile、Compose)是使用 Docker 的关键。
无论是开发者还是 DevOps,Docker 都是必备的技能!

你可能感兴趣的:(docker,docker,容器)