在CentOS系统上安装与部署Docker的完整指南
系统环境准备
在开始安装Docker之前,确保你的CentOS系统满足基本要求,Docker支持CentOS 7及更高版本,推荐使用64位系统,更新系统包到最新版本,以避免依赖冲突,执行以下命令:
sudo yum update -y
确保系统已安装必要的软件包,如yum-utils、device-mapper-persistent-data和lvm2,这些是Docker依赖的核心组件:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
添加Docker官方仓库
为了确保安装的是最新版本的Docker,建议添加Docker的官方Yum仓库,使用以下命令添加稳定版仓库:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
如果需要测试版或夜间构建版本,可以启用对应的仓库,但生产环境建议使用稳定版。
安装Docker Engine
添加仓库后,即可安装Docker Engine(社区版),执行以下命令:
sudo yum install -y docker-ce docker-ce-cli containerd.io
安装过程中,系统会自动解决依赖关系并下载相关包,完成后,验证Docker是否安装成功:
docker --version
如果显示版本号,说明安装成功。
启动并配置Docker服务
安装完成后,需要启动Docker服务并设置为开机自启,使用以下命令:
sudo systemctl start docker sudo systemctl enable docker
为确保Docker正常工作,可以运行一个测试容器:
sudo docker run hello-world
如果看到输出信息,表明Docker已正确运行。
配置Docker镜像加速器
由于网络原因,直接从Docker Hub拉取镜像可能较慢,可以配置国内镜像加速器,以提升下载速度,编辑Docker的配置文件:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://<your-mirror-url>"]
}
EOF
将<your-mirror-url>替换为国内镜像地址(如阿里云、网易云等),配置完成后,重启Docker服务:
sudo systemctl restart docker
管理Docker容器与镜像
Docker的核心功能是容器化管理,以下是一些常用命令:
- 拉取镜像:
docker pull <image-name> - 运行容器:
docker run -it <image-name> - 查看容器列表:
docker ps - 停止容器:
docker stop <container-id> - 删除容器:
docker rm <container-id>
运行一个Nginx容器:
docker run -d -p 8080:80 nginx
这会在后台运行Nginx,并将宿主机的8080端口映射到容器的80端口。
安全配置与用户权限
默认情况下,只有root用户可以执行Docker命令,为了避免每次都使用sudo,可以将当前用户添加到docker用户组:
sudo usermod -aG docker $USER
执行后需要重新登录或重启系统,注意,docker组权限较高,请谨慎分配用户。
故障排除与常见问题
在使用Docker时,可能会遇到一些常见问题,如果启动容器时提示权限错误,可以尝试添加--privileged参数,如果镜像下载失败,检查网络连接或镜像加速器配置是否正确。
相关问答FAQs
Q1: 安装Docker时提示“cannot locate package docker-ce”,如何解决?
A: 这通常是因为未正确添加Docker官方仓库,请确保执行了yum-config-manager --add-repo命令,并检查仓库是否添加成功,可以运行yum repolist enabled | grep "docker-ce-*" | column -c 70 -t查看仓库状态。
Q2: Docker容器启动后立即退出,如何排查问题?
A: 容器退出可能是因为前台进程缺失,使用docker logs <container-id>查看日志,确认容器是否因错误退出,如果是,可以通过docker run -it <image-name> /bin/bash进入容器调试,或确保容器有持续运行的服务(如Nginx、Redis等)。