1. exec能进入停止的容器中吗
不能通过exec 进入已经停止的容器中。
2. 能复制文件到停止容器中,或者能从停止的容器中复制出文件吗
即使容器已经停止,仍然可以通过 docker cp 命令将文件复制到容器中或从容器中复制出来。这是因为 docker cp 操作的是容器的文件系统,而不是依赖于容器是否正在运行。
3. docker实现原理有哪些
Docker 的实现原理主要包括 Namespaces(隔离性)、Cgroups(资源控制)、UnionFS(联合文件系统) 和 容器运行时(生命周期管理)。
4. 什么是Namespace
Namespace(命名空间) 是 Linux 内核提供的一种轻量级系统资源隔离机制,允许将系统资源(如进程、网络、文件系统等)划分到不同的命名空间中,使得每个命名空间拥有独立的资源视图。
5. 什么是cgroup
Cgroup(Control Group) 是 Linux 内核提供的一项功能,用于对进程组使用的资源进行限制、统计和优先级控制。它是 Docker 等容器技术实现 资源隔离与限制 的核心技术之一。
6. 什么是联合文件系统
联合文件系统(UnionFS) 是一种分层、轻量级的文件系统,它允许将多个目录(称为分支)合并成一个统一的视图,使得用户或应用程序可以像操作普通文件系统一样访问这些合并后的文件,为 Docker 提供了镜像分层、高效存储和容器文件系统隔离的能力,是 Docker 镜像构建与运行的核心依赖之一。
7. docker有哪些网络模式,分别用于什么场景
8. docker与containerd有什么关系
Docker 是一个面向用户的完整容器平台,而 containerd 是其背后的容器运行时,负责实际的容器管理和执行;containerd 更适合用于生产环境或 Kubernetes 等系统中,强调标准化和高性能。
9. 安装docker时会安装containerd吗
安装 Docker 时会默认安装 containerd,因为它是 Docker 实现容器运行的核心依赖组件。
10. 如果只安装containerd,与安装docker对比,会缺失哪些功能
只安装 containerd 相比安装 Docker,会缺少镜像构建、网络/卷管理、Compose 编排、调试接口等上层功能,但保留了容器运行的核心能力,适合用于 Kubernetes 等生产级平台。
11. 使用普通用户运行docker容器,是否有安全隐患
使用普通用户运行 Docker 容器本身是可行的,但必须严格控制其权限、限制容器能力,并避免以 root 用户运行容器内部进程,否则仍存在容器逃逸、数据泄露等重大安全隐患。
12. 制作Dockerfile时如何指定使用普通用户身份运行进程
加入参数USER
USER 用户名
13. 容器使用普通用户身份运行进程,有什么优缺点
优点:
缺点:
14. docker挂载目录时,:(冒号)前使用路径和只写名称有什么区别
冒号前写完整路径表示挂载宿主机的具体目录;只写名称表示使用 Docker 自动管理的命名卷,后者更安全、便于维护,推荐用于生产环境。
15. 我想将镜像中的目录挂载到宿主机上,:(冒号)应该使用路径还是命名卷?比如启动一个Mysql容器时,将数据库原本的数据文件挂载到宿主机上。
如果是测试与开发环境下应该使用路径,在生产环境下则应该使用命名卷。