Docker 面试宝典
Docker 是什么?
- 是实现容器技术的一种工具
 - 是一个开源的应用容器引擎
 - 使用 C/S 架构模式,通过远程API 来管理
 - 可以打包一个应用及依赖包到一个轻量级、可移植的容器中
 
容器是什么?
- 对应用软件和依赖包进行标准打包
 - 应用或服务之间相互隔离,但又共享一个 OS
 - 可以打包运行在不同的系统上
 
为什么会出现容器?
为了解决单机部署应用和虚拟化的局限性而诞生
虚拟化是什么?
- 可以理解成虚拟机技术
 - 一个主机可以部署多个虚拟机,每个虚拟机又可以部署多个应用
 - 对于主机来说,虚拟机就是一个普通文件
 
虚拟化的缺点是什么?
- 资源占用多:每个虚拟机都是完整的操作系统,需要给它分配大量系统资源
 - 冗余步骤多:一个完整的操作系统,一些系统级别的步骤无法避免,比如用户登录
 - 启动慢:启动操作系统需要多久,启动虚拟机就要多久
 
Docker 有什么优势?
- 资源占用少:每个容器都共享主机的资源,容器需要多少就用多少
 - 启动快:一条命令即可将容器启动,而容器启动时一般会将服务或应用一并启动
 
Docker 和 虚拟化的区别?
| 比较点 | 容器 | VM | 
| 隔离 | 应用程序层的抽象,将代码和依赖项打包在一起【容器是应用层面的隔离】 | 将一台服务器转变为多台服务器的物理硬件的抽象【虚拟化是物理资源层面的隔离】 | 
| 
 OS  | 
 多个容器可以在同一台计算机上运行,并与其他容器共享OS内核  | 
也允许多个VM在单台计算机上运行,但需要启动单独的虚拟机 OS | 
| 
 资源共享  | 
 仅有一个物理机的OS,多个容器共享物理机的资源  | 
多个OS(物理机一个OS,每个 VM 一个 OS),均独享资源 | 
| 运行数量 | 一台物理机可以运行数百个容器 | 一台物理机最多可以运行十来个虚拟机 | 
| 大小 | 容器镜像的大小通常为几十 MB | 包含操作系统、二进制文件、库,至少也要几个 GB | 
| 启动速度 | 可以在数秒内完成启动 | 和物理机启动时间一样慢,可能要几分钟 | 
| 可以处理更多的应用程序,消耗的资源比 VM 少 | ||
| 每个容器在用户空间中作为隔离的进程运行 | 
Docker 容器有几种在状态?
- starting 运行状态
 - Exited 退出状态
 - Paused 暂停状态
 - healthy 健康状态
 - unhealthy 非健康状态
 
什么是仓库?
- 存放镜像文件的地方,比如 DockerHub,可以将自己的镜像上传上去
 - 不同镜像可以有不同的标签
 - 主机可以从仓库下载镜像
 
什么是镜像?
- 创建容器的模板
 - 同一个镜像可以创建多个不同的容器
 
什么是容器?
- 通过镜像生成的运行实例
 - 不同容器之间是相互隔离,独立运行的
 - 通常一个容器就是一个应用或一个服务,也是我们常说的微服务
 
仓库、镜像、容器的关系是?
仓库存放镜像,主机通过仓库下载镜像,通过镜像创建容器
有什么常用的 Docker 命令?
- docker pull 拉取镜像
 - docker create 创建容器
 - docker rm 删除容器
 - docker ps 列出正在运行的容器列表
 - docker run 创建容器并运行指定命令
 - docker start 启动容器
 - docker stop 停止运行容器
 - docker restart 重启容器
 - docker rm 删除容器
 - docker exec 容器执行指定命令
 - docker rmi 删除镜像
 
如何把主机的东西拷贝到容器内部?
通过 docker cp 命令即可,还能把容器内部内容拷贝到主机
进入容器的方法有哪些?
通过 docker exec 进入容器内部
如何让容器随着 Docker 服务启动而自动启动?
- 创建容器时,加上 --restart=always 参数
 - 创建容器后,通过修改容器配置文件的 RestartPolicy 参数值
 - 创建容器后,使用 docker update 命令更新容器的 --restart 参数值
 
如何指定容器的端口映射?
- 创建容器时,通过 -p 来指定端口映射
 - 创建容器后,通过修改容器的配置文件来指定端口映射
 
如何查看官方镜像服务的默认端口是什么?
- 可以通过 docker inspect 查看镜像信息,然后找到端口映射一栏
 - 也可以先用该镜像创建一个容器并运行,通过 docker ps 查看运行端口是什么
 
如何修改容器的端口映射?
- 删除容器,重新创建容器,并指定端口映射
 - 通过容器配置文件修改端口映射
 - 通过 docker commit 将容器构建为一个全新的镜像,然后再通过该镜像创建新的容器,并指定端口映射
 
如何指定容器的目录映射?
- 创建容器时,通过 -v 来指定目录映射
 - 创建容器后,通过修改容器的配置文件来指定目录映射
 
如何修改容器的目录映射?
- 删除容器,重新创建容器,并指定目录映射
 - 通过容器配置文件修改目录映射
 - 通过 docker commit 将容器构建为一个全新的镜像,然后再通过该镜像创建新的容器,并指定目录映射
 
K8S 是什么?
Kubernetes 是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能
- 快速部署应用
 - 快速扩展应用
 - 无缝对接新的应用功能
 - 节省资源,优化硬件资源的使用
 
Docker 面试宝典的更多相关文章
- Java面试宝典(2018版)
		
置顶 2018年11月10日 23:49:18 我要取一个响亮的昵称 阅读数:8893 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/chen ...
 - 工作一年半被裁掉,机缘巧合拿到阿里P7offer,得亏我看过这份“突击”面试宝典
		
前言 不论是校招还是社招都避免不了各种⾯试.笔试,如何去准备这些东⻄就显得格外重要.不论是笔试还是⾯试都是有章可循的,我这个"有章可循"说的意思只是说应对技术⾯试是可以提前准备,所 ...
 - 【转】Java面试宝典2015版(绝对值得收藏超长版)(一)
		
(转自:http://mp.weixin.qq.com/s?__biz=MjM5MTM0NjQ2MQ==&mid=206619070&idx=1&sn=fcb21001d442 ...
 - .NET工程师面试宝典
		
.Net工程师面试笔试宝典 传智播客.Net培训班内部资料 这套面试笔试宝典是传智播客在多年的教学和学生就业指导过程中积累下来的宝贵资料,大部分来自于学员从面试现场带过来的真实笔试面试题,覆盖了主流的 ...
 - java面试宝典(蓝桥学院)
		
Java面试宝典(蓝桥学院) 回答技巧 这套面试题主要目的是帮助那些还没有java软件开发实际工作经验,而正在努力寻找java软件开发工作的学生在笔试/面试时更好地赢得好的结果.由于这套试题涉及的范围 ...
 - Java面试宝典2015版
		
这套面试题主要目的是帮助那些还没有java软件开发实际工作经验,而正在努力寻找java软件开发工作的朋友在笔试时更好地赢得笔试和面试.由于这套面试题涉及的范围很泛,很广,很杂,大家不可能一天两天就看完 ...
 - Android高薪之路-Android程序员面试宝典
		
Android高薪之路-Android程序员面试宝典
 - Java面试宝典2013版(超长版)
		
一. Java基础部分......................................................................................... ...
 - 【Android】面试宝典
		
Android面试 1. 内容介绍................................................................................... ...
 
随机推荐
- Qt-可编辑的ListView
			
新建一个QML项目, main.cpp不动如下: #include <QGuiApplication> #include <QQmlApplicationEngine> int ...
 - 每个程序员的必经之路:Hello,world!
			
每个程序员的必经之路:Hello,world! Java 源程序 也称源代码,是指未编译的按照一定的程序设计语言规范书写的文本文件,是一系列人类可读的计算机语言指令. 在现代程序语言中,源代码可以是以 ...
 - 获取异常信息里再出异常就找不到日志了,我TM人傻了
			
本系列是 我TM人傻了 系列第三期[捂脸],往期精彩回顾: 升级到Spring 5.3.x之后,GC次数急剧增加,我TM人傻了 这个大表走索引字段查询的 SQL 怎么就成全扫描了,我TM人傻了 最近组 ...
 - 双非本科字节跳动Android面试题分享(已拿offer)
			
基本情况 本人系非985非211普通本科生一枚,有实习有项目经历但成绩普通,在面试前刷了很多面经.面试题,这里也把自己的分享下,做个回报好了,顺便攒攒人品,一到这种时候人就迷信起来了. 面试是以视频面 ...
 - JCE加密和解密  bouncycastle
			
https://blog.csdn.net/weixin_43935907/article/details/89155617 https://blog.csdn.net/qq_29583513/art ...
 - Bootstrap 使用小记
			
1,使用Bootstrap做页面布局,使用card容器 <div class="card"> <div class="card-header" ...
 - 004 PCI Express体系结构(四)
			
一.PCI总线的中断机制 PCI总线使用INTA#.INTB#.INTC#和INTD#信号向处理器发出中断请求.这些中断请求信号为低电平有效,并与处理器的中断控制器连接.在PCI体系结构中,这些中断信 ...
 - CTF-flask模板注入学习
			
今天又看到了一道这样的题,之前一直都学不明白的东西 反反复复给你看的时候,就想搞明白了. 我们做题的,需要知道flask是怎么运行的就行了. 这个就是一个最简单的flask应用,当我们访问的时候,就会 ...
 - bootstrap导航条报错  Uncaught TypeError: Cannot convert object to primitive value
			
原文: https://feiffy.cc/uncaught-typeerror-cannot-convert-object-to-primitive-value 最近发现我的博客页面移动端上下拉菜单 ...
 - idea中的springboot的maven项目报错Failed to clean project: Failed to delete D:\new_shunyi\shunyi\target\shunyi\WEB-INF\classes\static\
			
正准备打包上传到测试环境,本想先clean下,没想到报了个这个错,意思大概是无法删除target下的某个文件,没有权限(一脸懵逼): 后来百度发现可能是因为我之前启动了tomcat,未关闭,然后关闭了 ...