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遇到的问题和经验!

相关推荐
df007df1 小时前
【RAGFlow代码详解-29】Docker 部署
运维·docker·容器
Monly213 小时前
Docker:部署Java后端
java·docker·容器
小王努力学编程6 小时前
从零开始的 Docker 之旅
linux·运维·服务器·docker·容器·容器编排·镜像制作
martian66510 小时前
大模型部署:AI大模型在医学影像分类中的ONNX、TensorRT和Docker应用
人工智能·docker·分类·ai大模型·hugging face
007php00713 小时前
使用 Docker、Jenkins、Harbor 和 GitLab 构建 CI/CD 流水线
数据库·ci/cd·docker·容器·golang·gitlab·jenkins
退役小学生呀18 小时前
十九、云原生分布式存储 CubeFS
分布式·docker·云原生·容器·kubernetes·k8s
UtopianCoding1 天前
MinerU:重新定义PDF智能提取的开源利器
docker·pdf·开源
007php0071 天前
Jenkins+docker 微服务实现自动化部署安装和部署过程
运维·数据库·git·docker·微服务·自动化·jenkins
{⌐■_■}1 天前
【ElasticSearch】使用docker compose,通过编写yml安装es8.15和kibana可视化界面操作,go连接es
elasticsearch·docker·golang