Docker新手必看:5分钟搞定CentOS7.9下的Docker安装与配置(含国内镜像加速)

张开发
2026/5/30 8:31:57 15 分钟阅读
Docker新手必看:5分钟搞定CentOS7.9下的Docker安装与配置(含国内镜像加速)
CentOS 7.9环境下Docker高效部署与优化指南为什么选择Docker进行应用容器化在当今快速迭代的软件开发环境中开发者和运维团队经常面临在我本地能运行但在服务器上就出问题的经典困境。这种环境差异导致的问题不仅浪费大量调试时间还可能影响产品交付进度。Docker通过容器化技术完美解决了这一痛点它将应用程序及其所有依赖项打包到一个标准化的单元中确保从开发到生产的全流程一致性。与传统虚拟机相比Docker容器具有显著优势资源效率容器共享主机操作系统内核无需为每个应用加载完整操作系统内存占用通常仅为虚拟机的1/10启动速度容器可以在毫秒级别启动而虚拟机通常需要数秒到数十秒可移植性容器镜像可以在任何支持Docker的环境中运行无论是物理机、云服务器还是开发者的笔记本电脑隔离性每个容器拥有独立的文件系统、网络和进程空间确保应用间互不干扰对于CentOS 7.9用户而言Docker提供了稳定可靠的企业级容器运行时环境。特别是在国内网络环境下合理的配置能够显著提升容器镜像的拉取速度和工作效率。CentOS 7.9系统准备与Docker安装系统环境检查在开始安装Docker之前需要确保系统满足基本要求# 检查内核版本需3.10以上 uname -r # 示例输出3.10.0-1160.el7.x86_64 # 检查系统版本 cat /etc/redhat-release # 示例输出CentOS Linux release 7.9.2009 (Core)提示如果内核版本低于3.10需要先升级内核。可执行yum update kernel -y后重启系统。清理旧版本Docker为避免冲突安装前应先移除系统中可能存在的旧版本Dockersudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine配置国内Yum源加速安装针对国内网络环境建议使用阿里云镜像源加速Docker安装# 安装必要工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # 添加阿里云Docker CE镜像源 sudo yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 更新yum缓存 sudo yum makecache fast安装Docker引擎执行以下命令安装Docker及其相关组件sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin安装完成后启动Docker服务并设置开机自启sudo systemctl enable docker --now验证Docker是否正常运行sudo docker run hello-world如果看到Hello from Docker!的欢迎信息说明安装成功。Docker国内镜像加速配置配置镜像加速器国内直接访问Docker Hub速度较慢可通过配置镜像加速器显著提升镜像拉取速度。以下是主流云服务商提供的镜像加速地址服务商镜像加速地址阿里云https://你的ID.mirror.aliyuncs.com腾讯云https://mirror.ccs.tencentyun.com网易云http://hub-mirror.c.163.com中科大https://docker.mirrors.ustc.edu.cn配置方法如下sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json -EOF { registry-mirrors: [ https://mirror.ccs.tencentyun.com, https://docker.mirrors.ustc.edu.cn, http://hub-mirror.c.163.com ] } EOF应用配置并重启服务# 重新加载配置 sudo systemctl daemon-reload # 重启Docker服务 sudo systemctl restart docker # 验证配置是否生效 docker info | grep Mirrors -A 5Docker基础操作与实用技巧镜像管理搜索和下载镜像# 搜索官方镜像 docker search nginx # 下载指定版本镜像不指定tag默认为latest docker pull nginx:1.21 # 查看本地镜像列表 docker images镜像导出与导入# 将镜像保存为tar文件 docker save -o nginx.tar nginx:1.21 # 从tar文件加载镜像 docker load -i nginx.tar容器生命周期管理启动容器# 启动一个Nginx容器并映射端口 docker run -d --name my-nginx -p 8080:80 nginx:1.21参数说明-d后台运行--name为容器指定名称-p端口映射主机端口:容器端口容器状态管理# 查看运行中的容器 docker ps # 查看所有容器包括已停止的 docker ps -a # 停止容器 docker stop my-nginx # 启动已停止的容器 docker start my-nginx # 删除容器需先停止 docker rm my-nginx进入容器内部操作# 以交互模式进入容器 docker exec -it my-nginx /bin/bash # 查看容器日志 docker logs my-nginxDocker存储与数据持久化数据卷(Volume)管理数据卷是Docker推荐的持久化数据存储方式# 创建数据卷 docker volume create my-data # 查看数据卷列表 docker volume ls # 使用数据卷启动容器 docker run -d --name mysql -v my-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD123456 mysql:8.0目录挂载将主机目录直接挂载到容器中# 创建主机目录 mkdir -p ~/web/html # 启动Nginx并挂载目录 docker run -d --name web -v ~/web/html:/usr/share/nginx/html -p 80:80 nginx数据卷与目录挂载对比特性数据卷(Volume)目录挂载(Bind Mount)存储位置Docker管理区域(/var/lib/docker/volumes/)主机任意位置权限控制Docker自动设置需手动设置备份迁移Docker命令支持需手动操作性能较好取决于主机文件系统适用场景数据库数据、应用数据开发环境、配置文件Docker网络配置实践查看网络信息# 列出所有网络 docker network ls # 查看网络详情 docker network inspect bridge创建自定义网络# 创建自定义桥接网络 docker network create my-net # 在自定义网络中启动容器 docker run -d --name web1 --network my-net nginx docker run -d --name web2 --network my-net nginx # 测试容器间通信 docker exec -it web1 ping web2网络模式对比Docker支持多种网络模式适用于不同场景网络模式特点适用场景bridge默认模式容器通过虚拟网桥通信单主机容器通信host容器直接使用主机网络高性能需求场景none无网络配置特殊安全需求overlay跨主机容器通信Swarm集群环境Docker Compose多容器编排安装Docker Compose# 下载最新稳定版 sudo curl -L https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose # 添加执行权限 sudo chmod x /usr/local/bin/docker-compose # 验证安装 docker-compose --version编写docker-compose.yml以下是一个典型的Web应用MySQL的编排示例version: 3.8 services: web: image: nginx:1.21 ports: - 8080:80 volumes: - ./html:/usr/share/nginx/html depends_on: - db networks: - app-net db: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: 123456 MYSQL_DATABASE: myapp volumes: - mysql-data:/var/lib/mysql networks: - app-net volumes: mysql-data: networks: app-net: driver: bridge常用Compose命令# 启动服务后台运行 docker-compose up -d # 查看服务状态 docker-compose ps # 查看服务日志 docker-compose logs -f # 停止并删除服务 docker-compose down # 重建服务 docker-compose up -d --build生产环境优化建议资源限制为防止单个容器占用过多资源应设置合理的资源限制# 启动容器时限制CPU和内存 docker run -d --name limited \ --cpus 1.5 \ --memory 512m \ nginx在docker-compose.yml中配置services: web: image: nginx deploy: resources: limits: cpus: 0.5 memory: 256M日志管理默认情况下Docker容器日志会无限增长需要配置日志轮转# 全局配置需重启Docker服务 sudo tee /etc/docker/daemon.json -EOF { log-driver: json-file, log-opts: { max-size: 10m, max-file: 3 } } EOF安全最佳实践避免使用root用户运行容器docker run -u 1000:1000 nginx只读文件系统docker run --read-only nginx限制容器能力docker run --cap-drop ALL --cap-add NET_BIND_SERVICE nginx定期更新镜像docker pull nginx:latest docker-compose pull常见问题排查镜像拉取失败现象Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection解决方案检查网络连接确认镜像加速器配置正确尝试更换其他镜像源端口冲突现象Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use解决方案查找占用端口的进程sudo netstat -tulnp | grep :80停止冲突服务或修改容器映射端口存储空间不足现象no space left on device解决方案清理无用镜像docker system prune -a迁移Docker数据目录到更大分区设置存储驱动为overlay2默认并配置存储限制容器启动后立即退出排查步骤查看容器日志docker logs 容器ID以交互模式运行排查docker run -it --entrypoint /bin/sh 镜像检查容器进程docker top 容器ID

更多文章