阿里云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 # 测试拉取镜像并运行容器
三、配置阿里云镜像加速器
阿里云用户可免费使用容器镜像服务加速下载,步骤如下:
- 登录阿里云控制台,进入容器镜像服务 > 镜像加速器,获取专属加速地址(如
https://xxxx.mirror.aliyuncs.com)。 - 配置加速器:
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 - 验证加速效果:
输出应包含配置的加速地址。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官方文档或阿里云容器服务文档。

被折叠的 条评论
为什么被折叠?



