Docker快速上手:从安装到阿里云镜像加速的完整指南
1. Docker入门为什么你需要它第一次接触Docker时我和大多数人一样困惑这玩意儿到底有什么用直到有次部署项目在本地跑得好好的服务上了服务器就各种报错折腾了整整两天。后来用了Docker同样的问题五分钟就解决了——这就是容器的魔力。简单来说Docker就像快递行业的标准化集装箱。想象一下以前运输货物要针对不同物品单独包装好比传统部署要配置不同环境现在所有东西都放进标准集装箱Docker容器卡车服务器直接拉走就行。三大核心组件构成了Docker的生态系统镜像Image好比集装箱的设计图纸包含完整的运行环境容器Container根据图纸造出来的实体集装箱即运行中的服务仓库Registry存放图纸的仓库Docker Hub是最大的图纸市场实际开发中最爽的是环境一致性。上周我帮同事调试代码他电脑是WindowsPython3.8我的是MacPython3.10。用Docker后只需一句docker-compose up两边的运行环境完全一致再也不用说在我机器上好好的这种话了。2. 手把手安装Docker2.1 环境准备以CentOS 7为例其他系统可参考官方文档先确认系统符合要求# 查看内核版本需3.10以上 uname -r # 检查系统版本 cat /etc/os-release遇到过最坑的情况是某些云主机默认没开cgroupsDocker依赖的Linux功能。如果安装失败先执行sudo yum install -y device-mapper-persistent-data lvm22.2 官方安装方式# 卸载旧版本如果有 sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine # 安装工具包 sudo yum install -y yum-utils # 设置官方仓库国内推荐换成阿里云源 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 安装引擎 sudo yum install docker-ce docker-ce-cli containerd.io2.3 验证安装启动服务后跑个测试sudo systemctl start docker sudo docker run hello-world如果看到Hello from Docker!的欢迎信息说明安装成功。第一次可能会卡在pull镜像别急下一节就解决这个问题。3. 阿里云镜像加速配置3.1 为什么需要加速默认从Docker Hub拉镜像就像用2G网络下电影特别是初次使用时。实测在AWS东京节点pull一个500MB的镜像默认源平均速度200KB/s耗时约40分钟阿里云加速后8MB/s只要1分钟3.2 获取专属加速地址登录阿里云容器镜像服务控制台左侧菜单选择镜像加速器复制属于你的加速器地址每个账号不同3.3 配置方法创建配置文件并重启服务sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json -EOF { registry-mirrors: [https://你的专属ID.mirror.aliyuncs.com] } EOF sudo systemctl daemon-reload sudo systemctl restart docker验证配置是否生效docker info | grep Mirrors -A 1应该能看到你配置的阿里云地址。曾经有学员把JSON格式写错导致Docker无法启动建议直接用上面的tee命令避免格式问题。4. 实战用加速器部署Nginx4.1 拉取镜像对比测试先清空本地镜像docker rmi nginx用阿里云源拉取time docker pull nginx正常情况下应该能看到速度明显提升time命令会显示实际耗时。我最近一次测试只用了17秒。4.2 运行测试容器docker run -d -p 8080:80 --name my-nginx nginx访问服务器IP:8080应该能看到Nginx欢迎页。这里有个实用技巧如果8080被占用Docker会报错。可以改成-p 8081:80使用其他端口。4.3 常见问题排查如果访问不了按这个顺序检查docker ps查看容器是否运行docker logs my-nginx看日志服务器安全组是否开放8080端口本地防火墙设置CentOS7执行sudo firewall-cmd --add-port8080/tcp --permanentsudo firewall-cmd --reload5. 进阶技巧与维护5.1 镜像管理查看下载的镜像docker images清理无用镜像谨慎操作docker image prune -a5.2 容器生命周期停止/启动容器docker stop my-nginx docker start my-nginx删除容器加-v会同时删除关联的匿名卷docker rm -v my-nginx5.3 修改配置后重启每次修改daemon.json都需要sudo systemctl restart docker建议在维护窗口操作会短暂影响正在运行的容器。刚开始用Docker时我总喜欢把所有命令都记在笔记里。后来发现docker --help和官方文档才是最好的老师。比如忘记参数时直接docker run --help就能看到所有选项说明。