Docker快速上手:从安装到阿里云镜像加速的完整指南
1. Docker入门:为什么你需要它
第一次接触Docker时,我和大多数人一样困惑:这玩意儿到底有什么用?直到有次部署项目,在本地跑得好好的服务,上了服务器就各种报错,折腾了整整两天。后来用了Docker,同样的问题五分钟就解决了——这就是容器的魔力。
简单来说,Docker就像快递行业的标准化集装箱。想象一下,以前运输货物要针对不同物品单独包装(好比传统部署要配置不同环境),现在所有东西都放进标准集装箱(Docker容器),卡车(服务器)直接拉走就行。三大核心组件构成了Docker的生态系统:
- 镜像(Image):好比集装箱的设计图纸,包含完整的运行环境
- 容器(Container):根据图纸造出来的实体集装箱,即运行中的服务
- 仓库(Registry):存放图纸的仓库,Docker Hub是最大的"图纸市场"
实际开发中最爽的是环境一致性。上周我帮同事调试代码,他电脑是Windows+Python3.8,我的是Mac+Python3.10。用Docker后,只需一句docker-compose up,两边的运行环境完全一致,再也不用说"在我机器上好好的"这种话了。
2. 手把手安装Docker
2.1 环境准备
以CentOS 7为例(其他系统可参考官方文档),先确认系统符合要求:
# 查看内核版本(需3.10以上)
uname -r
# 检查系统版本
cat /etc/os-release
遇到过最坑的情况是某些云主机默认没开cgroups(Docker依赖的Linux功能)。如果安装失败,先执行:
sudo yum install -y device-mapper-persistent-data lvm2
2.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.io
2.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. 实战:用加速器部署Nginx
4.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-port=8080/tcp --permanent&&sudo firewall-cmd --reload)
5. 进阶技巧与维护
5.1 镜像管理
查看下载的镜像:
docker images
清理无用镜像(谨慎操作):
docker image prune -a
5.2 容器生命周期
停止/启动容器:
docker stop my-nginx
docker start my-nginx
删除容器(加-v会同时删除关联的匿名卷):
docker rm -v my-nginx
5.3 修改配置后重启
每次修改daemon.json都需要:
sudo systemctl restart docker
建议在维护窗口操作,会短暂影响正在运行的容器。
刚开始用Docker时,我总喜欢把所有命令都记在笔记里。后来发现docker --help和官方文档才是最好的老师。比如忘记参数时,直接docker run --help就能看到所有选项说明。
更多推荐
所有评论(0)