175道Docker面试题(上)

目录

1、什么是docker?

2、Docker与普通虚拟机的对比:

3、Docker常用命令:

4、Docker镜像是什么?

5、Docker容器是什么?

6、Docker容器有几种状态?

7、Dockerfile中最常见的指令是什么?

8、Dockerfile中的命令COPY和ADD命令有什么区别?

9、dockerfile的ONBUILD指令?

10、什么是打包、分发、部署?

11、Docker应用场景?

12、容器带来的好处?

13、什么是Docker?

14、Docker的作用或使用其的目的?

15、虚拟机和容器对比图表:

16、容器与主机之间的数据拷贝命令:

17、Docker Swarm是什么?

18、什么是容器?

19、容器虚拟化和传统虚拟化的区别是什么?

20、namespace在容器中的功能是什么?

21、Cgroup的功能是什么?

22、docker能不能在32位系统里运行?

23、docker的核心组件有哪些?

24、我们所安装的docker是哪个版本?

25、什么是docker容器?

26、docker容器的状态?

27、docker容器的内部机制?

28、如何启动容器时指定挂载目录?

29、dockerfile中常见指令:

30、dockerfile指令中COPY和ADD的区别?

31、docker如何在非Linux系统中运行容器?

32、无状态或有状态的应用程序,那个更适合Docker容器?

33、如何使用docker构建与环境无关的系统?

34、docker swarm是什么?

35、CI(持续集成)服务器的功能是什么?

36、docker目录挂载的几种方式?

37、多容器间如何进行通信?

38、docker-compose相关命令?

39、docker是怎么工作的?

40、docker容器之间是如何隔离的?

41、完整的docker有哪几部分?

42、进入容器有什么方法?

43、什么是联合文件系统(unionFS)?

44、什么是虚拟化?

45、什么是docker hub?

46、存储驱动是什么?

47、dockerfile命令?

48.ENTRYPOINT做什么用呢?

49.docker run 启动参数?

50.docker run 死掉了 怎么排查?

51.awk取偶数行与奇数行

52.awk取第三行第四列

53.k8s中的资源对象

54、docker容器化封装应用程序的坏处?

55、docker在不使用k8s的情况下如何集群部署?

56、docker stack 和docker compose的区别?

57、docker容器化封装应用程序的坏处?

58、docker在不使用k8s的情况下如何集群部署?

59、docker stack 和docker compose的区别?

60、docker compose可以使用json来替代yaml么?

61、docker swarm是什么?

62、如何使用一个基础镜像并对其进行修改?

63、管理程序的功能是什么?

64、docker容器的启动、终止和停止命令?

65、docker生命周期简述?

66、docker对象标签是什么?

67、docker引擎是什么?

68、如何访问正在运行的容器?

69、使用docker-compose时如何保证容器1先于容器2运行?

70、查看镜像支持的环境变量命令?

71、本地的镜像文件都存放在那里?

72、如果需要构建docker镜像,需要遵循那些原则?

73、在容器退出后,我们使用docker ps命令无法查看,此时数据是否会丢失?

74、我们是否可以在某一容器中同时运行多个应用进程?

75、如何控制容器占用系统资源(如CPU、内存)的份额?

76、仓库(repository)、注册服务器(registry)、注册索引(index)之间有何关系?

77、从非官方仓库(如dl.dockerpool.com)下载镜像时,有时会提示【Error: Invaild registry endpoint...】?

78、docker的配置文件放在何处?

79、如何更改docker的默认存储设置?

80、docker与LXC(Linux container)有何不同?

81、docker和vagrant有何不同?

82、开发环境中docker和vagrant应该如何抉择?


1、什么是docker?

Docker是一个容器化平台,以容器的形式将我们的应用程序及其所有依赖项打包在一起,以确保我们的应用程序在任何环境中无缝运行,可以理解为一个应用打包、分发、部署的工具。

我们也可以把它理解为一个轻量的虚拟机,Docker只虚拟我们的软件需要的运行环境,多余的一点都不要,而普通虚拟机则是一个完整而庞大的系统,包含各种不管我们要不要的软件。

我们需要明确的是,Docker不是虚拟化方法,它依赖于实际实现基于容器的虚拟化或操作系统级虚拟化的其他工具,为此,Docker最初使用LXC驱动程序,然后移动到libcontainer,现在重命名为runc。

Docker主要专注于在应用程序容器内自动部署应用程序,应用程序容器旨在打包和运行单个服务,而系统容器则设计为运行多个进程,如虚拟机。
因此,Docker被视为容器化系统上的容器管理或应用程序部署工具。

2、Docker与普通虚拟机的对比:

特性普通虚拟机Docker
跨平台通常只能在桌面级系统运行,例如 Windows/Mac,无法在不带图形界面的服务器上运行支持的系统非常多,各类windows和Linux都支持
性能性能损耗大,内存占用高,因为是把整个完整系统都虚拟出来了性能好,只虚拟软件所需运行环境,最大化减少没用的配置
自动化需要手动安装所有东西一个命令就可以自动部署好所需环境
稳定性稳定性不高,不同系统差异大稳定性好,不同系统都一样部署方式

3、Docker常用命令:

  1. docker pull:拉取或者更新指定镜像

  2. docker push:将镜像推送至远程仓库

  3. docker rm:删除容器

  4. docker rmi:删除镜像

  5. docker images:列出所有镜像

  6. docker ps:列出所有容器

4、Docker镜像是什么?

Docker镜像是Docker容器的源代码,Docker镜像用于创建容器,可以使用build命令创建镜像。

镜像可以理解为是我们下载的gz或zip压缩包,只不过这个镜像文件中包括微型计算机(文件系统,网络)及其它内容,比如我们下载tomcat的镜像文件,其中就包括:微型计算机 + Tomcat环境+Jdk环境 = Tomcat镜像。

Docker镜像也可理解为是一个root文件系统,比如官方镜像ubuntu:16.04就包含完整的一套Ubuntu16.04最小系统的root文件系统。

5、Docker容器是什么?

Docker容器是镜像创建出来的一个运行的系统,也可以理解为是一个进程,其中包括应用程序及其所有依赖项,作为操作系统的独立进程运行。

镜像(Image)和容器(Container)的关系,可以更通俗的理解为是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。

6、Docker容器有几种状态?

运行、已暂停、重新启动、已退出

7、Dockerfile中最常见的指令是什么?

  1. FROM:指定基础镜像

  2. LABEL:功能是为镜像指定标签

  3. RUN:运行指定的命令

  4. CMD:容器启动时要运行的命令

8、Dockerfile中的命令COPY和ADD命令有什么区别?

COPY与ADD的区别COPY的SRC只能是本地文件,其他用法一致

9、dockerfile的ONBUILD指令?

当镜像用作另一个镜像构建的基础时,ONBUILD指令向镜像添加将在稍后执行的触发指令,如果要构建将用作构建其他镜像的基础的镜像(例如,可以使用特定于用户的配置自定义的应用程序构建环境或守护程序)。

10、什么是打包、分发、部署?

  1. 打包:将软件运行所需的依赖&第三方库&软件打包到一起,变成一个安装包。

  2. 分发:将打包好的安装包上传到一个镜像仓库,其他人可以便捷的获取和安装。

  3. 部署:拿着“安装包”就可以一个命令运行起来个人的应用,自动模拟出一摸一样的运行环境,不管是在Windows/Mac/Linux环境。

11、Docker应用场景?

  1. 应用程序的打包和发布

  2. 应用程序隔离

  3. 持续集成

  4. 部署微服务

  5. 快速搭建测试环境

  6. 提供PaaS平台级产品

12、容器带来的好处?

  1. 秒级的交付和部署

  2. 保证环境一致性

  3. 高效的资源利用

  4. 弹性的伸缩

  5. 动态调度迁移成本低

13、什么是Docker?

  1. 使用最广泛的开源容器.

  2. 一种操作系统的虚拟化技术 linux 内核

  3. 依赖于Linux内核特性:NameSpace和Cgroups

  4. 一个简单的应用程序打包工具

14、Docker的作用或使用其的目的?

  1. 提供简单的应用程序打包工具

  2. 开发人员和运维人员职责逻辑分离

  3. 多环境保持一致。消除了环境的差异。

15、虚拟机和容器对比图表:

图片

16、容器与主机之间的数据拷贝命令:

docker cp 命令用于容器与主机之间的数据拷贝。

主机到容器:docker cp /www 96f7f14e99ab:/www/
容器到主机:docker cp 96f7f14e99ab:/www /tmp/

上面这个96f7f14e99ab是容器ID。

图片

17、Docker Swarm是什么?

是Docker的本机群集,它将Docker主机池转变为单个虚拟Docker主机,Docker Swarm提供标准的Docker API,任何已经与Docker守护进程通信的工具都可以使用Swarm透明地扩展到多个主机。

18、什么是容器?

容器是一种轻量级、可移植、自包含的软件打包技术,使得应用程序几乎可以在任何地方以相同的方式运行。

19、容器虚拟化和传统虚拟化的区别是什么?

容器虚拟化:秒级启动,系统支持量为单机上千个容器,磁盘使用的单位一般为MB,性能接近原生。

传统虚拟化:分钟级启动,支持Linux、Windows、Mac操作系统,系统支持量一般为几十个,磁盘实验单位一般为GB,性能较弱。

20、namespace在容器中的功能是什么?

表示命名空间隔离,主要就是将用户空间通过namespace技术隔离开,使得容器内的进程互不影响,共同使用一个内核。

21、Cgroup的功能是什么?

资源限制、优先级分配、资源统计、任务控制

22、docker能不能在32位系统里运行?

不能。

23、docker的核心组件有哪些?

镜像:image,相当于是一个root文件系统。

容器:container,image和container的关系就像是面向对象程序设计里的类和实例,image是静态的定义,container是镜像运行时的实体。

仓库:repository,代码控制中心,用来保存image。

24、我们所安装的docker是哪个版本?

18.03.1-CE。

25、什么是docker容器?

docker容器包括应用程序及其所有依赖项,其作为操作系统的独立进程运行。

26、docker容器的状态?

运行、已暂停、重新启动、已退出。

27、docker容器的内部机制?

每个容器都在自己的命名空间中运行,但使用与所有其它容器完全相同的内核,发生隔离是因为内核知道分配给进程的命名空间,并且在API调用期间确保进程只能访问自己命名空间内的资源。

操作系统的一个功能是允许将全局资源(如网络和磁盘)共享到进程,如果将这些全局资源包装在命名空间中,则可以使其仅对在同一命名空间中运行的进程可见。

28、如何启动容器时指定挂载目录?

启动Nginx容器(随机端口映射)并挂载本地文件目录到容器html的命令:

docker run -d -P --name nginx2 -v /home/nginx:/usr/share/nginx/html nginx

29、dockerfile中常见指令:

FROM:指定基础镜像。
RUN:运行指定的命令。
CMD:容器启动时要运行的命令。
WORKDIR:(默认在/根目录)终端登录进去的落脚点,类似于cd,如果无该目录,则自动创建后再cd进去。
ENV:设置环境常量,方便下文引用。
ONBUILD:触发器,当镜像用作另一个镜像构建的基础(例如可使用特定于用户的配置自定义的应用程序构建环境或守护程序)时,ONBUILD指令向镜像添加将在稍后执行的触发指令。
VOLUME:自建容器卷。
EXPOSE:当前容器对外界暴露出的端口。
LABEL:为镜像指定标签。
MAINTAINER:镜像维护者的姓名和邮箱地址。

30、dockerfile指令中COPY和ADD的区别?

COPY表示直接拷贝,ADD表示拷贝+解压功能。

详解如下:

  1. 二者都是只复制目录中的文件,而不包含目录本身。

  2. COPY能干的事ADD都能干,甚至还有附加功能。

  3. ADD可以支持拷贝的时候顺带解压缩文件,以及添加远程文件(不在本宿主机上的文件),COPY的<src>只能是本地文件

  4. 只是文件拷贝的话可以用COPY,有额外操作可以用ADD代替。

  5. docker官方建议当要从远程复制文件时,尽量用curl/wget命令来代替ADD,因为用ADD的时候会创建更多的镜像层,镜像层的size也大。

31、docker如何在非Linux系统中运行容器?

通过添加到Linux内核版本2.6.24的名称空间功能,可实现容器的概念,容器将其ID添加到每个进程,并向每个系统调用添加心得访问控制检查,由clone()系统调用访问,该调用允许创建先前全局命名空间的单独实例。

如果由于Linux内核中可用的功能而可以使用容器,那么显而易见的问题是非Linux系统如何运行容器。

Docker for Mac和Windows都使用Linux VM来运行容器。

Docker Toolbox用于在Virtual Box VM中运行容器。

但docker早就在Windows中使用Hyper-V,在MAC中用Hypervisor.framework。

32、无状态或有状态的应用程序,那个更适合Docker容器?

最好为Docker Container创建无状态应用程序,我们可以从应用程序中创建一个容器,并从应用程序中取出可配置的状态参数,现在我们可以在生产和具有不同参数的QA环境中运行相同的容器,这有助于在不同场景中重用相同的镜像,使用Docker Containers比使用有状态应用程序更容易扩展无状态应用程序。

33、如何使用docker构建与环境无关的系统?

volumes+环境变量注入+只读文件系统

34、docker swarm是什么?

是docker本级集群,它将docker主机池转变为单个虚拟docker主机,其提供标准的docker API,任何与docker守护进程通信的工具都可以使用swarm透明的扩展到多个主机。

35、CI(持续集成)服务器的功能是什么?

在每次提交之后不断地集成所有提交到存储库的代码,并编译检查错误。

36、docker目录挂载的几种方式?

bind mount:直接把宿主机目录映射到容器内,适合挂代码目录和配置文件,可挂到多个容器上。

volume:由容器创建和管理,创建在宿主机,所以删除容器不会丢失,官方推荐,更高效,Linux 文件系统,适合存储数据库数据,可挂到多个容器上。

tmpfs mount:适合存储临时文件,存储在宿主机内存中,不可多容器共享。

37、多容器间如何进行通信?

要想多容器之间互通,从 Web 容器访问 Redis 容器,我们只需要把他们放到同个网络中就可以了。

先通过docker network create 网络名称,来创建虚拟网络,之后在启动各个服务的时候将其指定使用该网络就可以了。

也可以通过编写docker-compose的yaml配置文件,再使用docker-compose相关命令来运行相关服务。

38、docker-compose相关命令?

在后台运行只需要加一个 -d 参数docker-compose up -d

查看运行状态:docker-compose ps

停止运行:docker-compose stop

重启:docker-compose restart

重启单个服务:docker-compose restart service-name

进入容器命令行:docker-compose exec service-name sh

查看容器运行log:docker-compose logs [service-name]

39、docker是怎么工作的?

docker使用了常见的C/S架构,也就是client-sever模式,docker client复制处理用户输入的各种命令,如docker run、docker build等,但实际上真正工作的是docker server,也就是docker daemon,不过,我们可以发现,比较有意思的是docker client和docker daemon可以运行在同一台机器上。

docker守护进程运行在主机上,之后通过socket连接从客户端访问,守护进程从客户端接受命令并管理运行在主机上的容器,守护进程和客户端依然可以运行在同一台机器上。

40、docker容器之间是如何隔离的?

Linux中的PID、IPC、网络资源是全局的,而namespace机制是一种资源隔离方案,在该机制下,这些资源就不再是全局的了,而是属于某个特定的namespace,各个namespace下的资源,互不干扰。

虽然有了namespace技术可以实现资源隔离,但进程还是可以不受控制的访问系统资源,比如CPU、内存、磁盘、网络等,于是我们就为了控制一下容器中进程对资源的访问,docker采用control groups技术,也就是cgroup,有了cgroup就可以控制容器中进程对资源的消耗了,比如控制某个容器使用内存的上线、可以在那个CPU上运行等等。

有了上面两项技术,容器看起来就像是独立的操作系统了。

41、完整的docker有哪几部分?

docker client客户端、docker daemon守护进程、docker image镜像、docker contain容器,一共四部分。

42、进入容器有什么方法?

docker attach方法。

使用exec命令:docker exec -i -t 784fd3b294d7 /bin/bash

43、什么是联合文件系统(unionFS)?

docker image(docker镜像)实际上是由一层一层的文件系统组成,这种层级的文件系统就是unionFS,它是一种分层、轻量级并且高性能的文件系统,联合加载会将各层文件系统叠加起来,这样最终的文件系统就会包含所有底层的文件和目录。

44、什么是虚拟化?

虚拟化允许我们在相同的硬件上运行多个完全不同的操作系统,每个客户操作系统都经历了引导、加载内核等所有过程,我们可以拥有非常严格的安全性。

虚拟化方法分为三类:仿真、半虚拟化、基于容器的虚拟化。

45、什么是docker hub?

是一个基于云的注册表服务,允许我们链接到代码存储库,构建镜像并测试它们,存储手动推送的镜像以及指向docker云的链接,以便我们可以将镜像部署到主机。

docker hub为整个开发流程中的容器镜像发现,分发和变更管理,用户和团队协作以及工作流自动化提供了集中资源。

46、存储驱动是什么?

docker使用了一系列不同的存储驱动来管理镜像内的文件系统并运行容器,这些存储驱动与docker卷(volume)有些不通。

存储引擎管理着能够在多个容器之间共享的存储。

当镜像被docker run命令创建时,就会在镜像最上层添加一个可写的层,也就是容器层,所有对于运行时容器的修改其实都是对这个容器读写层的修改。

容器和镜像的区别就在于所有镜像都是只读的,而每一个容器其实等于镜像加上一个可读写的层,也就是同一个镜像可以对应多个容器。

unionFS其实是一种为Linux操作系统设计的用于将多个文件系统联合到同一个挂载点的文件系统服务。

而AUFS也就是advanced unionFS其实就是unionFS的升级版本,它能够提供更加优秀的性能和效率。

AUFS只是docker使用的存储驱动的一种,除此之外docker还只吃了不同的存储驱动,如devicemapper、overlay2、ZFS和VFS等。

在最新的docker中,overlay2取代了AUFS成为推荐的存储驱动,但在没有该驱动的机器上,仍然会使用AUFS作为docker的默认驱动。

47、dockerfile命令?

FROM 镜像:指定新镜像所基于的镜像,第一条指令必须为FROM指令,每创建一个镜像就需要一条FROM指令。

MAINTAINER 名字:说明新镜像的维护人信息。

RUN 命令:在所基于的镜像上执行命令,并提交到新的镜像中。

CMD [“要运行的程序“,”参数1,“参数2“]:指令启动容器时要运行的命令或者脚本,Dockerfile只能有一条CMD命令,如果指定多条则只能最后一条被执行。

EXPOSE 端口号:指定新镜像加载到Docker时要开启的端口。

ENV 环境变量 变量值:设置一个环境变量的值,会被后面的RUN使用。

ADD 源文件/目录 目标文件/目录:将源文件复制到目标文件,源文件要与Dockerfile位于相同目录中,或者是一个URL。

COPY 源文件/目录 目标文件/目录:将本地主机上的文件/目录复制到目标地点,源文件/目录要与Dockerfile在相同的目录中。

VOLUME [“目录“]:在容器中创建一个挂载点。

USER 用户名/UID:指定运行容器时的用户。

WORKDIR 路径:为后续的RUN、CMD、ENTRYPOINT指定工作目录。

ONBUILD 命令:指定所生成的镜像作为一个基础镜像时所要运行的命令。

HEALTHCHECK:健康检查。

48.ENTRYPOINT做什么用呢?

ENTRYPOINT指令本身也可以包含参数,变动的参数不会被覆盖。

49.docker run 启动参数?

-d  指定容器为后台运行

-i  打开stdin,用于控制台交互

-t   可以支持只终端登录

-u   指定用户

-大P   随机生成端口

-小p   指定端口

50.docker run 死掉了 怎么排查?

方法一:通过docker的日志进行排查

docker  logs  容器名称  查看docker容器日志

docker  ps  -a   查看容器的运行状态

docker rm   容器名称     删除容器

docker   rmi  镜像名称     删除完之后从新构建镜像和容器
方法二:通过初始化的命令启动容器进行排查

51.awk取偶数行与奇数行

awk  '{if (NR%2==1){print  NR}}'  file3      //偶数行

awk  '{if(NR%2==0){print  NR}}'  file3    //奇数行

52.awk取第三行第四列

awk 'NR==3{print}' | awk '{print $4}'

53.k8s中的资源对象

pod

label:标签

replication  controller:生命pod副本的数量

replicaset:有状态

deployment:无状态

service:服务

volume:存储卷

namespace:命令空间

54、docker容器化封装应用程序的坏处?

docker是单机使用的,无法有效集群。

随着容器数量的上升,管理成本也越来越高。

没有有效的容灾或是自愈机制。

没有预设编译模板,无法实现快速、大规模的容器调度。

没有统一的配置管理中心。

没有容器生命周期的管理工具。

没有图形化运维工具。

55、docker在不使用k8s的情况下如何集群部署?

docker compose是单机部署的,集群部署可使用docker stack。

单机部署案例:docker-compose up -d xxx.yaml

集群部署案例:docker stack depoly xxx.yaml

docker在进行多服务部署和管理时通常用docker stack解决大规模部署管理问题。

docker在1.12版本集成docker swarm,内置新的容器编排工具docker stack,通过提供期望状态、滚动升级、简单易用、扩缩容、健康检查等特性简化应用的管理。

docker stack可以完成docker本身做不到的事情,就是它可以完成容器编排。

56、docker stack 和docker compose的区别?

stack是swarm mode的一部分,即使是单机使用,也需要一个swarm节点,它强化了service的概念,服务可理解为发布到生产环境时某组容器的预期状态 ,以及强化了( 复制集、 容器重启策略、回滚策略、服务更新策略 )等生产特性。

stack不支持build指令,而docker compose不支持deploy指令。

docker stack几乎能做docker-compose所有的事情,不过后续统一还是使用kubernetes更香。

总而言之,docker stack适用于生产环境的编排工具,而docker-compose更适合被定义为单机容器编排的工具。

57、docker容器化封装应用程序的坏处?

docker是单机使用的,无法有效集群。

随着容器数量的上升,管理成本也越来越高。

没有有效的容灾或是自愈机制。

没有预设编译模板,无法实现快速、大规模的容器调度。

没有统一的配置管理中心。

没有容器生命周期的管理工具。

没有图形化运维工具。

58、docker在不使用k8s的情况下如何集群部署?

docker compose是单机部署的,集群部署可使用docker stack。

单机部署案例:docker-compose up -d xxx.yaml

集群部署案例:docker stack depoly xxx.yaml

docker在进行多服务部署和管理时通常用docker stack解决大规模部署管理问题。

docker在1.12版本集成docker swarm,内置新的容器编排工具docker stack,通过提供期望状态、滚动升级、简单易用、扩缩容、健康检查等特性简化应用的管理。

docker stack可以完成docker本身做不到的事情,就是它可以完成容器编排。

59、docker stack 和docker compose的区别?

stack是swarm mode的一部分,即使是单机使用,也需要一个swarm节点,它强化了service的概念,服务可理解为发布到生产环境时某组容器的预期状态 ,以及强化了( 复制集、 容器重启策略、回滚策略、服务更新策略 )等生产特性。

stack不支持build指令,而docker compose不支持deploy指令。

docker stack几乎能做docker-compose所有的事情,不过后续统一还是使用kubernetes更香。

总而言之,docker stack适用于生产环境的编排工具,而docker-compose更适合被定义为单机容器编排的工具。

60、docker compose可以使用json来替代yaml么?

可以的,使用docker-compose -f docker-compose.json up命令。

61、docker swarm是什么?

容器编排的工具,允许我们跨越不同主机来管理多个容器。

我们可以使用swarm来将多个docker主机变成单个主机,以便于管理。

62、如何使用一个基础镜像并对其进行修改?

可使用docker pull <image_name>命令将镜像从docker hub拉倒本地系统。

63、管理程序的功能是什么?

帮助运维人员创建和运行虚拟机的软件,使我们能够使用单个主机来支持多个来宾虚拟机,管理程序通过划分主机的系统资源并将资源分配各已安装的来宾环境来实现这一点,所以我们可以在单个主机操作系统上安装多个操作系统。

管理程序有native和托管两种。

native:本机管理程序或裸机管理程序,直接在底层主机系统上运行,使我们可以直接访问主机系统的硬件,并且还不需要基本服务器操作系统。

托管:使用底层主机操作系统。

64、docker容器的启动、终止和停止命令?

启动:docker start <container_id>

停止:docker stop <container_id>

终止:docker kill <container_id>

65、docker生命周期简述?

创建容器->运行容器->暂停容器(可选)->取消暂停容器(可选)->启动容器->停止容器->重启容器->杀死容器->销毁容器。

66、docker对象标签是什么?

是存储为字符串的键值对,使我们能够将元数据添加到docker对象,例如容器、网络、本地守护进程、镜像、swarm节点和服务。

67、docker引擎是什么?

一种开源的容器化技术,可使用它来构建和容器化我们的应用程序,由docker引擎 rest api、docker命令行界面(CLI)、docker守护进程三个组件支持。

68、如何访问正在运行的容器?

使用docker exec -it <container_id> bash命令。

69、使用docker-compose时如何保证容器1先于容器2运行?

docker-compose在继续下一个容器之前不会等待容器准备就绪,为了控制执行顺序,可使用【取决于(depends_on)】条件。

来看个在docker-compose.yaml文件中使用的示例:

version: "2.4"services:backend:build: .depends_on:- dbdb:image: postgres

70、查看镜像支持的环境变量命令?

docker run IMAGE env

71、本地的镜像文件都存放在那里?

docker相关的本地资源存放在/var/lib/docker目录下,其中container目录存放的是容器信息,graph目录存放的是镜像信息,aufs目录存放的是具体的镜像底层文件。

72、如果需要构建docker镜像,需要遵循那些原则?

整体上应当尽量保持镜像功能的明确和内容的精简。

应当尽量选取满足需求但有比较小的基础系统镜像,清理编译生成的文件、安装包的缓存等临时文件。

安装各个软件的时候应指定准确的版本号,避免引入不需要的依赖。

从安全的角度来看,应当尽量使用系统的库和依赖。

在我们使用dockerfile创建镜像的时候,需要添加.dockerignore文件或者使用干净的工作目录。

73、在容器退出后,我们使用docker ps命令无法查看,此时数据是否会丢失?

容器退出后会处于终止(exited)状态,此时可使用docker ps -a查看,此时数据不会丢失,还可通过docker start启动,只有删除容器之后才会清除数据。

74、我们是否可以在某一容器中同时运行多个应用进程?

这种操作方式我们一般是不推荐使用的,如果真的有了此类需求,建议还是使用额外的进程管理机制,比如我们可以使用supervisord来管理所有运行的进程。

75、如何控制容器占用系统资源(如CPU、内存)的份额?

使用docker create创建容器或使用docker run创建并运行容器时,可使用-c| -sup-share[=0]参数来调整同期使用CPU的权重,使用-m|-memory参数来调整容器使用内存的大小。

76、仓库(repository)、注册服务器(registry)、注册索引(index)之间有何关系?

仓库(repository)是存放一组关联镜像的集合,如同一应用的不同版本的镜像,注册服务器(registry)则是存放实际的镜像的地方,注册索引(index)则是负责维护用户账号、权限、搜索、标签等相关功能的管理,注册服务器(registry)根据注册索引(index)来实现认证管理。

77、从非官方仓库(如dl.dockerpool.com)下载镜像时,有时会提示【Error: Invaild registry endpoint...】?

出现上述问题原因是因为docker自1.3.0版本之后,加强了对镜像安全性的校验,需手动添加对非官方镜像的信任(DOCKER_ORTS="-insecure-registry dl.dockerpool.com:5000"),之后重启docker服务。

78、docker的配置文件放在何处?

Ubuntu系统下docker配置文件放在/etc/default/docker,centOS系统下docker配置文件放在/etc/sysconfig/docker。

79、如何更改docker的默认存储设置?

docker默认存放位置是/var/lib/docker,如果我们希望将docker的本地文件存储到其它分区的话,可以使用Linux软连接的方式来做。

80、docker与LXC(Linux container)有何不同?

LXC利用Linux上的相关技术实现容器,docker则在部分地方做了优化。

首先在移植性上,docker通过抽象容器配置,使得容器可以从一个平台轻易地移植到另一个平台。

docker镜像系统基于AUFS的镜像系统为容器的分发带来很多便利,镜像层只需要存储一份,实现了高效率的存储。

docker的版本管理类似于GIT的版本管理理念,用户可以更方便的创建和管理镜像。

docker周边有各种各样的工具(如配置管理、云平台)对docker提供支持,以及基于docker的pass、CI等系统,使得docker的应用更加方便和多样。

81、docker和vagrant有何不同?

首先我们应该明确的是两者的定位完全不同。

vagrant类似于boot2docker(一款运行docker的最小内核),是一套虚拟机的管理环境,vagrant可以在多种系统上和虚拟机中运行,可以在Windows、Mac等非Linux平台上为docker提供支持,自身具有很好的包装性和移植性。

原生docker自身只能运行在Linux平台上,但启动和运行的性能比虚拟机要快,往往更适合快速开发和部署应用的场景。

82、开发环境中docker和vagrant应该如何抉择?

docker不是虚拟机,而是进程隔离,对于资源消耗很少,单一开发环境下vagrant是虚拟机上的封装,虚拟机本身会很消耗资源。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/47830.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【人工智能】使用Python的dlib库实现人脸识别技术

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、引言二、传统人脸识别技术1. 基于几何特征的方法2. 基于模板匹配的方法3. 基于统计学习的方法 三、深度学习在脸识别中的应用1. 卷积神经网络&#xff08;CNN&#xff09;2. FaceNet和ArcFace 四、使用Python和dlib库实…

【STM32 HAL库】DMA+串口

DMA 直接存储器访问 DMA传输&#xff0c;将数据从一个地址空间复制到另一个地址空间。-----“数据搬运工”。 DMA传输无需CPU直接控制传输&#xff0c;也没有中断处理方式那样保留现场和恢复现场&#xff0c;它是通过硬件为RAM和IO设备开辟一条直接传输数据的通道&#xff0c…

浅谈断言之XML断言

浅谈断言之XML断言 XML断言是JMeter的一个组件&#xff0c;用于验证请求的响应数据是否符合XML结构。这对于测试返回XML格式数据的Web服务特别有用。 如何添加XML断言&#xff1f; 要在JMeter测试计划中添加XML断言&#xff0c;遵循以下步骤&#xff1a; 打开测试计划&…

Flutter 插件之 easy_refresh(下拉刷新、上拉加载)

今天给大家较少一下日常开发中最常见的一个功能,就是 下拉刷新、上拉加载,这个在我们使用分页功能是最常见的。 此前我我也写了一篇关于 下拉刷新、上拉加载。 Flutter 下拉刷新、上拉加载flutter_easyrefresh的使用https://blog.csdn.net/WangQingLei0307/article/details/…

学习记录--Bert、Albert、RoBerta

目录 Bert 1&#xff1a;输入 2&#xff1a;Bert结构 3&#xff1a;模型预训练 Albert 1&#xff1a;SOP任务 2&#xff1a;embedding因式分解 3&#xff1a;参数共享 RoBerta 参考&#xff1a; BERT原理和结构详解_bert结构-CSDN博客 [LLM] 自然语言处理 --- ALBER…

某企业网络及服务器规划与设计

目录 1. 项目需求与设计... 5 1.1 项目需求... 5 1.2 组建企业网络内部网的流程... 5 1) 构思阶段... 5 2) 方案设计阶段... 6 3) 工程实施阶段... 6 4) 测试验收... 6 5) 管理维护... 7 1.3 技术可行性分析... 7 1.4 网络组网规则... 8 1.5 网络拓扑... 8 2. 项目所…

【UE5】在Widget中显示3D网格体

效果 步骤 1. 新建一个工程并添加第三人称游戏资源包 2. 添加一个控件蓝图&#xff0c;这里命名为“WBP_3DOverlay”&#xff0c;用于显示3D网格体 打开“WBP_3DOverlay”&#xff0c;添加一个画布面板和一个背景模糊控件&#xff0c;这里模糊强度设置为10 3. 打开第三人称角色…

Spark-第一周

一、spark是什么 Spark是一种快速、通用、可扩展的大数据分析引擎 2009年诞生于加州大学伯克利分校AMPLab&#xff0c;2010年开源&#xff0c;2013年6月成为Apache孵化项目&#xff0c;2014年2月成为Apache顶级项目。 目前&#xff0c;Spark生态系统已经发展成为一个包含多个…

常见的数据集格式

常见的数据集格式有三种&#xff0c;分别为voc(xml)、coco(json)、yolo(txt)。 1 VOC VOC数据集由五个部分构成&#xff1a;JPEGImages&#xff0c;Annotations&#xff0c;ImageSets&#xff0c;SegmentationClass以及SegmentationObject. . └── VOC #根目…

HAL库源码移植与使用之RTC时钟

实时时钟(Real Time Clock&#xff0c;RTC)&#xff0c;本质是一个计数器&#xff0c;计数频率常为秒&#xff0c;专门用来记录时间。 普通定时器无法掉电运行&#xff01;但RTC可由VBAT备用电源供电&#xff0c;断电不断时 这里讲F1系列的RTC 可以产生三个中断信号&#xff…

Kafka之存储设计

文章目录 1. 分区和副本的存储结构1. 分区和副本的分布2. 存储目录结构3. 文件描述 2. 相关配置3. 数据文件类型4. 数据定位原理LogSegment 类UnifiedLog 类 5. 副本数据同步HW水位线LEO末端偏移量HW更新原理 6. 数据清除 1. 分区和副本的存储结构 在一个多 broker 的 Kafka 集…

文心一言大模型

文心一言是百度基于其强大的“文心”大模型技术推出的生成式AI产品&#xff08;英文名&#xff1a;ERNIE Bot&#xff09;。以下是关于文心一言的详细介绍&#xff1a; 一、产品定位与功能 定位&#xff1a;文心一言被定位为人工智能基座型的赋能平台&#xff0c;旨在助力金融…

MFC:以消息为基础的事件驱动系统和消息映射机制

以消息为基础的事件驱动系统和消息映射机制 (1)消息 A.What&#xff08;什么是消息&#xff09; 本质是一个数据结构&#xff0c;用于应用程序不同部分之间进行通信和交互 typedef struct tagMSG {HWND hwnd; // 接收该消息的窗口句柄UINT message; // 消息标…

【C语言】 利用栈完成十进制转二进制(分文件编译,堆区申请空间malloc)

利用栈先进后出的特性&#xff0c;在函数内部&#xff0c;进行除二取余的操作&#xff0c;把每次的余数存入栈内&#xff0c;最后输出刚好就是逆序输出&#xff0c;为二进制数 学习过程中&#xff0c;对存储栈进行堆区的内存申请时候&#xff0c;并不是很熟练&#xff0c;一开始…

双边性:构建神经网络的新方法

正如承诺的那样&#xff0c;这是最近我遇到的最有趣的想法之一的第二部分。如果你错过了&#xff0c;请务必观看本系列的第一部分 - 神经科学家对改进神经网络的看法 - 我们讨论了双边性的生物学基础以及我们大脑的不对称性质如何带来更高的性能。 在这篇文章中&#xff0c;我…

v-for 进行列表的 增删改查

通过对象下标替换属性值 但是通过实践此方法是错误的&#xff0c;Vue监听的是students这个对象&#xff0c;而不是这个对象里面的数组信息&#xff0c;也就是说&#xff0c;改变里面的值&#xff0c;并不能在页面上实现更新的功能 <!DOCTYPE html> <html lang"en…

通俗地理解主动元数据管理

元数据管理&#xff0c;是企业开展数据管理的核心基础&#xff0c;内容涉及元数据的创建&#xff0c;确定需要捕获哪些元数据&#xff0c;通过哪些工具和流程进行创建&#xff0c;继而将元数据妥善存储&#xff0c;保障安全性和可访问性&#xff0c;并不断更新维护&#xff0c;…

[渗透测试] 反序列化漏洞

反序列化漏洞 ​ 序列化&#xff1a;将对象的状态信息转换为可以传输或存储的形式的过程。简单的来说&#xff0c;就是将一个抽象的对象转换成可以传输的字符串 &#xff0c;以特定的形式在进行之间实现跨平台的传输。 序列化大多以字节流、字符串、json串的形式来传输。将对…

linux/windows wps node.js插件对PPT状态监听并且通知其他应用

需求背景 公司要求对Window系统&#xff0c;和国产操作系统&#xff08;UOS&#xff09;的wps 软件在 PPT开始播放 结束播放&#xff0c;和播放中翻页 上一页 下一页 等状态进行监听&#xff0c;并通知到我们桌面应用。 技术方案 开发WPS插件&#xff0c;使用node.JS 插件开…

系统架构设计师①:计算机组成与体系结构

系统架构设计师①&#xff1a;计算机组成与体系结构 计算机结构 计算机的组成结构可以概括为以下几个主要部分&#xff1a;中央处理器&#xff08;CPU&#xff09;、存储器&#xff08;包括主存和外存&#xff09;、输入设备、输出设备&#xff0c;以及控制器、运算器、总线和…