docker 20 / 62 题
ENTRYPOINT 的 shell 形式和 exec 形式区别?
区别就是PID 1 不一样。exec 形式用中括号写,程序直接是 PID 1,收到关机信号能优雅退出;shell 形式没中括号,PID 1 是 shell,关机信号 shell 不转发给程序,程序收不到就被强杀。所以都用 exec...
Volume 的生命周期?容器删了 Volume 还在吗?
容器删了 Volume 还在,因为 Volume 的生命周期独立于容器。具名 Volume 删容器时不会被自动删除,只能通过 docker volume rm 手动删;匿名 Volume 用 docker rm -v...
Docker 的 DNS 解析机制?
Docker 内置了 DNS 服务器 127.0.0.11,容器里的 DNS 查询都先经过它。在同一自定义网络内,容器之间可以用容器名或服务名直接互访,Docker DNS 自动把名字解析成 IP,不用硬编码 IP 地址。默认...
Overlay 网络与跨主机容器通信
overlay 网络是 Docker 用来实现跨主机容器通信的虚拟网络,让不同机器上的容器像在同一个局域网里一样互访。底层用 VXLAN 技术,原理是把容器的通信包再套一层物理网络的外壳传输,到达目标机器后拆掉外壳还原。使用方式是在...
STOPSIGNAL 指令的作用?
STOPSIGNAL 是指定 docker stop 时发给容器的退出信号,默认是 SIGTERM。Docker stop 的流程是先发 SIGTERM 让容器优雅退出,等10秒还没停就发 SIGKILL 强杀。需要改...
ONBUILD 指令是干嘛的?
ONBUILD 是 Dockerfile 里的"延迟触发器",写在父镜像里但不会立刻执行,等别人 FROM 这个镜像构建子镜像时才自动触发。典型场景是做团队基础镜像:运维把 COPY、RUN、CMD 等公共步骤用 ONBUILD...
.dockerignore 文件有什么用?
.dockerignore 的作用是控制 docker build 时的构建上下文,指定哪些文件不传给 Docker daemon。核心好处有三个:第一是加速构建,排除 node_modules、.git 等大目录,构建上下文从...
EXPOSE 和 -p 端口映射的区别?
EXPOSE 和 -p 的核心区别是:EXPOSE 是声明,-p 是真正的映射。EXPOSE 写在 Dockerfile 里只是标注"这个容器要用这个端口",就像门口贴个告示,但门没开,外部还是访问不到;-p...
Dockerfile 中 ARG 和 ENV 的区别?
ARG 和 ENV 的核心区别是作用阶段不同:ARG 只在构建时有效,构建完就消失,容器运行时访问不到;ENV 构建时和运行时都有效,值写进镜像,容器里始终能用。ARG 的典型场景是传构建参数,比如基础镜像版本、安装包版本,用...
docker swarm是什么
Docker Swarm 是Docker 原生的容器集群编排工具,把多台机器组成集群统一管理。架构是 Manager 节点负责调度和管理,Worker 节点负责运行容器,Manager 可多个做高可用(Raft...
Docker 安全加固怎么做?
Docker 安全加固是分层防御的思路:宿主机层面保持系统更新、关闭不必要的服务,地基不稳全白搭;Daemon 层面禁用远程 TCP 暴露、启用 TLS、严格控制 docker 组权限**(docker 组等于...
Docker 镜像仓库私有化方案有哪些?
Docker 镜像仓库私有化方案主要有五种:最轻量的是官方 Docker Registry,一行命令启动,但只有存储拉取功能没有管理界面,适合个人和小团队;企业级首选是 Harbor,VMware 开源、CNCF 毕业项目,有...
如何保证 Docker 容器运行的安全性?
Docker 容器安全保障主要有几个方面:最基本的是不用 root 跑容器,Dockerfile 里用 USER 指定普通用户,被入侵了损失也有限;用 --read-only...
Docker 容器编排工具有哪些?怎么选?
Docker 容器编排工具主要有四个:Docker Compose 适合单机编排,一个 yml 文件定义多服务一键启动,开发和测试环境够用;Docker Swarm 是 Docker...
如何排查容器内存泄漏或 CPU 飙高?
面试题排查容器内存泄漏或 CPU 飙高,先用 docker stats 全局看哪个容器资源异常,定位到具体容器;然后用 docker top 看容器内是哪个进程在吃资源;再 docker exec 进容器用 top/ps...
Docker 中如何管理容器日志?
Docker 默认用 json-file 驱动存日志,日志全写磁盘不会自动清理,跑久了会撑爆。查看日志用 docker logs,支持 --tail、-f 实时跟踪。防磁盘爆的核心是配日志轮转:max-size...
Docker 容器如何设置时区?
面试版Docker 容器默认时区是 UTC,比北京时间差8小时,必须手动设置。最简单的方式是设环境变量 TZ=Asia/Shanghai,但前提是镜像里装了 tzdata;最靠谱的方式是挂载宿主机的 /etc/localtime...
如何备份和迁移 Docker 容器的数据?
面试版Docker 容器数据备份迁移主要有几种方式:最推荐的是通过 Volume 备份,起一个临时容器挂载 Volume 打包成 tar;临时拷几个文件可以用 docker cp,直接从容器里复制出来;如果想把整个容器状态带走,用...
Docker Engine vs containerd 的区别
面试一口气版本Docker Engine 是一整套容器工具链,包含构建镜像、管理镜像、运行容器、网络、日志等所有功能;containerd 只是容器运行时,只负责创建和管理容器的生命周期。关键是 Docker Engine...
Docker 和 Kubernetes 的关系是什么?
面试一口气版本Docker 和 Kubernetes 是协作关系不是替代关系,Docker 解决"怎么跑一个容器",K8s 解决"怎么管理大量容器"。K8s 1.24 开始弃用了 Docker Engine 作为容器运行时,改用...