秋招日寄|Docker模拟面试拷打|20241108

基础概念

1. 什么是Docker?
Docker是一个开源的容器化平台,能够将应用及其依赖打包到轻量级、可移植的容器中,确保应用在不同环境中运行的一致性。它使用Linux的容器技术来提供隔离和资源管理,简化了应用的部署和测试流程。

2. Docker容器和虚拟机的区别是什么?
Docker容器使用操作系统级别的虚拟化,共享宿主机的内核,多个容器之间共享资源,但彼此隔离。相比之下,虚拟机在硬件级别进行虚拟化,每个虚拟机运行独立的操作系统,资源消耗更大。容器通常更轻量、启动更快,且资源占用更少。

3. 什么是Docker镜像?
Docker镜像是一个只读的模板,包含了应用程序及其运行所需的依赖环境和配置文件。镜像用于创建容器,可以视为容器的“蓝图”。

4. 如何创建Docker容器?
使用docker run命令创建并启动容器。例如,docker run -d -p 80:80 nginx会基于nginx镜像启动一个容器,将容器的80端口映射到宿主机的80端口。

5. Docker Hub是什么?
Docker Hub是Docker官方的公共镜像仓库,用于存储、共享和分发Docker镜像。用户可以在Docker Hub上找到各种公共镜像,也可以上传并管理自己的私有镜像。

常用命令

6. 如何查看当前运行的Docker容器?
使用docker ps命令查看当前运行的容器。要查看所有容器,包括停止的容器,使用docker ps -a

7. 如何停止和启动Docker容器?
使用docker stop <容器ID或名称>来停止容器,使用docker start <容器ID或名称>来启动容器。

8. 如何进入正在运行的Docker容器?
使用docker exec -it <容器ID或名称> /bin/bash进入容器的交互式终端,以便在容器内执行命令。

9. 如何删除Docker镜像和容器?
使用docker rm <容器ID>删除容器,docker rmi <镜像ID>删除镜像。注意:如果容器正在运行,需先停止才能删除。

10. 如何查看Docker容器的日志?
使用docker logs <容器ID或名称>查看容器的日志输出,便于调试和监控。

网络管理

11. Docker的默认网络模式有哪些?
Docker提供的默认网络模式包括:

  • bridge:桥接模式,容器使用虚拟桥接网络互联。
  • host:容器使用宿主机的网络栈。
  • none:容器无网络连接。
  • container:与其他容器共享网络命名空间。

12. 如何创建Docker网络?
使用docker network create命令创建网络。例如,docker network create --driver bridge my_bridge_network创建了一个桥接网络。

13. Docker容器间通信是如何工作的?
容器间可以通过Docker网络进行通信。同一网络内的容器可以使用容器名称进行DNS解析,实现互联互通。

存储管理

14. 什么是Docker卷(Volume)?
Docker卷是一种持久化存储机制,用于在容器间共享和保存数据。卷独立于容器的生命周期,即使容器删除,数据依然保留。

15. 如何创建和使用Docker卷?
使用docker volume create命令创建卷,并通过-v选项将卷挂载到容器中。例如,docker run -v my_volume:/data my_imagemy_volume挂载到容器的/data目录。

Docker Compose

16. 什么是Docker Compose?
Docker Compose是一种定义和管理多容器Docker应用的工具。它通过docker-compose.yml文件定义服务、网络和卷等配置,简化多容器应用的运行。

17. 如何启动Docker Compose定义的服务?
使用docker-compose up命令启动所有在docker-compose.yml中定义的服务。加上-d选项可以后台运行。

18. Docker Compose文件中的links参数有什么作用?
links用于定义容器间的依赖和通信路径,但在自定义网络普及后,它的重要性逐渐下降,推荐使用网络名称代替。

19. 怎样在Docker Compose中设置环境变量?
可以在docker-compose.yml文件中使用environment键配置环境变量,或者通过.env文件加载。

Docker Swarm

20. Docker Swarm是什么?
Docker Swarm是Docker内置的原生集群管理工具,用于在多个主机上部署和管理容器,支持服务编排和集群模式。

21. 如何创建一个Docker Swarm集群?
在主节点上运行docker swarm init命令初始化集群。其他节点可通过提供的docker swarm join命令加入。

22. Docker Swarm中的服务和任务是什么?
服务定义了应用的期望状态,如副本数量。任务是服务的实例,是运行在Swarm节点上的容器。

23. 如何扩展Docker Swarm中的服务?
使用docker service scale <服务名称>=<副本数>调整服务的副本数量。

24. Docker Swarm和Kubernetes的主要区别是什么?
Kubernetes功能更丰富,适合复杂应用场景,支持更高级的调度和扩展能力。Docker Swarm简单易用,适合快速部署和轻量级集群管理。

安全和维护

25. 如何保证Docker容器的安全性?
通过以下措施保障安全:使用受信任的镜像、运行非root用户、限制容器资源、定期更新Docker和宿主机系统、启用Docker的安全扫描等。

26. 怎样更新Docker容器?
停止旧容器,拉取最新镜像,删除旧容器并用新镜像重新创建容器。

27. Docker中的健康检查如何工作?
可以在Dockerfile中定义HEALTHCHECK指令,或在docker-compose.yml中配置healthcheck来周期性检查容器的健康状态。

28. 如何清理未使用的Docker资源?
使用docker system prune命令清理未使用的容器、镜像、网络和构建缓存。

高级话题

29. 什么是Docker的多阶段构建?
多阶段构建是Dockerfile中使用多个构建阶段的技术,使得可以从不同阶段复制构建结果,从而显著减少最终镜像的体积。

30. Docker中的COPY和ADD有什么区别?
COPY仅用于复制本地文件,而ADD除了复制,还支持解压归档文件和从URL下载资源。

31. Docker是如何实现容器隔离的?
Docker利用Linux命名空间(Namespaces)和控制组(cgroups)实现进程、文件系统、网络等资源的隔离和限制。

32. 解释Docker容器的重启策略。
Docker支持的重启策略包括:

  • no:默认值,不重启。
  • always:总是重启容器。
  • on-failure:仅在容器退出状态非0时重启。
  • unless-stopped:容器会自动重启,除非手动停止。
#牛客创作赏金赛#

一些八股模拟拷打Point,万一有点用呢

全部评论
佬!
点赞 回复 分享
发布于 11-11 11:11 山东

相关推荐

1 6 评论
分享
牛客网
牛客企业服务