Docker基础

Docker基础

概述

Docker 是一个开源的容器化平台,将应用及其依赖打包为轻量级容器,实现开发、交付和部署的标准化。本文档涵盖 Docker 的核心概念、安装配置、常用命令和磁盘清理等基础操作。


核心概念

概念 定义 类比
镜像(Image) 应用的“安装包”,包含代码、依赖、环境配置 面向对象中的类
容器(Container) 镜像的“运行实例”,独立可执行环境 面向对象中的实例
仓库(Repository) 存放镜像的仓库(官方为 Docker Hub) GitHub 代码仓库

Docker 安装

CentOS 7 安装

# 1. 卸载旧版本
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

# 2. 安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2

# 3. 设置 Docker 仓库(阿里云镜像)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 4. 安装 Docker CE
yum install -y docker-ce docker-ce-cli containerd.io

# 5. 启动并设置开机自启
systemctl start docker
systemctl enable docker

# 6. 验证安装
docker --version

Ubuntu/Debian 安装

# 1. 更新包索引
apt update

# 2. 安装依赖包
apt install -y ca-certificates curl gnupg lsb-release

# 3. 添加 Docker 官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 4. 添加 Docker 仓库(阿里云镜像)
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null

# 5. 安装 Docker
apt update
apt install -y docker-ce docker-ce-cli containerd.io

# 6. 启动并验证
systemctl start docker
systemctl enable docker
docker --version

配置国内镜像加速

# 1. 创建配置目录
mkdir -p /etc/docker

# 2. 配置镜像加速地址
cat > /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": [
    "https://docker.1ms.run",
    "https://docker.m.ixdev.cn",
    "http://docker.m.daocloud.io",
    "https://dockerproxy.net"
  ],
  "log-opts": {
    "max-size": "100m",
    "max-file": "10"
  }
}
EOF

# 3. 重启 Docker
systemctl daemon-reload
systemctl restart docker

# 4. 验证加速是否生效
docker info | grep "Registry Mirrors"

核心命令速查

镜像管理

命令 说明 示例
docker pull 拉取镜像 docker pull nginx:1.24
docker images 查看本地镜像 docker images
docker rmi 删除镜像 docker rmi nginx:1.24
docker search 搜索镜像 docker search mysql
docker save 导出镜像为文件 docker save -o nginx.tar nginx:1.24
docker load 从文件导入镜像 docker load -i nginx.tar

容器管理

命令 说明 示例
docker ps 查看运行中容器 docker ps -a(查看所有)
docker run 创建并启动容器 docker run -d --name nginx nginx
docker start 启动已停止容器 docker start nginx
docker stop 停止容器 docker stop nginx
docker restart 重启容器 docker restart nginx
docker exec 进入容器执行命令 docker exec -it nginx /bin/bash
docker logs 查看容器日志 docker logs -f nginx
docker rm 删除容器 docker rm nginx
docker inspect 查看容器详情 docker inspect nginx

常用运行示例

# 运行 Nginx 容器(后台运行,端口映射)
docker run -d --name nginx -p 80:80 nginx

# 运行 MySQL 容器(带环境变量)
docker run -d --name mysql \
  -e MYSQL_ROOT_PASSWORD=123456 \
  -e MYSQL_DATABASE=app \
  -p 3306:3306 \
  mysql:8.0

# 运行 Redis 容器(带密码)
docker run -d --name redis \
  --restart always \
  -p 6379:6379 \
  redis --requirepass 123456

# 运行 Ubuntu 容器(交互式,退出即销毁)
docker run -it --rm ubuntu /bin/bash

# 运行容器并挂载卷
docker run -d --name app \
  -v /data/app:/app \
  -p 8080:8080 \
  my-app:latest

Docker Compose 基础

# 启动所有服务
docker compose up -d

# 停止所有服务
docker compose stop

# 查看服务状态
docker compose ps

# 查看日志
docker compose logs -f

# 停止并删除所有资源
docker compose down

# 停止并删除卷
docker compose down -v

清理磁盘空间

# 清理停止的容器
docker container prune

# 清理无用镜像
docker image prune -a

# 清理无用数据卷
docker volume prune

# 清理无用网络
docker network prune

# 一键清理所有无用资源
docker system prune -af

# 查看磁盘使用情况
docker system df

常见问题与注意事项

拉取镜像失败

  1. 确认镜像加速地址配置正确
  2. 检查网络连接
  3. 尝试更换镜像源

端口被占用

# 查看端口占用
netstat -tlnp | grep 8080

# 修改映射端口
docker run -p 8081:80 nginx

容器无法停止

# 强制停止
docker kill <容器名>

# 强制删除
docker rm -f <容器名>

磁盘空间不足

# 查看 Docker 磁盘使用
docker system df

# 清理无用资源
docker system prune -af

# 清理镜像构建缓存
docker builder prune -a

免 sudo 执行 Docker

# 将当前用户加入 docker 组
sudo usermod -aG docker $USER

# 重新登录生效
newgrp docker

参考链接