Docker容器使用手册——入门篇(上)

目录

  • [1. 简介](#1. 简介)
  • [2. 基本概念](#2. 基本概念)
  • [3. 安装与配置](#3. 安装与配置)
  • [4. 容器管理](#4. 容器管理)
  • [5. 镜像管理](#5. 镜像管理)
  • [6. 网络配置](#6. 网络配置)
  • [7. 存储管理](#7. 存储管理)
  • [8. Docker Compose](#8. Docker Compose)
  • [9. 常见问题与解决方案](#9. 常见问题与解决方案)
  • [10. 最佳实践](#10. 最佳实践)
  • 附录:常用命令速查表

1. 简介

1.1 什么是Docker

Docker是一个开源的容器化平台,它允许开发者打包他们的应用及其依赖项到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。

1.2 Docker的优势

  • 简化部署:将应用及其依赖打包到容器中,保证环境一致性
  • 隔离性:容器之间相互隔离,避免环境冲突
  • 轻量级:容器共享主机内核,启动速度快,资源占用少
  • 可移植性:容器可以在不同环境中一致运行
  • 扩展性:易于实现容器编排和自动扩展
  • 版本控制:可以对容器镜像进行版本管理

1.3 Docker的应用场景

  • 应用程序容器化
  • 微服务架构实现
  • 持续集成/持续部署(CI/CD)
  • 开发环境一致性保障
  • 高可用系统构建
  • 测试环境快速搭建

2. 基本概念

2.1 容器(Container)

容器是Docker的基本执行单元,是镜像的运行时实例。容器包含应用及其依赖,但共享主机操作系统内核。

2.2 镜像(Image)

镜像是一个只读的模板,包含运行容器所需的所有文件系统结构和内容。镜像可以基于其他镜像构建,通过Dockerfile定义构建过程。

2.3 Dockerfile

Dockerfile是一个文本文件,包含构建Docker镜像所需的一系列命令。每个命令在镜像中创建一个新的层。

2.4 仓库(Repository)

仓库是集中存放Docker镜像的地方,可以是公开的(如Docker Hub)或私有的。仓库分为公共仓库和私有仓库。

2.5 注册表(Registry)

注册表是存放仓库的服务器,如Docker Hub是最大的公共注册表。

2.6 卷(Volume)

卷是用于持久化数据的机制,允许数据在容器间共享或在容器停止后保留。

3. 安装与配置

3.1 在Windows上安装Docker

  1. 系统要求

    • Windows 10 64位专业版、企业版或教育版(1607+),或Windows 11
    • 启用Hyper-V和容器功能
    • 至少4GB RAM
  2. 安装步骤

    • Docker官网下载Docker Desktop安装包
    • 运行安装程序,按照提示完成安装
    • 安装完成后重启计算机
  3. 验证安装

    • 打开命令提示符或PowerShell
    • 运行docker versiondocker run hello-world验证安装

3.2 在macOS上安装Docker

  1. 系统要求

    • macOS 11 Big Sur或更高版本
    • 至少4GB RAM
  2. 安装步骤

    • Docker官网下载Docker Desktop for Mac安装包
    • 拖动Docker应用到Applications文件夹
    • 从Applications文件夹启动Docker
  3. 验证安装

    • 打开终端
    • 运行docker versiondocker run hello-world验证安装

3.3 在Linux上安装Docker

  1. Ubuntu/Debian安装

    bash 复制代码
    sudo apt-get update
    sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    sudo apt-get update
    sudo apt-get install docker-ce docker-ce-cli containerd.io
  2. CentOS/RHEL安装

    bash 复制代码
    sudo yum install -y yum-utils
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    sudo yum install docker-ce docker-ce-cli containerd.io
    sudo systemctl start docker
    sudo systemctl enable docker
  3. 验证安装

    bash 复制代码
    sudo docker version
    sudo docker run hello-world

3.4 配置Docker

  1. 配置国内镜像源

    • 编辑/etc/docker/daemon.json(Linux)或在Docker Desktop的设置中配置
    json 复制代码
    {
      "registry-mirrors": [
        "https://docker.mirrors.ustc.edu.cn",
        "https://hub-mirror.c.163.com",
        "https://mirror.baidubce.com"
      ]
    }
    • 重启Docker服务:sudo systemctl restart docker(Linux)或重启Docker Desktop
  2. 配置用户权限

    bash 复制代码
    sudo usermod -aG docker $USER
    • 重新登录以应用更改

4. 容器管理

4.1 创建与运行容器

  1. 基本命令

    bash 复制代码
    docker run [选项] 镜像名 [命令] [参数]
  2. 常用选项

    • -d: 后台运行容器
    • -p 主机端口:容器端口: 端口映射
    • -v 主机路径:容器路径: 挂载卷
    • --name 容器名: 指定容器名称
    • -e 变量名=值: 设置环境变量
    • --restart=always: 设置容器自动重启
  3. 示例

    bash 复制代码
    # 运行一个Nginx容器,映射80端口,命名为my-nginx
    docker run -d -p 80:80 --name my-nginx nginx
    
    # 运行MySQL容器,设置密码,挂载数据卷
    docker run -d -p 3306:3306 --name mysql \
      -e MYSQL_ROOT_PASSWORD=password \
      -v mysql-data:/var/lib/mysql \
      mysql:8.0

4.2 查看容器

  1. 列出所有运行中的容器

    bash 复制代码
    docker ps
  2. 列出所有容器(包括已停止的)

    bash 复制代码
    docker ps -a
  3. 查看容器详情

    bash 复制代码
    docker inspect 容器名或ID
  4. 查看容器日志

    bash 复制代码
    docker logs [选项] 容器名或ID
    # 实时查看日志
    docker logs -f 容器名或ID
  5. 查看容器内进程

    bash 复制代码
    docker top 容器名或ID

4.3 容器的启动、停止、重启

  1. 启动容器

    bash 复制代码
    docker start 容器名或ID
  2. 停止容器

    bash 复制代码
    docker stop 容器名或ID
  3. 重启容器

    bash 复制代码
    docker restart 容器名或ID
  4. 强制停止容器

    bash 复制代码
    docker kill 容器名或ID

4.4 进入容器

  1. 使用exec进入容器(推荐)

    bash 复制代码
    docker exec -it 容器名或ID /bin/bash
    # 对于Alpine基础的容器
    docker exec -it 容器名或ID /bin/sh
  2. 使用attach连接容器

    bash 复制代码
    docker attach 容器名或ID

4.5 删除容器

  1. 删除单个容器

    bash 复制代码
    docker rm 容器名或ID
  2. 强制删除运行中的容器

    bash 复制代码
    docker rm -f 容器名或ID
  3. 删除所有已停止的容器

    bash 复制代码
    docker container prune

5. 镜像管理

5.1 拉取镜像

bash 复制代码
# 拉取最新版本
 docker pull 镜像名
# 拉取指定版本
docker pull 镜像名:标签

# 示例
docker pull nginx:latest
docker pull mysql:5.7

5.2 查看镜像

bash 复制代码
# 列出所有本地镜像
docker images

# 查看镜像详情
docker inspect 镜像名或ID

# 查看镜像历史
docker history 镜像名或ID

5.3 删除镜像

bash 复制代码
# 删除单个镜像
docker rmi 镜像名或ID

# 强制删除镜像
docker rmi -f 镜像名或ID

# 删除所有未使用的镜像
docker image prune -a

5.4 构建镜像

  1. 创建Dockerfile

    dockerfile 复制代码
    # 使用官方Python镜像作为基础镜像
    FROM python:3.9-slim
    
    # 设置工作目录
    WORKDIR /app
    
    # 复制requirements.txt到容器
    COPY requirements.txt .
    
    # 安装依赖
    RUN pip install --no-cache-dir -r requirements.txt
    
    # 复制应用代码
    COPY . .
    
    # 暴露端口
    EXPOSE 5000
    
    # 设置环境变量
    ENV NAME World
    
    # 运行应用
    CMD ["python", "app.py"]
  2. 构建镜像

    bash 复制代码
    docker build -t 镜像名:标签 路径
    # 示例
    docker build -t myapp:v1 .
  3. 构建优化技巧

    • 使用多阶段构建减小镜像体积
    • 按依赖变化频率排序Dockerfile指令
    • 使用.dockerignore文件排除不需要的文件
    • 选择更小的基础镜像(如Alpine)

5.5 推送镜像

  1. 登录Docker Hub

    bash 复制代码
    docker login
  2. 标记镜像

    bash 复制代码
    docker tag 本地镜像名:标签 用户名/仓库名:标签
  3. 推送镜像

    bash 复制代码
    docker push 用户名/仓库名:标签
相关推荐
Joy T5 小时前
【AI运维】02 云上基础部署:ECS、OSS 与 Nginx 的体系化理解与实践
运维·nginx
石小千6 小时前
Nexus升级(3.63.0--3.87.1)
运维
魂万劫8 小时前
如何在虚拟机VM上|Linux环境内安装windows
linux·运维·服务器·windows
数字化转型20259 小时前
SAP Signavio 在风机制造行业的深度应用研究
大数据·运维·人工智能
WordPress学习笔记9 小时前
wordpress根据分类ID调用分类名称和分类描述
运维·wordpress
qq_455760859 小时前
docker - 镜像、存储卷和网络深入理解
运维·docker·容器
一只废狗狗狗狗狗狗狗狗狗11 小时前
基于docker desktop的hadoop集群结点启动失败问题
hadoop·docker·docker desktop
九思x11 小时前
Linux 系统安装 JDK 17
linux·运维
HIT_Weston11 小时前
77、【Ubuntu】【Hugo】搭建私人博客:Detached HEAD
linux·运维·ubuntu
再睡一夏就好12 小时前
多线程并发编程核心:互斥与同步的深度解析及生产者消费者模型两种实现
linux·运维·服务器·jvm·c++·笔记