Linux上安装Docker

安装Docker的前提虚拟机上已经安装了Linux系统。

以 CentOS 系统为例,重新梳理 Docker 的安装步骤,我会按照 CentOS 官方推荐的标准流程来讲解,确保步骤清晰、可执行,适配 CentOS 7/8/9 版本。

一、CentOS 系统安装 Docker 前置说明

  • 支持的版本:CentOS 7 (64-bit)、CentOS 8 (64-bit)、CentOS 9 (64-bit)
  • 核心要求:系统需启用 cgroupfssystemd,且内核版本 ≥ 3.10

二、Docker具体安装步骤

1. 卸载旧版本(可选但推荐)

如果系统中已安装 Docker 旧版本(docker、docker-common、docker-selinux、docker-engine),先清理:

复制代码
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

注:此命令只会卸载 Docker 程序,不会删除镜像、容器、卷等数据,若需清理数据可手动删除 /var/lib/docker 目录。

2. 设置 Docker 官方仓库

首先安装依赖包,用于配置 HTTPS 仓库:

复制代码
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

然后添加 Docker 官方 yum 仓库(推荐):

复制代码
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

若官方仓库下载慢,可替换为国内镜像源(如阿里云):

复制代码
sudo yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3. 安装 Docker 引擎
  • 安装最新稳定版(推荐新手):

    复制代码
    sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  • 若需安装指定版本(可选):① 先查看可用版本:

    复制代码
    yum list docker-ce --showduplicates | sort -r

    ② 安装指定版本(替换 <VERSION_STRING> 为具体版本,如 26.1.0-1.el7):

    复制代码
    sudo yum install -y docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
4. 启动并设置开机自启 Docker
复制代码
# 启动 Docker 服务
sudo systemctl start docker

# 设置开机自启
sudo systemctl enable docker

# 查看 Docker 运行状态(验证是否启动成功)
sudo systemctl status docker
5. 配置非 root 用户免 sudo 使用 Docker(可选但推荐)

默认只有 root 用户能运行 Docker 命令,配置普通用户免 sudo:

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

# 立即生效(无需注销登录)
newgrp docker
6. 验证安装是否成功

运行官方测试容器,若能正常输出信息则安装完成:

复制代码
docker run hello-world

成功输出示例:包含 "Hello from Docker!" 字样,说明 Docker 已能正常拉取镜像、运行容器。

三、CentOS 安装常见问题解决

  1. CentOS 8 报错 container-selinux 依赖缺失 :执行以下命令安装依赖:

    复制代码
    sudo dnf install -y https://download.docker.com/linux/centos/7/x86_64/stable/Packages/container-selinux-2.119.2-1.911c772.el7.noarch.rpm
  2. 防火墙 / SELinux 影响容器网络 :若容器无法联网,可临时关闭 SELinux(仅测试用):

    复制代码
    sudo setenforce 0
    sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

四、配置国内镜像源(优化下载速度)

编辑 Docker 配置文件,添加阿里云 / 腾讯云镜像源:

复制代码
# 创建配置目录(若不存在)
sudo mkdir -p /etc/docker

# 写入镜像源配置
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://mirror.ccs.tencentyun.com", "https://hub-mirror.c.163.com"]
}
EOF

# 重启 Docker 使配置生效
sudo systemctl daemon-reload
sudo systemctl restart docker

总结:

  1. CentOS 安装 Docker 核心步骤:清理旧版本 → 配置仓库 → 安装引擎 → 启动并设自启 → 验证。
  2. 非 root 用户需加入 docker 组才能免 sudo 使用,国内环境建议配置镜像源提升下载速度。

五、常用命令

比较常见的命令有:

命令 说明 文档地址
docker pull 拉取镜像 docker pull
docker push 推送镜像到DockerRegistry docker push
docker images 查看本地镜像 docker images
docker rmi 删除本地镜像 docker rmi
docker run 创建并运行容器(不能重复创建) docker run
docker stop 停止指定容器 docker stop
docker start 启动指定容器 docker start
docker restart 重新启动容器 docker restart
docker rm 删除指定容器 docs.docker.com
docker ps 查看容器 docker ps
docker logs 查看容器运行日志 docker logs
docker exec 进入容器 docker exec
docker save 保存镜像到本地压缩文件 docker save
docker load 加载本地压缩文件到镜像 docker load
docker inspect 查看容器详细信息 docker inspect

用一副图来表示这些命令的关系:

六、安装Mysql

使用Docker安装,仅仅需要一步即可

复制代码
docker run -d \
  --name mysql \
  -p 3307:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=123 \
  mysql:8

解读:

  • docker run -d :创建并运行一个容器,-d则是让容器以后台进程运行

  • --name mysql : 给容器起个名字叫mysql,你可以叫别的

  • -p 3307:3306 : 设置端口映射。

    • 容器是隔离环境 ,外界不可访问。但是可以将宿主机端口映射容器内到端口,当访问宿主机指定端口时,就是在访问容器内的端口了。

    • 容器内端口往往是由容器内的进程决定,例如MySQL进程默认端口是3306,因此容器内端口一定是3306;而宿主机端口则可以任意指定,一般与容器内保持一致。

    • 格式: -p 宿主机端口:容器内端口,示例中就是将宿主机的3307映射到容器内的3306端口

  • -``e`` TZ=Asia/Shanghai : 配置容器内进程运行时的一些参数

    • 格式:-e KEY=VALUE,KEY和VALUE都由容器内进程决定

    • 案例中,TZ=Asia/Shanghai是设置时区;MYSQL_ROOT_PASSWORD=123是设置MySQL默认密码

  • mysql:8 : 设置镜像名称,Docker会根据这个名字搜索并下载镜像

    • 格式:REPOSITORY:TAG,例如mysql:8.0,其中REPOSITORY可以理解为镜像名,TAG是版本号

    • 在未指定TAG的情况下,默认是最新版本,也就是mysql:latest

七、安装Redis

  1. 拉取并启动 Redis 容器

    docker run -d
    --name redis \ # 容器命名为 redis,和你的 mysql 容器命名逻辑一致
    -p 6380:6379 \ # 端口映射:主机 6380 端口 → 容器 6379(Redis 默认端口)
    -e TZ=Asia/Shanghai \ # 设置时区为上海,和 MySQL 保持一致
    -e REDIS_PASSWORD=123456 \ # 设置 Redis 密码(必填,否则无密码访问有风险)
    redis:7 \ # 使用 redis:7 镜像(和你 mysql:8 版本格式一致)
    --requirepass 123456 # Redis 启动参数:强制要求密码认证(和上面的密码保持一致)

  2. 验证 Redis 容器是否启动成功

#查看容器运行状态

docker ps | grep redis

进入 Redis 容器测试连接 是一条 Docker 命令,用于在运行中的 Redis 容器内执行 redis-cli(Redis 命令行客户端)

docker exec -it redis redis-cli

执行后输入密码认证(替换为你设置的密码)

127.0.0.1:6379> AUTH 123456

返回 OK 表示认证成功,可正常使用

127.0.0.1:6379> SET test "hello redis"

127.0.0.1:6379> GET test # 应返回 "hello redis"

#windows连接redis

格式:redis-cli -h 服务器IP -p 映射端口 -a 密码

redis-cli -h 192.168.100.128 -p 6380 -a 123456

相关推荐
小白同学_C5 小时前
Lab4-Lab: traps && MIT6.1810操作系统工程【持续更新】 _
linux·c/c++·操作系统os
今天只学一颗糖5 小时前
1、《深入理解计算机系统》--计算机系统介绍
linux·笔记·学习·系统架构
不做无法实现的梦~7 小时前
ros2实现路径规划---nav2部分
linux·stm32·嵌入式硬件·机器人·自动驾驶
小锋学长生活大爆炸7 小时前
【教程】免Root在Termux上安装Docker
运维·docker·容器
进击切图仔7 小时前
常用 Docker 命令备份
运维·docker·容器
默|笙9 小时前
【Linux】fd_重定向本质
linux·运维·服务器
陈苏同学9 小时前
[已解决] Solving environment: failed with repodata from current_repodata.json (python其实已经被AutoDL装好了!)
linux·python·conda
“αβ”9 小时前
网络层协议 -- ICMP协议
linux·服务器·网络·网络协议·icmp·traceroute·ping
学到头秃的suhian10 小时前
Redis缓存
数据库·redis·缓存
苏渡苇10 小时前
Java + Redis + MySQL:工业时序数据缓存与持久化实战(适配高频采集场景)
java·spring boot·redis·后端·spring·缓存·架构