【Docker核心指南】单节点Centos7环境部署与使用(以nginx为例)全指南

一、背景:为什么需要 Docker?

二、安装部署:以 CentOS 7 为例

        2.1. 准备工作 

        2.2. 卸载旧版本(如有)

        2.4. 启动 Docker 并设置开机自启

        2.5. 配置镜像加速(国内环境必做)

三、Docker 核心操作详解

        3.1. 镜像管理

                拉取镜像

                查看本地镜像

                删除镜像

        3.2. 容器操作

                启动容器

                查看运行中的容器

                进入容器内部

                退出容器

                停止/启动/重启容器

                删除容器

        3.3. 数据持久化

四、实战案例:部署 Nginx服务

        4.1. 拉取 Nginx镜像

        4.2. 创建Nginx数据持久化目录

        4.3. 启动Nginx容器

        4.4. 验证Nginx服务

五、常见问题与避坑指南

        5.1. 容器无法访问

        5.2. 数据丢失

        5.3. 镜像拉取缓慢


一、背景:为什么需要 Docker?

在传统开发流程中,开发者常面临以下痛点:

  • 环境不一致:开发环境能运行的代码,在测试或生产环境因依赖版本差异崩溃。
  • 资源浪费:每个应用占用一个虚拟机,硬件资源利用率低。
  • 部署复杂:手动配置环境耗时耗力,且易出错。

Docker 的解决方案

  • 容器化技术:将应用及其依赖(如库、配置文件)打包成独立的镜像,确保环境一致性。
  • 轻量级虚拟化:共享主机内核,启动速度接近原生应用,资源占用更低。
  • 快速部署:通过镜像仓库(如 Docker Hub)一键分发应用。

典型应用场景

  • 开发环境隔离(避免全局依赖冲突)。
  • 持续集成/持续部署(CI/CD)流水线。
  • 微服务架构下的服务拆分与部署。

二、安装部署:以 CentOS 7 为例

2.1. 准备工作 

# 检查内核版本(如3.10.0-1160.el7.x86_64)
uname -r
# 停止防火墙服务(立即生效)
sudo systemctl stop firewalld
# 禁止防火墙开机自启动
sudo systemctl disable firewalld

注意:生产环境需配置防火墙规则,而非直接关闭。

2.2. 卸载旧版本(如有)

sudo yum remove -y docker \
  docker-client \
  docker-client-latest \
  docker-common \
  docker-latest \
  docker-latest-logrotate \
  docker-logrotate \
  docker-engine

2.3. 安装依赖包

yum install -y yum-utils device-mapper-persistent-data lvm2
# 配置 Docker 官方源(推荐阿里云镜像源)
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io

2.4. 启动 Docker 并设置开机自启

# 启动docker
systemctl start docker
# 配置docker开机自启动
systemctl enable docker
# 查询docker版本
docker version
# 查询docker镜像
docker images

2.5. 配置镜像加速(国内环境必做)

#配置Docker镜像源(2025.5.3确认有效)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
    "registry-mirrors": [
        "https://docker.1ms.run",
        "https://docker.xuanyuan.me"
    ]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

三、Docker 核心操作详解

3.1. 镜像管理

拉取镜像
# 拉取最新版 nginx镜像(也可以在:后面指定拉取版本)
docker pull nginx:latest
查看本地镜像
docker nginx # 输出示例:
# REPOSITORY TAG IMAGE ID CREATED SIZE
# nginx latest 605c77e624dd 10 days ago 142MB
删除镜像
# 删除指定镜像
docker rmi nginx:latest
# 删除所有未被使用的镜像(谨慎操作)
docker image prune -a

3.2. 容器操作

启动容器
docker run -d \ # -d后台启动
  --name my-nginx \ # 容器名称
  -p 8080:80 \ # 将主机的 8080 端口映射到容器的 80 端口
  nginx:latest # 启动镜像名称
查看运行中的容器
docker ps # 输出示例:
# CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# a1b2c3d4e5f6 nginx:latest "/docker-entrypoint.…" 2 minutes ago Up 2 minutes 0.0.0.0:8080->80/tcp my-nginx
进入容器内部
# 进入容器的 Bash 环境
docker exec -it my-nginx /bin/bash
退出容器
exit # 或按 Ctrl+D
停止/启动/重启容器
docker stop my-nginx # 停止容器
docker start my-nginx # 启动容器
docker restart my-nginx # 重启容器
删除容器
docker rm my-nginx # 删除已停止的容器
docker rm -f my-nginx # 强制删除运行中的容器

3.3. 数据持久化

# 场景:容器重启后数据丢失(如数据库文件)。
# 解决方案:使用 -v 挂载主机目录到容器
docker run -d \
  --name my-nginx \
  -p 8080:80 \  # 将主机的 8080 端口映射到容器的 80 端口
  -v /host/nginx/conf.d:/etc/nginx/conf.d \  # 挂载配置文件目录
  -v /host/nginx/logs:/var/log/nginx \       # 挂载日志目录
  -v /host/nginx/html:/usr/share/nginx/html \ # 挂载静态资源目录
  nginx:latest

四、实战案例:部署 Nginx服务

4.1. 拉取 Nginx镜像

docker pull nginx # 拉取nginx最新的镜像

4.2. 创建Nginx数据持久化目录

sudo mkdir -p /host/nginx/{conf.d,logs,html}
sudo chmod -R 755 /host/nginx  # 设置合理权限(生产环境避免 777)

4.3. 启动Nginx容器

docker run -d \
  --name my-nginx \
  -p 8080:80 \  # 将主机的 8080 端口映射到容器的 80 端口
  -v /host/nginx/conf.d:/etc/nginx/conf.d \  # 挂载配置文件目录
  -v /host/nginx/logs:/var/log/nginx \       # 挂载日志目录
  -v /host/nginx/html:/usr/share/nginx/html \ # 挂载静态资源目录
  nginx:latest

4.4. 验证Nginx服务

访问http://<服务器ip>:8080看到nginx默认页面即部署成功。


五、常见问题与避坑指南

5.1. 容器无法访问

  • 原因
    • 端口未映射(未使用 -p 参数)。
    • 防火墙拦截。
    • 容器内服务未启动。
  • 解决
    • 检查端口映射:docker ps
    • 查看容器日志:docker logs nginx-server
    • 进入容器检查服务状态:docker exec -it nginx-server ps 。

5.2. 数据丢失

  • 原因:未使用 -v 挂载数据卷。
  • 解决:重新启动容器时添加 -v 参数。

5.3. 镜像拉取缓慢

  • 原因:默认使用 Docker Hub 官方源。
  • 解决:配置国内镜像源(如阿里云、网易等等)。

如有其他问题报错或者需要进一步补充细节可以留言反馈。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值