Docker实战指南:安装、配置与部署

Docker实战指南:安装、配置与部署

摘要:本文专为CentOS用户打造,详细讲解在CentOS 7/8上安装Docker Engine、配置国内镜像加速器,并附上全门类常用命令详解。最后,我们将通过部署Nginx和MySQL来一场完整的实战演练。

一、 Docker简介与优势

Docker是一种轻量级的容器化技术,它将应用及其依赖打包在一个隔离的容器中,从而实现快速交付、可靠部署和弹性伸缩

与传统虚拟机相比,Docker容器共享主机操作系统内核,因此更加轻量、快速,资源占用极低。其核心优势在于保证了环境的一致性,彻底解决了"开发环境正常,生产环境异常"的难题。

二、 在CentOS上安装Docker Engine

重要提示 :CentOS 7及更高版本才能稳定运行Docker,且需要启用 centos-extras 仓库。本指南适用于CentOS 7和CentOS 8。

  1. 卸载旧版本(如果之前安装过):

    bash

    arduino 复制代码
    sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
  2. 安装必要的依赖包和设置仓库

    bash

    csharp 复制代码
    sudo yum install -y yum-utils
    # 添加官方的Docker仓库
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  3. 安装Docker Engine

    bash

    lua 复制代码
    sudo yum install -y docker-ce docker-ce-cli containerd.io
  4. 启动Docker并设置开机自启

    bash

    bash 复制代码
    sudo systemctl start docker    # 启动Docker服务
    sudo systemctl enable docker   # 设置开机自动启动
  5. 验证安装

    bash

    arduino 复制代码
    sudo docker run hello-world

    如果命令成功运行并输出欢迎信息,说明安装成功!

三、 配置镜像加速器(国内用户必做)

默认从Docker Hub拉取镜像速度很慢,配置国内镜像加速器是必不可少的一步。

  1. 创建并编辑Docker守护进程配置文件

    bash

    bash 复制代码
    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": [
        "https://registry.cn-hangzhou.aliyuncs.com",  # 阿里云镜像加速地址
        "https://hub-mirror.c.163.com",
        "https://mirror.baidubce.com"
      ]
    }
    EOF

    建议注册阿里云账号,从容器镜像服务控制台获取专属加速器地址,速度更快。

  2. 重新加载配置并重启Docker

    bash

    bash 复制代码
    sudo systemctl daemon-reload    # 重载守护进程
    sudo systemctl restart docker   # 重启Docker服务
  3. 验证加速器是否生效

    bash

    复制代码
    sudo docker info

    在输出信息的最下方,如果看到 Registry Mirrors 中包含你配置的地址,说明配置成功。

四、 Docker核心命令大全(通用)

Docker命令本身是跨平台的,以下命令在CentOS上同样适用。

1. 服务管理命令 (CentOS)

bash

bash 复制代码
sudo systemctl start docker     # 启动
sudo systemctl stop docker      # 停止
sudo systemctl restart docker   # 重启
sudo systemctl status docker    # 查看状态
sudo systemctl enable docker    # 开机自启
2. 镜像命令

bash

bash 复制代码
docker images                   # 列出本地镜像
docker search <image-name>      # 搜索镜像
docker pull <image-name>[:tag]  # 拉取镜像
docker rmi <image-id/name>      # 删除镜像
docker build -t <name> .        # 构建镜像
3. 容器命令

bash

bash 复制代码
# 生命周期
docker run -itd --name <name> <image>    # 创建并运行容器(-d后台运行)
docker start/stop/restart <name>         # 启动/停止/重启容器
docker rm <name>                         # 删除已停止的容器
docker rm -f <name>                      # 强制删除运行中的容器

# 查看与交互
docker ps -a                             # 查看所有容器
docker logs <name>                       # 查看日志
docker exec -it <name> /bin/bash         # 进入容器
4. 网络与存储命令

bash

bash 复制代码
# 网络
docker network ls                        # 列出网络
docker network create <net-name>         # 创建网络

# 存储(数据卷)
docker volume ls                         # 列出数据卷
docker volume create <vol-name>          # 创建数据卷

五、 实战:在CentOS上部署Nginx和MySQL

场景:部署一个Nginx提供web服务,并创建一个MySQL容器,两者通过网络互通。

  1. 创建自定义网络(实现容器间通过容器名通信):

    bash

    lua 复制代码
    docker network create my-app-net
  2. 部署MySQL(使用数据卷持久化数据):

    bash

    ini 复制代码
    docker run -d --name mysql-server \
      --network my-app-net \
      -e MYSQL_ROOT_PASSWORD=my-secret-pw \
      -e MYSQL_DATABASE=myapp \
      -v mysql_data:/var/lib/mysql \  # 数据卷持久化,避免数据丢失
      mysql:8.0
  3. 部署Nginx(挂载本地配置和网页文件):

    bash

    bash 复制代码
    # 在宿主机创建目录和文件
    mkdir -p ~/nginx/{html,conf}
    echo "<h1>Hello from Nginx on CentOS!</h1>" > ~/nginx/html/index.html
    
    # 运行Nginx容器
    docker run -d --name nginx-web \
      --network my-app-net \
      -p 80:80 \
      -v ~/nginx/html:/usr/share/nginx/html:ro \  # 挂载网页文件,只读
      nginx:alpine
  4. 验证部署

    • Nginx :打开浏览器,访问 http://你的CentOS服务器IP,应该能看到Hello页面。
    • MySQL:进入MySQL容器测试连接。

    bash

    bash 复制代码
    docker exec -it mysql-server mysql -uroot -pmy-secret-pw
    # 如果能成功进入MySQL命令行,说明数据库部署成功。

六、 防火墙配置(CentOS特有重要步骤)

CentOS的防火墙 (firewalld) 可能会阻止你访问Docker容器映射的端口,你需要放行这些端口。

bash

ini 复制代码
# 放行80端口(Nginx)
sudo firewall-cmd --permanent --add-port=80/tcp
# 放行3306端口(如果你映射了MySQL端口到主机)
# sudo firewall-cmd --permanent --add-port=3306/tcp

# 重新加载防火墙规则使其生效
sudo firewall-cmd --reload

七、 总结

通过本文,你已经在CentOS系统上成功搭建了Docker环境,配置了加速器,学习了核心命令,并完成了多容器应用的联合部署。CentOS作为企业级服务器的主流操作系统,结合Docker后,其应用部署和管理的效率将得到巨大提升。

下一步 ,可以探索如何编写 Dockerfile 来构建自定义镜像,以及使用 Docker Compose 来编排和管理本文中的多容器应用,这将让你的容器化之旅更加顺畅。

欢迎在评论区交流你在CentOS上使用Docker遇到的问题和经验!

相关推荐
计算机小手3 小时前
一个带Web UI管理的轻量级高性能OpenAI模型代理网关,支持Docker快速部署
经验分享·docker·语言模型·开源软件
坚持学习前端日记4 小时前
常见docker指令
docker·容器·eureka
小芳矶5 小时前
Dify本地docker部署踩坑记录
python·docker·容器
70asunflower5 小时前
阿里云无影云电脑 Docker 使用完全指南
阿里云·docker·云计算
feasibility.7 小时前
在OpenCode使用skills搭建基于LLM的dify工作流
人工智能·低代码·docker·ollama·skills·opencode·智能体/工作流
lpruoyu8 小时前
【Docker进阶-02】Docker命令
docker·容器
FLGB10 小时前
Docker网段和服务器内部网段172.17 网段冲突导致网络不通
服务器·网络·docker
骂我的人都死了12 小时前
DevOps架构部署
运维·ubuntu·docker·k8s·github·devops·python3.11
AL31712 小时前
模拟实现NetDevOps全生命周期自动化网络运维
运维·docker·centos·ensp·netmiko
Alaaaaaaan12 小时前
[DevOps]使用github-action工具部署docker容器(实现提交代码一键推送部署到服务器)
服务器·前端·docker·容器·github