作者:司陌笙
环境:阿里云 ECS / Alibaba Cloud Linux 3
标签:Docker、Zabbix、排错、阿里云、运维学习
一、 本期核心知识点:
- Docker 为什么存在? 为了解决“在我电脑上是好的”这种千古难题。把环境和代码打包在一起,到哪都能跑。
- 镜像(Image) vs 容器(Container)
- 镜像:像 ISO 系统文件、Class 类定义,是静态的模板。
- 容器:像装好的操作系统、new 出来的对象,是运行时的实体。
- Docker Hub 是什么? 官方的“应用商店”。
docker pull nginx就是从这里下载的。 划重点:在国内,如果不配置加速器,这个“应用商店”基本是打不开的(亲身体验)。
二、 必学实操命令
这几条命令是 Docker 的“吃饭家伙”,必须形成肌肉记忆:
# 1. 查看 Docker 状态和信息
docker version
docker info
# 2. 镜像相关(Image)
docker pull nginx # 拉取镜像
docker images # 查看本地有哪些镜像
docker rmi nginx # 删除镜像
# 3. 容器相关(Container)
docker run -d -p 80:80 nginx # 启动容器(-d后台运行,-p端口映射)
docker ps # 查看正在运行的容器
docker ps -a # 查看所有容器(包括挂掉的)
docker stop <容器ID> # 停止容器
docker rm <容器ID> # 删除容器
docker exec -it <容器ID> /bin/bash # 进入容器内部(非常重要)
三、 踩坑实录 & 排错思路(本期重头戏)
坑位 1:添加 Docker 仓库时报 SSL 错误
报错现象:
Curl error (35): SSL connect error ...
排错思路:
- 首先想到是不是网络断了?
ping www.baidu.com发现是通的。 - 那可能是 HTTPS 出口被拦截(阿里云常见)。
- 放弃 Docker 官方源,改用阿里云内网镜像源。
解决方案(运维技巧):
不用 https://download.docker.com,改用阿里云自己的源:
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
坑位 2:docker run hello-world 超时
报错现象:
Client.Timeout exceeded while awaiting headers
排错思路:
- Docker 默认去国外的
registry-1.docker.io拉镜像。 - 国内直连 Docker Hub 就像早高峰挤地铁,根本挤不上去。
解决方案(生产环境必备):配置镜像加速器
这步是必做项,不是可选项!
- 去阿里云控制台拿自己的加速器地址。
- 修改 Docker 配置文件:
{
"registry-mirrors": ["https://你的专属地址.mirror.aliyuncs.com"]
}
- 重启 Docker 服务:
sudo systemctl restart docker
四、 避坑总结(血泪教训)
- 别死磕官方源:在阿里云上,能用 mirrors.aliyun.com 就别用 download.docker.com。
- 安全组 ≠ 防火墙:Docker 跑起来了,外网访问不了,90% 是阿里云控制台的安全组没放行端口。
- latest 标签慎用:虽然方便,但在生产环境容易因为镜像偷偷更新导致事故。