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 用户名/仓库名:标签
相关推荐
CS_浮鱼3 小时前
【Linux】进程概念
linux·运维·服务器
青柚~5 小时前
【鲲鹏服务器麒麟系统arm架构部署docker】
服务器·arm开发·docker·架构
人工智能训练5 小时前
Ubuntu中如何进入root用户
linux·运维·服务器·人工智能·ubuntu·ai编程·root
tianshiyeben5 小时前
WGCLOUD监控系统使用指南 - 告警消息整理完整版
linux·运维·服务器·系统安全·zabbix
喜欢你,还有大家5 小时前
Docker-存储
运维·docker·容器
暂时先用这个名字5 小时前
信创时代下,PHP/MySQL应用的平滑迁移与运维管理升级(AI整理)
运维·mysql·php·信创·国产化·国产·迁移
Lucis__6 小时前
STL设计模式探秘:容器适配器&仿函数
c++·容器·stl·仿函数
CS_浮鱼6 小时前
【Linux】进程控制
linux·运维·网络
人工智能训练7 小时前
Docker中容器的备份方法和步骤
linux·运维·人工智能·ubuntu·docker·容器·nvidia