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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值