作为一名长期从事系统运维的工程师,我经常需要在各种Linux服务器上部署Docker环境。虽然Docker的安装过程看似简单,但其中有不少细节和技巧值得分享。本文将详细介绍在CentOS系统上安装Docker的完整流程,包括镜像加速配置、服务管理以及常用容器操作命令。
对于Linux系统管理员而言,Docker已经成为不可或缺的工具。它不仅能简化应用部署流程,还能实现环境隔离和资源控制。不同于简单的apt-get或yum安装,Docker的安装需要特别注意系统依赖、存储驱动选择以及后续的权限配置等问题。
在开始安装前,我们需要确认系统满足Docker的基本要求:
uname -r命令查看)提示:虽然Docker也支持32位系统,但在生产环境中强烈建议使用64位系统以获得更好的性能和兼容性。
Docker运行需要一些基础系统工具,执行以下命令安装:
bash复制yum -y install yum-utils device-mapper-persistent-data lvm2
这些包的作用分别是:
为了获取最新稳定版的Docker,我们需要添加官方仓库:
bash复制yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
如果国内访问速度慢,可以使用阿里云镜像源替代:
bash复制yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
执行以下命令安装Docker社区版:
bash复制yum -y install docker-ce docker-ce-cli containerd.io
这里安装的组件包括:
对于快速部署场景,可以使用官方提供的一键安装脚本:
bash复制curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
这个脚本会自动检测系统环境并完成所有安装步骤,适合在干净的系统中使用。
安装完成后,需要启动Docker守护进程:
bash复制systemctl start docker
为了确保服务器重启后Docker能自动运行:
bash复制systemctl enable docker
检查Docker版本确认安装成功:
bash复制docker version
正常输出应包含Client和Server两部分版本信息。如果只看到Client信息,说明Docker服务没有正确启动。
国内用户建议配置镜像加速器以提高拉取镜像的速度。创建或修改/etc/docker/daemon.json文件:
json复制{
"registry-mirrors": [
"https://registry.docker-cn.com",
"https://mirror.ccs.tencentyun.com"
]
}
然后重启Docker服务使配置生效:
bash复制systemctl restart docker
Docker支持多种存储驱动,默认情况下会根据系统环境自动选择。可以通过以下命令查看当前使用的驱动:
bash复制docker info | grep "Storage Driver"
对于CentOS系统,通常使用devicemapper或overlay2驱动。生产环境中推荐使用overlay2,需要在启动参数中配置。
docker run -d --name myapp nginxdocker start myappdocker stop myappdocker restart myappdocker rm myappdocker psdocker ps -adocker logs myappdocker stats myapp要在运行中的容器内执行命令:
bash复制docker exec -it myapp /bin/bash
这个命令会打开一个交互式终端连接到容器内部。
普通用户执行docker命令时可能会遇到权限拒绝错误。解决方法有两种:
bash复制sudo docker ps
bash复制sudo usermod -aG docker $USER
然后需要重新登录使权限生效。
当容器端口与主机端口冲突时,可以修改映射关系:
bash复制docker run -d -p 8080:80 --name web nginx
这里将容器内的80端口映射到主机的8080端口。
Docker默认将镜像和容器存储在/var/lib/docker目录。如果空间不足,可以通过以下方式处理:
bash复制docker image prune -a
在实际运维工作中,Docker的安装只是第一步。后续的日常维护、性能调优和安全加固同样重要。建议新手从简单的单容器应用开始,逐步掌握更复杂的编排和管理技术。