Java面试基础 -- Docker篇
1.什么是Docker?
Docker是一个容器化平台,它以容器的形式将您的应用程序及其所有依赖项打包在一起,以确保您的应用程序在任何环境中无缝运行。
2.什么是Docker镜像?
Docker镜像是Docker容器的源代码。换句话说,Docker镜像用于创建容器。使用build命令创建镜像,并且在使用run启动时它们将生成容器。镜像存储在Docker注册表中,registry.hub.docker.com因为它们可能变得非常大,镜像被设计为由其他镜像层组成,允许在通过网络传输镜像时发送最少量的数据。
3.什么是Docker容器?
Docker容器包括应用程序及其所有依赖项,但与其他容器共享内核,在主机操作系统的用户空间中作为独立进程运行。Docker容器不依赖于任何特定的基础架构:它们可以在任何计算机,任何基础架构和任何云中运行。
4.什么是DockerHub?
Docker hub是一个基于云的注册表服务,允许您链接到代码存储库,构建映像并测试它们,存储手动推送的镜像以及指向Docker云的链接,以便您可以将镜像部署到主机。它为整个开发流程中的容器发现,分发和变更管理,用户和团队协作以及工作流自动化提供了集中资源。
5.Docker容器的几种状态?
运行、已暂停、重新启动、已退出
6.什么是虚拟化?
虚拟化允许您在同一硬件上运行两个完全不同的操作系统。每个客户操作系统都经历了引导,加载内核等所有过程。您可以拥有非常严格的安全性,例如,客户操作系统无法完全访问主机操作系统或其他客户,从而完全混乱。
可以基于虚拟化方法如何模仿客户操作系统的硬件并模拟客户操作环境来对虚拟化方法进行分类。主要有三种类型的虚拟化:
- 仿真
- 半虚拟化
- 基于容器的虚拟化
7.什么是Docker Swarm?
Docker Swarm是Docker的群集管理工具。它将Docker主机池转变为一个虚拟Docker主机。Docker Swarm提供标准的Docker API,任何已经与Docker守护进程通信的工具都可以使用Swarm扩展到多个主机。
8.CI(持续集成)服务器的功能是什么?
CI功能就是在每次提交之后不断地集成所有提交到存储库的代码,并编译检查错误
9.Docker常用命令?
docker pull 拉取或者更新指定镜像
docker push 将镜像推送至远程仓库
docker rm 删除容器
docker rmi 删除镜像
docker images 列出所有镜像
docker ps 列出所有正在运行的容器
docker ps -a 列出所有的容器
docker inspect 查看镜像的详细信息
10.Dockerfile常见的指令有哪些?
FROM:为后续指令设置基本镜像,在每个有效的Dockerfile中,FROM是第一条指令;
LABEL:功能是为镜像指定标签
RUN:运行指定的命令,使用每个RUN命令,我们在图像上添加一些内容;
CMD:容器启动时要运行的命令,提供执行容器的默认值,如果包含多个CMD命令,只使用最后一个指令;
11.如何监控生产中的Docker?
可以通过docker stats和docker events等工具监控生产中的Docker:
- Docker stats:当我们使用容器ID调用docker stats时,我们获得容器的CPU,内存使用情况等。它类似于Linux中的top命令。
- Docker events:Docker events是一个命令,用于查看Docker守护程序中正在进行的任务。
一些常见的Docker事件是:attach,commit,die,detach,rename,destroy等。 我们还可以使用各种选项来限制或过滤我们感兴趣的事件
12.Dockerfile命令COPY和ADD有什么区别?
一般而言,虽然ADD并且COPY在功能上类似,但是首选COPY。
那是因为它比ADD更易懂。COPY仅支持将本地文件复制到容器中,并且一些tar文件不会自动解压,而ADD具有一些功能(如仅限本地的tar提取和远程URL支持),这些功能并不是很明显。因此,ADD的最佳用途是将本地tar文件自动提取到镜像中,如ADD rootfs.tar.xz /。
13.如何使用Docker构建和环境无关的系统?
有三个主要功能有助于实现这一目标:
- 卷
- 环境变量注入
- 只读文件系统