第十篇:Docker 常见问题与进阶

举报
yd_220371319 发表于 2026/09/19 10:34:02 2026/09/19
【摘要】 学 Docker 的过程中,真正让人头疼的往往不是命令本身,而是各种奇怪的问题。这一篇把比较常见的坑集中整理一下。容器为什么启动后马上退出?首先:docker ps -a找到容器:docker logs <container>很多时候是因为主进程:启动↓执行失败/执行结束↓进程退出↓容器退出端口被占用了怎么办?例如:docker run -p 8080:80 nginx提示:port is ...


学 Docker 的过程中,真正让人头疼的往往不是命令本身,而是各种奇怪的问题。

这一篇把比较常见的坑集中整理一下。

容器为什么启动后马上退出?

首先:


docker ps -a

找到容器:


docker logs <container>

很多时候是因为主进程:


启动
↓
执行失败/执行结束
↓
进程退出
↓
容器退出

端口被占用了怎么办?

例如:


docker run -p 8080:80 nginx

提示:


port is already allocated

说明宿主机 8080 已经被其他程序使用。

可以换:


-p 8081:80

注意:


8081

是宿主机端口。


80

仍然是容器端口。

权限问题

Linux 上 Docker 经常遇到权限问题。

例如:


Permission denied

不要第一反应:


chmod -R 777

这种方式虽然有时候能“解决”,但也可能留下严重的安全问题。

应该先确认:


容器运行用户
UID
GID
宿主机目录权限
Volume 权限

Docker 把磁盘吃满了

先看:


docker system df

它可以帮助你判断:


镜像
容器
Volume
Build Cache

分别占用了多少空间。

确认无用资源之后,再考虑清理。

不要在不了解数据的情况下直接进行大范围删除。

尤其要注意 Volume。

Docker 和 Kubernetes 有什么关系?

这也是一个非常经典的问题。

可以粗略理解:

Docker

主要解决:


构建
分发
运行

Kubernetes

主要解决:


集群管理
调度
服务发现
扩缩容
故障恢复

所以 Kubernetes 并不是简单意义上的“更高级 Docker”。

它们解决的问题层级不同。

Docker 安全

生产环境至少要注意:

不要随便运行陌生镜像

镜像不是“天然安全”的。

不要把密钥写进镜像

例如:


ENV API_KEY=xxxxx

这种方式很容易把密钥带进镜像历史或其他可见信息中。

尽量不要使用 root

应用如果没有必要,不应该以 root 身份运行。

固定版本

不要什么都:


latest

固定版本更加方便审计和回滚。

少开放端口

例如 Redis、MySQL 等内部服务,通常不应该直接暴露到公网。


到这里,Docker 入门主线就结束了

如果把这 10 篇全部压缩成几句话:


Image
负责打包

Container
负责运行

Volume
负责数据

Network
负责通信

Dockerfile
负责构建镜像

Compose
负责组合多个服务

再往后,就可以继续往:


Docker
  ↓
CI/CD
  ↓
容器编排
  ↓
Kubernetes
  ↓
云原生

继续深入。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。