Linux Docker 安装与使用详细教程

一、Docker 概述

1.1 什么是 Docker?

Docker 是一个开源的应用容器引擎,基于 Go 语言开发并遵从 Apache2.0 协议开源。它可以让开发者将应用及其依赖打包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,实现虚拟化。

Docker 的核心价值:一次构建、随处运行

  • 更快速的应用交付和部署
  • 更便捷的升级和扩缩容
  • 更简单的系统运维
  • 更高效的计算资源利用

1.2 Docker 核心概念

概念 说明 类比
镜像 (Image) 只读的模板,用于创建容器 类(面向对象)
容器 (Container) 镜像的运行实例,可独立运行应用 对象(面向对象)
仓库 (Repository) 集中存放镜像的场所 代码仓库

Docker 架构组件

  • Docker 主机 (Host):执行 Docker 守护进程和容器的物理或虚拟机
  • Docker 客户端 (Client):通过命令行与 Docker 守护进程通信
  • Docker Registry:存储镜像的服务,如 Docker Hub、阿里云镜像仓库

二、 环境准备与卸载旧版本

系统要求

Docker 支持以下 64 位 Linux 发行版:

  • CentOS 7/8 及更高版本
  • Ubuntu 16.04 及更高版本
  • Debian、Fedora 等主流发行版

在安装之前,建议先卸载系统中可能存在的旧版本 Docker,以避免冲突。

复制代码
# 更新包索引
sudo apt-get update  # Ubuntu/Debian
# 或
sudo yum update      # CentOS/RHEL

# 卸载可能存在的旧版本
sudo apt-get remove -y docker docker-engine docker.io containerd runc
# 或 CentOS 命令:
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

三、 安装 Docker 引擎

根据你的 Linux 发行版,选择以下任一种方式进行安装。

方法 A:Ubuntu/Debian 安装步骤

复制代码
# 1. 安装依赖包
sudo apt-get install -y ca-certificates curl gnupg lsb-release

# 2. 添加官方 GPG 密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 3. 设置稳定版仓库
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 4. 安装 Docker Engine、CLI、Containerd
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

方法 B:CentOS/RHEL 安装步骤

复制代码
# 1. 安装 yum-utils 工具
sudo yum install -y yum-utils

# 2. 配置 Docker 稳定版仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 3. 安装 Docker 引擎及插件
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

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

方法 C:一键脚本安装(通用推荐)

如果不想手动配置,可以使用官方或国内源的一键脚本:

复制代码
# 官方脚本(海外服务器使用)
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# 阿里云脚本(国内推荐)
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

四、配置镜像加速(推荐)

由于 Docker Hub 的官方镜像位于海外,国内拉取镜像速度较慢。建议配置阿里云或华为云的镜像加速器。

  1. 获取加速器地址

    • 登录 阿里云容器镜像服务控制台
    • 在"实例设置"或"镜像工具"中找到"镜像加速器",复制你的专属地址(如 https://xxxx.mirror.aliyuncs.com)。
  2. 配置 Docker Daemon

    创建或编辑配置文件 /etc/docker/daemon.json

    复制代码
    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": [
        "https://xxxx.mirror.aliyuncs.com",  // 替换为你的阿里云加速地址
        "https://docker.mirrors.ustc.edu.cn", // 中科大备用
        "https://hub-mirror.c.163.com"        // 网易备用
      ]
    }
    EOF
  3. 重启 Docker 生效

    复制代码
    sudo systemctl daemon-reload
    sudo systemctl restart docker

五、免 sudo 权限配置

为了避免每次运行 docker 命令都需要加 sudo,将当前用户加入 docker 用户组:

复制代码
# 创建 docker 组(如果不存在)
sudo groupadd docker

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

# 刷新组权限(或重新登录终端)
newgrp docker

六、核心概念与常用命令

Docker 的核心概念包括 镜像 (Image)容器 (Container)仓库 (Repository)

镜像管理命令

命令 说明 示例
docker images 查看本地所有镜像 docker images
docker pull 从仓库拉取镜像 docker pull nginx:latest
docker search 搜索镜像 docker search redis
docker rmi 删除本地镜像 docker rmi nginx

容器管理命令

命令 说明 示例
docker run 创建并启动容器 docker run -d -p 80:80 --name my-nginx nginx
docker ps 查看运行中的容器 docker ps
docker ps -a 查看所有容器(含停止的) docker ps -a
docker stop 停止容器 docker stop my-nginx
docker start 启动已停止的容器 docker start my-nginx
docker rm 删除已停止的容器 docker rm my-nginx
docker exec 进入运行中的容器 docker exec -it my-nginx /bin/bash

七、实战:部署 Nginx 服务

通过一个简单的例子验证安装是否成功。

  1. 拉取 Nginx 镜像

    复制代码
    docker pull nginx:latest
  2. 启动容器

    复制代码
    docker run -d \
      --name my-web \
      -p 8080:80 \
      -v $(pwd)/html:/usr/share/nginx/html \
      nginx
    • -d:后台守护进程运行。
    • -p 8080:80:将宿主机的 8080 端口映射到容器的 80 端口。
    • -v:挂载本地目录,实现数据持久化。
  3. 验证

    在浏览器访问 http://<你的服务器IP>:8080,如果看到 "Welcome to nginx!" 页面,说明部署成功。

八、进阶:使用 Docker Compose

对于微服务架构,通常需要同时启动多个容器(如 Web + MySQL)。使用 Docker Compose 可以通过一个 YAML 文件定义和运行多容器应用。

1、安装 Docker Compose 插件(通常在安装引擎时已包含,如未安装)

复制代码
# 安装最新版 Compose 插件
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
curl -SL https://github.com/docker/compose/releases/latest/download/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose

2、创建 docker-compose.yml

复制代码
version: '3'
services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: example

3、启动应用

复制代码
docker compose up -d

这将以后台模式启动 Nginx 和 MySQL 两个容器。

九、常见问题排查

  • 权限被拒绝 :如果提示 Got permission denied while trying to connect to the Docker daemon socket,请检查是否执行了 sudo usermod -aG docker $USER 并重新登录终端。
  • 镜像拉取慢 :请务必检查 /etc/docker/daemon.json 文件中的镜像加速器配置是否正确,并执行了 systemctl restart docker
  • 端口冲突 :如果提示 port is already allocated,说明宿主机端口被占用,请更换映射端口(如 -p 8081:80)。
相关推荐
来一颗砂糖橘1 天前
负载均衡的多维深度解析
运维·负载均衡
楠奕1 天前
CentOS7安装GoldenDB单机搭建及常见报错解决方案
linux·运维·服务器
GCTTTTTT1 天前
远程服务器走本地代理
运维·服务器
剑锋所指,所向披靡!1 天前
Linux常用指令(2)
linux·运维·服务器
不愿透露姓名的大鹏1 天前
Oracle归档日志爆满急救指南
linux·数据库·oracle·dba
飞Link1 天前
逆向兼容的桥梁:3to2 自动化降级工具实现全解析
运维·开发语言·python·自动化
W.W.H.1 天前
嵌入式常见的面试题1
linux·网络·经验分享·网络协议·tcp/ip
木白CPP1 天前
DMA-Buffer内核驱动API文档
linux
HXQ_晴天1 天前
Linux 系统的交互式进程监控工具htop
linux·服务器·网络
song8581 天前
韦东山开发手册阅读笔记(五)
linux