阿里云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.7
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    volumes:
      - mysql_data:/var/lib/mysql
    networks:
      - my_net

  nginx:
    image: nginx
    ports:
      - "8080:80"
    networks:
      - my_net

volumes:
  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官方文档阿里云容器服务文档

相关推荐
AAA小肥杨2 小时前
探索K8s与AI的结合:PyTorch训练任务在k8s上调度实践
人工智能·pytorch·docker·ai·云原生·kubernetes
春生野草3 小时前
安装k8s过程中涉及知识点梳理
docker
FOREVER-Q3 小时前
Windows 下 Docker Desktop 快速入门与镜像管理
运维·服务器·windows·docker·容器
adnyting4 小时前
【Linux日新月异(五)】CentOS 7防火墙深度解析:firewalld全面指南
linux·运维·centos
IT瑞先生4 小时前
Docker容器使用手册——入门篇(上)
运维·docker·容器
青柚~6 小时前
【鲲鹏服务器麒麟系统arm架构部署docker】
服务器·arm开发·docker·架构
喜欢你,还有大家7 小时前
Docker-存储
运维·docker·容器
人工智能训练9 小时前
Docker中容器的备份方法和步骤
linux·运维·人工智能·ubuntu·docker·容器·nvidia
bing.shao9 小时前
Goer-Docker系列-1-管理工具
docker·容器·eureka