1、Docker 是什么?
Docker一个开源的应用容器引擎,是实现容器技术的一种工具,让开发者可以打包他们的应用以及环境到一个镜像中,可以快速的发布到任何流行的操作系统上。
2、Docker的三大核心是什么?
镜像:Docker的镜像是创建容器的只读模板,通过镜像启动一个容器或多个容器。
容器:Docker的容器是镜像创建出来的运行实例,可以把容器看做是一个简易版的linux环境和运行在其中的应用程序。
仓库:用来存放镜像的地方,每个镜像有不同标签(tag)。
3、仓库、镜像、容器的关系是?
仓库存放镜像,主机通过仓库下载镜像,并通过镜像创建容器。
4、Docker与虚拟机的区别
内核:虚拟机有单独的系统内核,Docker与宿主机共享系统内核,所以虚拟机相对与Docker隔离性更好一些,虚拟机相当于物理层面的隔离,Docker相当于应用层面的额隔离。
大小:Docker镜像一般在几十M到几百M,比较轻量,虚拟机一般在在几G,比较笨重。
速度:Docker共享宿主机内核一般秒级启动,虚拟机时分钟级别的。
资源:Docker占用更少的资源,虚拟机有完整的系统所以占用资源比较多。
5、Docker容器的集中状态
有7种:created(已创建)、restarting(重启中)、running(运行中)、removing(迁移中)、paused(暂停)、exited(停止)、dead(死亡)
6、如何把主机的东西拷贝到容器内部?
通过 docker cp 命令即可,还能把容器内部内容拷贝到主机。
7、进入容器的方法有哪些?
通过 docker exec 进入容器内部。
8、如何让容器随着 Docker 服务启动而自动启动?
创建容器时,加上 --restart=always 参数。
创建容器后,通过修改容器配置文件的 RestartPolicy 参数值。
创建容器后,使用 docker update 命令更新容器的 --restart 参数值。
9.什么是 DockerFile?
Dockerfile 是一个文本文件,其中包含我们需要运行并构建 Docker 镜像的所有命令。Docker 使用 Dockerfile 中的指令自动构建镜像。我们可以docker build用来创建按顺序执行多个命令行指令的自动构建。
10.DockerFile中最常见的指定是什么?
Dockerfile 中最常见的指定是 FROM 指令,它用于指定基础镜像。基础镜像是创建新镜像的基础,它可以是官方镜像,也可以是自定义镜像。
另一个常见的指定是 RUN 指令,它用于在容器中运行命令。
除了 FROM 和 RUN 指令之外,还有许多其他常见的指定,例如 CMD 、 EXPOSE 、 ENV 等。你可以在 Dockerfile 官方文档中找到更多关于这些指令的信息。
11.如何从 Docker 镜像创建 Docker 容器?
为了从镜像创建容器,我们从 Docker 存储库中提取我们想要的镜像并创建一个容器。我们可以使用以下命令:
$ docker run -it -d <image_name>
12.DockerFile中的命令COPY和ADD命令有什么区别?
COPY 和 ADD 都是用于将文件复制到容器中的命令。但是,它们有一些重要的区别。
COPY 是安全的,而 ADD 不是。COPY 会将文件复制到容器中,而不会修改文件的权限。ADD 会将文件复制到容器中,并将文件的权限设置为 0644。这意味着,如果您使用 ADD 命令复制一个可执行文件,那么该文件将可以被任何人执行。
COPY 可以使用多个源文件,并将它们复制到容器中的一个目录中。ADD 只能使用一个源文件,并将其复制到容器中的一个目录中。
COPY 可以使用相对路径,这意味着您可以从当前目录复制文件。ADD 只能使用绝对路径,这意味着您必须指定文件的完整路径。
总体而言,COPY 是更安全、更灵活的命令。如果您需要将文件复制到容器中,建议您使用 COPY 命令。
13.docker compose可以使用 JSON 代替 YAML 吗?
是的,我们可以对Docker Compose文件使用 JSON 文件而不是YAML。
-f,–file FILE指定Compose模板文件,默认为docker-compose.yml,可以多次指定。
14.解释一下dockerfile的ONBUILD指令?
Dockerfile 中的 ONBUILD 指令是一种特殊的指令,它允许你在当前镜像的基础上构建其他镜像时执行一些操作。当构建一个镜像时,ONBUILD 指令中的命令将会被保存,并在后续构建的镜像中执行。
ONBUILD 指令通常用于创建可重用的基础镜像,以便其他开发者可以在其基础上构建自己的镜像,并在构建过程中执行一些特定的操作。
15.什么是Docker Swarm?
Docker Swarm 是 Docker 官方提供的一个原生的容器编排和集群管理工具,它允许用户创建和管理一个由多个 Docker 节点组成的集群,以便在集群中部署和运行容器化的应用程序。
Swarm 使用主节点和工作节点的概念来组织容器集群。主节点负责管理整个集群的状态和任务分配,而工作节点负责运行容器。
通过 Docker Swarm,用户可以轻松地扩展应用程序,实现高可用性和负载均衡。Swarm 提供了一些高级功能,如服务发现、负载均衡、滚动更新等,使得在容器集群中部署和管理应用程序变得更加简单和可靠。
16.如何在生产中监控docker?
在生产环境中监控 Docker,可以采取以下几种方式:
*使用 Docker 内置的监控工具:Docker 提供了一些内置的监控工具,如 Docker Stats 和 Docker Events。Docker Stats 可以实时监测容器的 CPU、内存、网络和磁盘使用情况,而 Docker Events 可以捕获容器和镜像的事件。可以使用这些工具来监控容器的运行状态和性能指标。
*使用第三方容器监控工具:有许多第三方工具专门用于监控 Docker 容器,如 Prometheus、cAdvisor、Datadog、Sysdig 等。这些工具提供更丰富的监控功能,可以收集和展示更多的指标数据,并提供报警功能和可视化仪表盘,帮助你更好地监控和管理 Docker 容器。
*集成容器编排工具的监控功能:如果你在生产环境中使用容器编排工具如 Docker Swarm、Kubernetes 等,这些工具通常都提供了内置的监控功能。通过集成容器编排工具的监控功能,你可以监控整个容器集群的状态、资源使用情况、服务健康状况等。
*日志监控:除了监控容器的性能指标,还应该关注容器的日志。通过收集和分析容器的日志,可以及时发现和解决潜在的问题。可以使用 ELK Stack(Elastic