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 version和docker 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 version和docker 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 用户名/仓库名:标签
相关推荐
忆挽篱笙歌19 分钟前
makefil
linux·运维·服务器
小小龙学IT35 分钟前
Kubernetes 深度实践:架构、API 与避坑指南
容器·架构·kubernetes
程序员老赵1 小时前
Docker 部署 Dolibarr:轻松搭建开源 ERP/CRM 平台
运维·前端·后端
cws2004012 小时前
监控摄像头选型指南
运维·网络·监控
协皓家具2 小时前
2026年广州岛台吧台椅厂家有啥新变化
大数据·运维·python·devops
OsDepK2 小时前
OSMDE_v1.9.0已加入FTP与shell功能
linux·运维·服务器
和裕2 小时前
定制纸箱刀模费全解析:费用定义与可减免合作场景
大数据·运维·网络·人工智能·算法
吴声子夜歌2 小时前
Nginx应用与运维——Nginx集群负载与配置管理(二)
运维·nginx
硅基手札3 小时前
【Linux内核专栏 11】驱动框架:platform / char / misc / 设备树
linux·运维·服务器
cpolar技术支持3 小时前
外网测试机的异常传不回内网?自托管 Sentry,用 cpolar 打通错误上报链路
python·nginx·docker·cpolar·sentry