docker镜像巩固习题和知识点

1、什么是容器?(3分)
容器是一种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运行。
2、容器虚拟化和传统虚拟化的区别是什么?(4分)
容器虚拟化:启动一般是秒级;仅仅kernel所支持的os,系统支持量单机支持上千个容器,磁盘的使用一般为MB 性能接近原生
传统虚拟化:启动一般是分钟级,支持linux,windows,mac操作系统,系统支持量一般为几十个 磁盘使用一般为GB 性能弱
3、Namespace 在容器里功能是什么?(3分)
Namespace是命名空间隔离,主要就是将用户空间通过namespace技术隔离开,容器内的进程互不影响。共用一个内核
4、Cgroup的功能是什么的?(3分)
资源限制 优先级分配 资源统计 任务控制

5、Docker能不能在32位的系统里运行?(3分)
不能
6、Docker的核心组件有哪些?(3分)
镜像,容器,仓库
7、我们所安装的docker是哪个版本的?写不全不给分。(3分)
18.03.1-ce版本
8、如何搜索docker镜像nginx?(3分)
Docker search nginx
9、如何下载centos 镜像?(3分)
Docker pull centos
10、运行一个zabbix 的镜像,并打开一个终端。(3分)
Docker run -it zabbix /bin/bash
11、让上个题的容器不停止,并后台运行。(3分)
先按ctrl + p 再按 ctrl + q
12、删除现在所有的镜像。(3分)
Docker rmi -f‘docker images -q -a’
13、查看上一个容器的状态。(3分)
Docker stats docker ps -l -q
14、查看容器的进程。(3分)
Docker top 容器id
15、查看容器的统计信息。(3分)
Docker stats 容器id
16、查看容器abc的详细信息。(3分)
Docker inspect abc
17、使用docker build命令有几种方法构建镜像?(3分)
两种 1、通过源代码路径的方式
2、通过标准输入流的方式
18、运行一个容器test2去使用容器test1的数据卷/date(镜像统一是nginx)。(3分)
Docker run -it --name test1 -v /date:/date nginx /bin/bash
Docker run -it --volumes-from test1 --name test2 nginx /bin/bash

19、docker的存储驱动程序有哪些?(3分)
AUES、Btrfs 、 Device mapper、 OverlayFS 、 ZFS 、VFS

20、overlay的文件系统,读取一个文件,文件不在容器里,但存在镜像里,它的工作过程是什么?(3分)
文件不存在于容器(upperdir)中。overlay/overlay2驱动程序执行一个copy_up操作将文件从镜像(复制lowerdir)到所述容器(upperdir)。容器然后将更改写入容器层中的文件的新副本

21、overlay文件系统里有个目录是upperdir,它里面装的是什么?(3分)
Upperdir是容器的可写数据层,里面装的是对容器的更改内容
22、overlay文件系统里有个目录是lowerdir,它里面装的是什么?(3分)
里面装的是镜像
23、docker里有三种方式把数据从宿主机挂载到容器,分别是volmues,bind mounts,tmpfs volumes,有什么区别?(3分)
Volumes方式下:容器内的数据被存放到宿主机(linux)一个特定的目录下(/var/lib/docker/volumes/)。这个目录只有Docker可以管理,其他进程不能修改。如果想持久保存容器的应用数据,Volumes是Docker推荐的挂载方式。
Bind mounts方式下:容器内的数据被存放到宿主机文件系统的任意位置,甚至存放到一些重要的系统目录或文件中。除了Docker之外的进程也可以任意对他们进行修改;
tmpfs方式下:容器的数据只会存放到宿主机的内存中,不会被写到宿主机的文件系统中,因此不能持久保存容器的应用数据。

24、–net选项后面可以跟哪些参数?(4分)
None、host、bridge、 overlay、 macvlan
25、现在项目需要多个容器之间疯狂交流,需要使用哪个网络?(3分)
Docker overlay网络
26、打开容器test2去链接test1容器,并映射宿主机的80端口到容器的5000端口。(3分)
Docker run -it -v 80:5000 –name test2 --network=container:test1 centos /bin/bash

27、什么是Orchestration?(3分)
编排(Orchestration),描述了自动配置、协作和管理服务的过程。

28、Orchestration的分类有哪些?(3分)
Docker Compose,Docker Machine,Docker Swarm
29、其中compose 使用的步骤是什么?(3分)
使用Compose仅需要三步:
1、使用dockerfile定义你的应用依赖的镜像;
2、使用docker-compose.yml定义你的应用具有的服务;
3、通过docker-compose up命令创建并运行应用;

30、swarm的调度模块的第一阶段,过滤器有几种?(3分)
5种
Constraints,约束过滤器
Affnity,亲和性过滤器
Dependency,依赖过滤器
Health filter,会根据节点状态进行过滤
Ports filter,会根据端口的使用情况过滤

31、k8s的全称是什么?在古希腊话中是什么意思?(4分)
全称是Kubernetes,在古希腊话中是舵手的意思

32、编写dockerfile,实现功能:开启容器就能查看/目录,并且能复写查看/mnt目录。镜像自选(4分)
#Vim dockerfile
FROM centos
RUN ls /
CMD [“ls”,”/mnt”]

镜像相关
1、如何批量清理临时镜像文件?
可以使用sudo docker rmi $(sudo docker images -q -f danging=true)命令

2、如何查看镜像支持的环境变量?
使用sudo docker run IMAGE env

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

4、构建Docker镜像应该遵循哪些原则?
整体远侧上,尽量保持镜像功能的明确和内容的精简,要点包括:
# 尽量选取满足需求但较小的基础系统镜像,建议选择debian:wheezy镜像,仅有86MB大小
# 清理编译生成文件、安装包的缓存等临时文件
# 安装各个软件时候要指定准确的版本号,并避免引入不需要的依赖
# 从安全的角度考虑,应用尽量使用系统的库和依赖
# 使用Dockerfile创建镜像时候要添加.dockerignore文件或使用干净的工作目录

容器相关
1、容器退出后,通过docker ps 命令查看不到,数据会丢失么?
容器退出后会处于终止(exited)状态,此时可以通过 docker ps -a 查看,其中数据不会丢失,还可以通过docker start 来启动,只有删除容器才会清除数据。

2、如何停止所有正在运行的容器?
使用docker kill $(sudo docker ps -q)

3、如何清理批量后台停止的容器?
使用docker rm $(sudo docker ps -a -q)

4、如何临时退出一个正在交互的容器的终端,而不终止它?
按Ctrl+p,后按Ctrl+q,如果按Ctrl+c会使容器内的应用进程终止,进而会使容器终止。

5、很多应用容器都是默认后台运行的,怎么查看它们的输出和日志信息?
使用docker logs,后面跟容器的名称或者ID信息

6、使用docker port 命令映射容器的端口时,系统报错Error: No public port ‘80’ published for …,是什么意思?
创建镜像时Dockerfile要指定正确的EXPOSE的端口,容器启动时指定PublishAllport=true

7、可以在一个容器中同时运行多个应用进程吗?
一般不推荐在同一个容器内运行多个应用进程,如果有类似需求,可以通过额外的进程管理机制,比如supervisord来管理所运行的进程

8、如何控制容器占用系统资源(CPU,内存)的份额?
在使用docker create命令创建容器或使用docker run 创建并运行容器的时候,可以使用-c|–cpu-shares[=0]参数来调整同期使用CPU的权重,使用-m|–memory参数来调整容器使用内存的大小。

仓库相关
1、仓库(Repository)、注册服务器(Registry)、注册索引(Index)有何关系?
首先,仓库是存放一组关联镜像的集合,比如同一个应用的不同版本的镜像,注册服务器是存放实际的镜像的地方,注册索引则负责维护用户的账号,权限,搜索,标签等管理。注册服务器利用注册索引来实现认证等管理。

-2 、从非官方仓库(如:dl.dockerpool.com)下载镜像的时候,有时候会提示“Error:Invaild registry endpoint https://dl.docker.com:5000/v1/…”?

Docker 自1.3.0版本往后以来,加强了对镜像安全性的验证,需要手动添加对非官方仓库的信任。
DOCKER_OPTS=”–insecure-registry dl.dockerpool.com:5000
重启docker服务

配置相关
1、Docker的配置文件放在那里。如何修改配置?
Ubuntu系统下Docker的配置文件是/etc/default/docker,CentOS系统配置文件存放在/etc/sysconfig/docker

-2、如何更改Docker的默认存储设置?

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

Docker与虚拟化
1、Docker与LXC(Linux Container)有何不同?
LXC利用Linux上相关技术实现容器,Docker则在如下的几个方面进行了改进:

移植性:通过抽象容器配置,容器可以实现一个平台移植到另一个平台;
镜像系统:基于AUFS的镜像系统为容器的分发带来了很多的便利,同时共同的镜像层只需要存储一份,实现高效率的存储;
版本管理:类似于GIT的版本管理理念,用户可以更方面的创建、管理镜像文件;
仓库系统:仓库系统大大降低了镜像的分发和管理的成本;
周边工具:各种现有的工具(配置管理、云平台)对Docker的支持,以及基于Docker的Pass、CI等系统,让Docker的应用更加方便和多样化。

2 、Docker与Vagrant有何不同?
两者的定位完全不同
Vagrant类似于Boot2Docker(一款运行Docker的最小内核),是一套虚拟机的管理环境,Vagrant可以在多种系统上和虚拟机软件中运行,可以在Windows。Mac等非Linux平台上为Docker支持,自身具有较好的包装性和移植性。
原生Docker自身只能运行在Linux平台上,但启动和运行的性能都比虚拟机要快,往往更适合快速开发和部署应用的场景。

3、开发环境中Docker与Vagrant该如何选择?
Docker不是虚拟机,而是进程隔离,对于资源的消耗很少,单一开发环境下Vagrant是虚拟机上的封装,虚拟机本身会消耗资源。

Other FAQ
1、Docker能在非Linux平台(Windows+MacOS)上运行吗?
可以

2 、如何将一台宿主机的docker环境迁移到另外一台宿主机?
停止Docker服务,将整个docker存储文件复制到另外一台宿主机上,然后调整另外一台宿主机的配置即可

3、Docker容器创建后,删除了/var/run/netns 目录下的网络名字空间文件,可以手动恢复它:
# 查看容器进程ID,比如1234
sudo docker inspect --format=’{{. State.pid}}’ $container_id
1234

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker镜像和云主机镜像是两种不同的概念,它们有以下区别: 1. 定义和用途: - Docker镜像Docker镜像是用于构建和运行容器的文件,它包含了一个完整的应用程序运行所需的所有依赖项(操作系统、库、代码等)。Docker镜像可以被复制、分发和部署到不同的环境中,实现应用程序的快速部署和可移植性。 - 云主机镜像:云主机镜像是用于创建云主机实例的模板,它包含了一个预配置的操作系统和一些基本软件。云主机镜像通常由云服务提供商提供,并且可以根据用户的需求进行选择和部署。 2. 构建方式: - Docker镜像Docker镜像是通过Dockerfile定义和构建的,其中包含了构建镜像所需的指令和配置信息。用户可以根据自己的需求自定义Dockerfile来构建自己的镜像。 - 云主机镜像:云主机镜像是由云服务提供商预先构建和配置好的,用户可以直接选择使用。 3. 灵活性: - Docker镜像Docker镜像具有高度的灵活性,可以根据需要进行定制和扩展。用户可以通过修改Dockerfile或者在运行时进行容器的配置来满足不同的需求。 - 云主机镜像:云主机镜像相对较为固定,用户通常只能选择提供商提供的镜像,并且无法进行自定义修改。 4. 部署方式: - Docker镜像Docker镜像可以在任何支持Docker引擎的环境中部署,包括本地开发环境、云服务器、容器编排平台等。通过Docker镜像,可以实现应用程序的快速部署和迁移。 - 云主机镜像:云主机镜像只能在云服务提供商的平台上进行部署,用户需要选择合适的云主机实例类型和配置来运行镜像

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值