当前位置: 首页 > news >正文

阿里云CentOS环境下Docker使用教程

阿里云CentOS环境下Docker使用教程

一、环境准备

1. 系统要求

  • 操作系统:CentOS 7/8(推荐使用阿里云ECS镜像,已优化网络性能)。
  • 硬件配置:至少2GB内存(生产环境建议4GB+),CPU支持虚拟化(Intel VT-x/AMD-V)。
  • 网络要求:稳定互联网连接(用于拉取镜像和配置加速器)。

2. 关闭SELinux(可选但推荐)

SELinux可能限制Docker访问数据卷或网络,临时或永久关闭:

# 临时关闭
sudo setenforce 0# 永久关闭(编辑配置文件)
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
sudo reboot  # 重启生效

替代方案:若需保留SELinux,可为数据卷目录设置正确上下文:

sudo chcon -Rt svirt_sandbox_file_t /path/to/volume

二、安装Docker

1. 卸载旧版本(如存在)

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

2. 配置阿里云YUM源

方法一:直接使用阿里云镜像
# 备份原有CentOS源(可选)
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak# 下载阿里云CentOS 7源
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo# 配置Docker官方源为阿里云镜像
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
方法二:手动替换源地址

若上述方法失败,可手动编辑/etc/yum.repos.d/docker-ce.repo,将所有download.docker.com替换为mirrors.aliyun.com/docker-ce

3. 安装依赖工具

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

4. 安装Docker CE

sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

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

sudo systemctl start docker
sudo systemctl enable docker

6. 验证安装

sudo docker --version
sudo docker run hello-world  # 测试拉取镜像并运行容器

三、配置阿里云镜像加速器

阿里云用户可免费使用容器镜像服务加速下载,步骤如下:

  1. 登录阿里云控制台,进入容器镜像服务 > 镜像加速器,获取专属加速地址(如https://xxxx.mirror.aliyuncs.com)。
  2. 配置加速器
    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {"registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker
  3. 验证加速效果
    sudo docker info | grep "Registry Mirrors" -A 1
    输出应包含配置的加速地址。

四、Docker基础操作

1. 镜像管理

拉取镜像
sudo docker pull [镜像名]:[标签]  # 例如:sudo docker pull nginx:latest
查看本地镜像
sudo docker images
删除镜像
sudo docker rmi [镜像ID或名称]  # 例如:sudo docker rmi nginx:latest
清理无用镜像
sudo docker image prune  # 删除悬空镜像
sudo docker image prune -a  # 删除所有未使用的镜像

2. 容器运行与停止

运行容器
sudo docker run [选项] [镜像名] [命令]

常用选项

  • -d:后台运行(守护态)。
  • -p [宿主机端口]:[容器端口]:端口映射(如-p 8080:80)。
  • -v [宿主机路径]:[容器路径]:数据卷挂载(如-v /data:/var/lib/mysql)。
  • --name [容器名]:指定容器名称。
  • -e [环境变量]:设置环境变量(如-e MYSQL_ROOT_PASSWORD=123456)。

示例

# 运行Nginx容器,映射端口8080
sudo docker run -d -p 8080:80 --name my_nginx nginx# 运行MySQL容器,设置密码并挂载数据卷
sudo docker run -d \-p 3306:3306 \-v /data/mysql:/var/lib/mysql \-e MYSQL_ROOT_PASSWORD=123456 \--name my_mysql \mysql:5.7
查看运行中的容器
sudo docker ps
查看所有容器(包括已停止的)
sudo docker ps -a
停止/启动容器
sudo docker stop [容器名或ID]  # 停止容器
sudo docker start [容器名或ID]  # 启动容器
sudo docker restart [容器名或ID]  # 重启容器
删除容器
sudo docker rm [容器名或ID]  # 删除已停止的容器
sudo docker rm -f [容器名或ID]  # 强制删除运行中的容器

3. 进入容器

sudo docker exec -it [容器名或ID] /bin/bash  # 进入容器终端

退出容器:输入exit或按Ctrl+D

五、数据持久化

1. 数据卷(Volumes)

创建数据卷
sudo docker volume create [卷名]  # 例如:sudo docker volume create mysql_data
查看数据卷
sudo docker volume ls
使用数据卷运行容器
sudo docker run -d -v mysql_data:/var/lib/mysql --name my_mysql mysql

2. 绑定挂载(Bind Mounts)

直接挂载宿主机目录到容器:

sudo docker run -d -v /host/path:/container/path --name my_container nginx

注意:确保宿主机目录存在且权限正确(如chmod -R 777 /host/path)。

六、网络配置

1. 查看网络模式

sudo docker network ls

2. 创建自定义网络

sudo docker network create [网络名]  # 例如:sudo docker network create my_net

3. 运行容器时指定网络

sudo docker run -d --network my_net --name my_container nginx

4. 容器间通信

同一网络下的容器可通过容器名互相访问:

# 容器1(MySQL)
sudo docker run -d --network my_net --name mysql_db -e MYSQL_ROOT_PASSWORD=123456 mysql# 容器2(应用连接MySQL)
sudo docker run -d --network my_net --name my_app my_app_image

七、Docker Compose(多容器编排)

1. 安装Docker Compose

sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

2. 编写docker-compose.yml

示例

version: '3'
services:mysql:image: mysql:5.7environment:MYSQL_ROOT_PASSWORD: 123456volumes:- mysql_data:/var/lib/mysqlnetworks:- my_netnginx:image: nginxports:- "8080:80"networks:- my_netvolumes:mysql_data:networks:my_net:

3. 启动服务

sudo docker-compose up -d  # 后台启动
sudo docker-compose down   # 停止并删除容器

八、常见问题解决

1. 端口冲突

  • 现象:容器启动失败,提示Address already in use
  • 解决:更换宿主机端口或停止占用端口的服务:
    sudo netstat -tulnp | grep <端口号>  # 查看占用端口的进程
    sudo kill <PID>  # 终止进程

2. 数据卷权限问题

  • 现象:容器启动失败,日志显示Permission denied
  • 解决
    • 调整宿主机目录权限:
      sudo chown -R 999:999 /path/to/volume  # MySQL容器默认用户UID为999
    • 或运行容器时指定用户:
      sudo docker run -u 1000:1000 ...  # 使用宿主机用户UID:GID

3. 容器无法访问互联网

  • 现象:容器内ping失败或apt-get无法下载。
  • 解决
    • 检查宿主机网络是否正常。
    • 重启Docker服务:
      sudo systemctl restart docker

4. 磁盘空间不足

  • 现象:拉取镜像或运行容器时提示no space left on device
  • 解决
    • 清理无用镜像和容器:
      sudo docker system prune -a
    • 扩展磁盘空间或清理宿主机文件。

九、总结

  • 安装Docker:通过阿里云镜像源快速安装,并配置加速器提升下载速度。
  • 镜像管理:拉取、查看、删除镜像,清理无用镜像。
  • 容器操作:运行、停止、进入容器,管理容器生命周期。
  • 数据持久化:使用数据卷或绑定挂载确保数据安全。
  • 网络配置:自定义网络实现容器间通信。
  • Docker Compose:简化多容器编排,一键启动复杂应用。
  • 常见问题:解决端口冲突、权限问题、网络故障等。

通过本教程,您可以在阿里云CentOS环境下高效使用Docker部署和管理容器化应用。如需进一步学习,可参考Docker官方文档或阿里云容器服务文档。

http://www.dtcms.com/a/613256.html

相关文章:

  • bulk RNA-Seq (4)合并表达矩阵
  • 从零开始写算法——二分-搜索二维矩阵
  • 力扣(LeetCode)100题:73.矩阵置零 54.螺旋矩阵
  • 原型理解从入门到精通
  • 电子商务实验网站建设实训过程出售东西的网站怎么做
  • 做明星网站可以做那些子网页建设网站要用到什么语言
  • 《计算机网络:体系结构》
  • musl libc 与 C 运行时文件(`crt*.o`):技术解析及移植报错问题
  • 前端WebSocket教程,实时通信案例
  • 陪诊陪检系统源码,陪诊小程序,陪诊APP,陪诊服务,家政上门系统,居家护理陪护源码
  • Java 9+模块化系统(JPMS)详解:设计与迁移实践
  • 【计算机网络】考研408 | 数据链路层的“安全卫士”:探秘检错编码之奇偶校验码
  • Oracle EBS 调用标准创建供应商地点包报错处理
  • 第40节:AR基础:Marker识别与跟踪
  • 新能源汽车动力系统在环(HIL)半实物仿真测试台架深度解析
  • 企业BI建议--数据治理平台
  • 锒川市住房和城乡建设局网站公告湖北省建设工程质量安全监督网站
  • 从裂变能力竞争到技术水平竞争:开源AI智能名片链动2+1模式S2B2C商城小程序对微商企业竞争格局的重塑
  • 09-mcp-server案例分享-即梦MCP-Server实战教程-让Claude直接调用AI生图视频能力
  • SpringBoot18-redis的配置
  • PHP 表单 - 必需字段
  • python爬虫入门案例day05:Pexels
  • android studio Gradle 打包任务配置
  • 【AI学习-comfyUI学习-1批量抠图换背景工作流+2视频抠图工作流-各个部分学习-第十节】
  • Redis(124)Redis在电商系统中的应用有哪些?
  • [Dify 实战案例] 用 Dify 做一个多语种文档翻译工具:支持 TXT / DOCX / XLSX / PPTX 全格式
  • 自然语言编程:从一段Perl程序说起
  • OpenAI Whisper:技术、实战、生态
  • 【ZeroRange WebRTC】DTLS(Datagram Transport Layer Security)技术深度分析
  • 南京本地网站合肥建网站要多少钱