[面试题~Docker] 云原生必问基础篇

这篇具有很好参考价值的文章主要介绍了[面试题~Docker] 云原生必问基础篇。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基础相关

1. Docker 是什么?

Docker 是基于容器技术实现的,容器技术最开始是基于 Linux Container(简称 LXC)技术实现的,通过内核提供的 NamespaceCgroup 机制,实现了对应用程序的隔离以及物理资源的分配
Docker 在容器基础上发展出了一个完善的生态系统,它将容器视为一种打包格式,将应用程序所需的一切,比如依赖库、运行时环境等都集合在了在一起,使得一次构建,到处运行
它将开发与运维很好的融合在一起。开发人员可以很轻松的构建、打包、推送和运行应用程序。而且还允许我们将容器视为部署单元,以模块化的方式发布,降低了系统的运维管理难度。

2. 镜像是什么

镜像就像是包含了操作系统的一张光碟,它是一个模板文件,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。
另外,镜像是一个分层的文件系统,通过一层层的组合,使得我们可以复用这些不同粒度的镜像文件。

3. 容器是什么

容器的发展来源于我们码头的集装箱的思想,一次打包多方部署,简化上线流程。
简单地说,容器就是一个进程+进程的运行环境的简单整体。

容器是镜像的运行实例,我们可以把镜像看成是一个个的构建块,容器根据这些构建块搭建起了一个隔离的,拥有整个包的应用程序。每一个容器都是一个标准化单元,确保了在不同机子上也能拥有一致的行为。

4. 数据卷是什么

Docker 对数据持久化的解决方案,数据不会随着容器结束而丢失,通过将宿主机的某一文件目录挂载到容器里来实现。在 Docker 里提供了三种方法来实现目录的挂载:

  • volumes**:** 属于 Docker 管理的目录,无需自己创建目录。
  • bind mounts:自己指定的某个目录,需注意不同操作系统的文件路径格式。
  • tmpfs:仅存储在主机系统的内存中,不会持久保存在磁盘上。容器可以使用它来共享简单状态或非敏感的信息

5. Docker 和虚拟机的区别?

容器技术和虚拟机都提供了环境隔离的功能。不同的是。容器是运行在操作系统上的一个进程,它和其他应用程序是共享内核的,由操作系统提供虚拟化隔离功能;而虚拟机则是完完全全起了个操作系统,将环境隔离的更加彻底。

6. Docker 常用命令有哪些?

容器生命周期管理: run、start/stop/restart、kill、rm、pause/unpause
容器操作:ps、inspect、top
镜像仓库:login、pull、push、search
本地镜像管理:images、rmi、tag、build、history
例如,当我们需要运行一个容器时,则可以执行:

docker run  nginx:test

原理相关

1. docker 有几种网络模式

host 模式

在建一个容器时,一般会为容器分配一个独立的 Network Namespace 以进行网络隔离。如果我们使用了 Host 模式,则不再分配 Network Namespace,而是和宿主机共用一个 Network Namespace。此时容器将不再拥有自己的虚拟网卡、IP 和端口,而是和宿主机共用一个 IP 和端口。
[面试题~Docker] 云原生必问基础篇,# 网络,云原生,docker,java

container模式

这个模式指定新创建的容器和已经存在的一个容器共享一个 Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的 IP,而是和一个指定的容器共享 IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过 lo 网卡设备通信。
[面试题~Docker] 云原生必问基础篇,# 网络,云原生,docker,java

none模式

使用none模式,Docker容器拥有自己的 Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息。需要我们自己为 Docker 容器添加网卡、配置IP等。
这种网络模式下容器只有lo回环网络,没有其他网卡。none模式可以在容器创建时通过--network=none来指定。这种类型的网络没有办法联网,封闭的网络能很好的保证容器的安全性。
[面试题~Docker] 云原生必问基础篇,# 网络,云原生,docker,java

bridge模式

Docker 在主机上会创建一个 docker0 的网桥,每当有容器要创建时,便会为容器分配一个独立的网卡,然后桥接到虚拟网桥上。这其实是一对虚拟网卡,一端放在容器里,另一端放在 docker0 网桥里。当一端有数据达到时,就会把数据包转发到另一端上,这就实现了网络通信。
bridge模式是docker的默认网络模式,不写–net参数,就是bridge模式。使用docker run -p时,docker实际是在iptables做了DNAT规则,实现端口转发功能。可以使用 iptables -t nat -vnL 查看。
[面试题~Docker] 云原生必问基础篇,# 网络,云原生,docker,java

2. docker 网络实现在Linux 中的表现是什么?

3. Docker 储存后端有哪几种模式?

3. Docker 的底层技术是什么?

Docker 在 Linux 的底层技术有:Namespaces(资源隔离)、CGroups (资源限制)、UnionFS (联合文件系统)。其中:

  • Namespaces(资源隔离):将系统的全局资源通过抽象划分,使得在同一 namespace 中的进程看起来拥有自己的全局资源。主要有 Mount namespaces(文件系统挂载)、Network namespaces(网络)、User namespaces(用户)等的资源隔离。
  • CGroups(资源限制):对系统资源的限制,比如 CPU、内存等。
  • UnionFS (联合文件系统):一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录。便于镜像的分层继承。

4. iptable在 docker 中有什么应用

应用相关

1. 介绍一下 docker 的网络通信

首先 docker 的网络通信主要分以下几种场景:

1.1 同主机容器间通信

  • ip 通信

因为 docker 的 IP是无法确定的,所以比较麻烦,一般不用。

  • Docker DNS Server

Docker1.0开始,docker daemon实现了一个内嵌的 DNS Server,使得容器可以直接通过“容器名”通信。
缺点:只能在 user-defined网络中使用。

  • joined容器

joined容器可以是多个容器共享同一个网络栈,包括网卡以及配置信息。

1.2 容器与外界主机通信

容器默认能访问外网,使用了 NAT进行网络地址转换。

1.3 外界主机与容器通信

使用端口映射之后,就可以利用主机 ip+端口经过 docker-proxy转发,从而访问到跨主机的docker容器。文章来源地址https://www.toymoban.com/news/detail-771060.html

到了这里,关于[面试题~Docker] 云原生必问基础篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【云原生】 一文了解docker中的网络

    例如:bridge(桥接)、host(主机)、overlay(覆盖)和macvlan(MACVLAN)等。这意味着可以根据具体的场景和需求来选择使用哪一种网络驱动程序。 在该模式下,容器将配置为使用Docker守护进程上的bridge网络。这使得所有同一网络的容器都能够相互通信,并且可以使用连接到宿

    2024年02月14日
    浏览(41)
  • 【云原生】· 一文了解docker中的网络

    目录 🍒查看docker网络 🍒bridge网络 🍒none网络 🍒host网络 🍒自定义容器网络     🦐博客主页:大虾好吃吗的博客     🦐专栏地址:云原生专栏         根据前面的学习,已经对docker有了一些简单的概念。这里在啰嗦一句, 容器是一个独立的环境 ,可以理解为一个小

    2024年02月09日
    浏览(43)
  • 【云原生】Docker网络及Cgroup资源控制

    Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网关。因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的 Container-IP 直

    2024年02月16日
    浏览(43)
  • 在CSDN学Golang云原生(Docker基础)

    要在golang中使用Docker,需要先安装并配置好Docker。下面是基本的Docker安装和配置步骤: 下载并安装Docker 官方下载地址:https://docs.docker.com/get-docker/ 根据你的操作系统选择对应版本的Docker,并按照官方文档进行安装。 配置Docker 在Linux环境下,可以使用以下命令启动Docker服务:

    2024年02月15日
    浏览(38)
  • 【云原生 | 从零开始学Docker】七丶实战提交自己的镜像以及docker网络

    该篇文章已经被专栏《从零开始学docker》收录 为了巩固dockerfile,我们这里来进行真实的实战。 jdk 下载linux.tar.gz tomcat 最新版就行 首先我们要 vim Dockerfile 以此来创建一个叫dockerfile的文件。注:官方指定命名,build自动寻找,不需要-f指定 然后编写以上的脚本内容加入到dock

    2024年02月02日
    浏览(56)
  • 【云原生】Docker网络Overlay搭建Consul实现跨主机通信

    目录 1.overlay网络是什么? 实现overlay环境 1.overlay网络是什么?         在Docker中,Overlay网络是一种容器网络驱动程序,它允许在多个Docker主机上创建一个虚拟网络,使得容器可以通过这个网络相互通信。         Overlay网络使用VXLAN(Virtual Extensible LAN)技术来实现多主

    2024年02月14日
    浏览(41)
  • 【云原生】Docker跨主机网络Overlay与Macvlan的区别

      跨主机网络通信解决方案 docker原生的overlay和macvlan 第三方的flannel,weave,calico 1.overlay网络 在Docker中,Overlay网络是一种容器网络驱动程序,它允许在多个Docker主机上创建一个虚拟网络,使得容器可以通过这个网络相互通信。 Overlay网络使用VXLAN(Virtual Extensible LAN)技术来实

    2024年02月16日
    浏览(42)
  • 【云原生Docker系列第三篇】Docker网络模式(在失去的所有人里,我最怀念自己 )

    😜即日起,更新云原生相关知识,喜欢的小伙伴可以给我点个三连喔 😜收录至专栏 云原生 😜【云原生Docker系列第一篇】Docker镜像管理 😜【云原生Docker系列第二篇】Docker容器管理 docker 使用linux 桥接,在宿主机虚拟一个docker 容器网桥(docker0) ,docker 启动一个容器时会根据

    2024年02月02日
    浏览(54)
  • Docker基础24--Docker网络配置

    Docker服务启动时候会创建一个名为docker0的网桥,在启动容器的时候,会在宿主机和容器内各生成一个虚拟网卡。宿主机和容器内的虚拟网卡默认是连接到docker0这个网桥上的。所以容器可以和宿主机或其它容器网络通信。 Docker0的默认IP为172.17.0.1   启动一个容器再观察:   发

    2023年04月08日
    浏览(44)
  • Docker 网络模型使用详解 (1)Dockers网络基础

    目录 环境准备 Dockers 网络基础 1.端口映射 查看随机映射端口范围  -p可以指定映射到本地端口 映射指定地址和指定端口 映射指定地址 宿主机端口随机分配  指定传输协议  端口暴露 容器互联 自定义网络 现在把container7加入到demo_net中 在启动一个容器加入到demo_net  查看三个

    2024年02月14日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包