面试必备之docker相关知识 上

你好 我是懂java的测试


前言

当前容器已被广泛使用,很多公司都会用docker用来部署测试环境和生产环境;求职面试中,面试官对docker情有独钟;

学好docker这门技术,一方面可以在面试中体现自己的知识广度,另一方面使用docker技术在工作中处理一些棘手问题就会变得得心应手;

由于docker技术涉及到的东西很多,所以本系列文章不会面面俱到,只会分享在面试或工作中能使用到的技术;

文章分为上下两篇,主要讲述docker的基本概念、基本命令的使用和一些常用的高阶知识。

docker是什么?

任何一门技术肯定是为了解决某个问题而出现的,学习一门技术之前,可以先想想这门技术的出现解决了什么问题,因此在理解docker之前,可以先想想用docker之前怎么部署项目的?

这里以部署java的spring框架项目为例,找一台物理机、安装虚拟软件以后,再虚拟一个虚拟机出来,在虚拟机中搭建jdk、maven、tomcat(springboot内部镶嵌了tomcat)、redis等基础环境,然后打包项目成一个war包丢入Tomcat中,启动tomcat。

一切看着很方便,但是假如生产环境并发量很大,急需扩容几台虚拟机,是不是还得重复上述过程?扩容的同时,既要保证基础软件版本一致,又要保证大量配置文件正确,太耗时耗力。

不知道大家有没有遇到一种场景,就是在开发中,一般都会遇到相同的代码在自己的电脑上可以运行,但是当把项目打包发送给其他人的时候,相同的代码在别人的电脑上却不能运行,为啥?这是因为项目中使用到的一些技术的的版本不同的原因,例如mysql数据库的版本,java、jdbc等技术驱动包的不同,都会导致项目无法运行。

除此之外,虚拟机资源成本很高的,每个项目都独立使用一个虚拟机资源,空闲期有点浪费,另外虚拟机启动一次真的很耗时。

那么怎么解决上述问题呢?docker可以,首先我们可以使用docker,把项目打成镜像(image),包含了运行环境和配置,上传到仓库中,然后其他虚拟机使用的时候拉取镜像,运行容器即可,速度极快,资源利用率得到极大提升,真正做到“一次镜像,处处运行”。

那么docker和虚拟机有什么区别?

图片

docker 架构是什么样的?

如下截图,Docker 使用的是 C/S 架构,Docker Client 用于和 Docker 的守护进程通信(守护进程就是 Server),守护进程可以用来构建、运行和分发 Docker 容器等操作。Docker Client 和守护进程可以在同一系统上运行,或者将 Docker Client 远程连接到守护进程。使用 REST API 协议,并通过 UNIX 套接字或网络接口进行通信。另一个 Docker Client 是 Docker Compose(允许我们将一组容器组成的应用程序)

图片

docker 三大核心是什么?

这里要说的 Docker 三大核心,分别是 image 镜像container 容器,repository 仓库;这可以说是 Docker 最重要的部分。

1)镜像

Docker 镜像是 Docker 容器运行时的只读模板,镜像可以用来创建 Docker 容器(每一个镜像都由一系列的层组成)

2)容器

Docker 主要就是利用容器来运行应用,一个 Docker 容器内可以说包含了某个应用运行所需要的环境。每一个 Docker 容器都是从镜像创建出来的。可以说容器就是镜像创建的运行实例,它可以被启动,停止,删除等。而且每个容器都是互相隔离的,保证安全的平台。

3)仓库

Docker 仓库主要就是 用来集中保存镜像的地方,当我们创建了自己的镜像后,可以使用 push 命令将它上传到公共仓库(Public)或者私用仓库(Private),这样的好处是,当我们需要在另外的服务器上使用这个镜像时,可以直接从仓库进行拉取(速度相对较快)。

docker 镜像操作命令有哪些?

docker images

查看本地已有镜像

图片

docker pull mysql

拉取一个mysql的镜像到本地,不加版本号,默认拉取最新的,如果想指定版本号可以这样用 docker pull mysql:5.7

docker search mysql

搜索 mysql镜像,

图片

docker rmi -f  mysql

docker rmi mysql,删除mysql镜像,加上 -f是指强制删除mysql镜像,删除多个镜像呢?可以这么玩,docker rmi mysql hadoop hive,删除mysql、hadoop、hive三个镜像。

docker rmi $(docker images | grep “hub” | awk ‘{print $3}’)

上面这条命令,可以删除所有名字中带 “hub” 关键字的镜像。

总结

docker 上篇文章就分享到这里,鉴于文章篇幅有限,本文主要讲述了docker基本概念和操作镜像的基本命令。下篇文章会着重讲解docker 容器和仓库的相关操作命令和dockerfile等高阶知识。

加我微信,免费简历指导、面试助攻、也可免费获取学习资料和简历模板。

图片

关注公众号,测试干货及时送达图片

懂Java的测试

软件测试技术分享,包括功能、自动化、性能、测试开发等,简历指点、面试助攻等

24篇原创内容

公众号

懂Java的测试精品文章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值