【运维】Docker构建软件、微服务镜像及虚拟化原理

前言

  我们在了解了docker是一个容器引擎、架构、docker镜像、容器的常用命令,下面正式在系统中应用,构建并运行软件、微服务镜像,并进一步熟悉docker的虚拟化原理。

在这里插入图片描述

使用Dockerfile构建docker镜像

一、dockerfile

  1.文本文件
  dockerfile是一个文本文件,里面有若干条指令,指令描述构建镜像的细节。
  2.常用指令
命令用途
FROM基础镜像文件
RUN构建镜像阶段执行命令
ADD 添加文件,从src目录复制文件到容器的dest,其中src类型有:Dockerfile所在目录的相对路径、URL和压缩包
COPY拷贝文件,和ADD命令类似,但不支持URL和压缩包
CMD容器启动后执行命令
EXPOSE声明容器在运行时对外提供的服务端口
WORKDIR指定容器工作路径
ENV指定环境变量
ENTRYPINT容器入口,ENTRYPOINT 和 CMD 指令目的一样,是指定Docker容器启动时执行的命令,可多次设置,但只有最后一个有效
USER用于设置启动镜像时的用户或UID,写在该指令后的RUN、CMD以及ENTRYPOINT指令都将使用该用户执行命令
VOLUME指定挂载点,该指令使容器中的一个目录具有持久化存储的功能,该目录可被容器本身使用,也可共享给其他容器。当容器中的应用有持久化数据的需求时,可以在Dockerfile中使用该指令。格式为:VOLUME["/data"]

二、构建Nginx相关镜像

  1.镜像作用
  修改Nginx镜像的首页
  2.构建步骤
  (1)新建一个文件,名称:Dockerfile
FROM nginx
RUN echo'<h1>This is docker control Nginx!!!</h1>' > /usr/share/nginx/html/index.html
 

  (2)构建镜像
   -t 指定镜像名字, (.)表示Dockerfile文件所在路径

docker build ‐t nginx:dockercontrol.

  (3)使用该镜像启动docker容器

docker run -d -p 92:80 nginx:dockercontrol

  (4)访问http://Docker宿主机IP:92,就可以看到Nginx首页被修改后的结果了。

三、构建微服务项目镜像

  1.微服务项目eureka-server的jar包上传Linux服务器
  创建目录/usr/local/docker-app/docker-demo/app/eureka
  2.创建文件,名称:Dockerfile
// 基于哪个镜像
  From java:8
// 复制文件到容器
 ADD eureka‐server‐0.0.1‐SNAPSHOT.jar /app.jar 
// 声明需要暴露的端口
 EXPOSE 8761
// 配置容器启动后执行的命令
 ENTRYPOINT ["java","‐jar","/app.jar"]

  3.构建镜像

docker build -t eureka-server:0.0.1 .

  4.启动镜像
   -d:在后台启动, -v :挂载一个主机上的目录到容器目录

docker run -d ‐p 8761:8761 ‐v /log:/container‐log eureka‐server:0.0.1

  5.访问http://Docker宿主机IP:8761/,正常显示Eureka Server首页

虚拟化原理

一、传统虚拟化与容器技术

在这里插入图片描述

    1.结构对比

  • 传统虚拟化技术
      在硬件层面实现虚拟化,增加了系统调用链路的环节,有性能损耗;
  • 容器虚拟化技术
      以共享宿主机Kernel的方式实现,几乎没有性能损耗。
    2.工作过程对比
  • docker工作过程
      利用的是宿主机的内核,而不需要Guest OS,当新建一个容器时,docker不需要重新加载一个操作系统内核,避免了寻址、加载操作系统内核这些费时费资源的过程,只需要几秒钟。
  • 虚拟机工作过程
      当新建一个虚拟机时,虚拟机软件需要加载Guest OS,分钟级别。

二、联合文件系统

  1.作用
  使docker实现机器资源的隔离
  2.常见系统
  常见的有AUFS、Overlay、devicemapper、BTRFS和ZFS等,以Overlay2举例说明,Overlay2的架构图如下:

在这里插入图片描述
   overlayfs在linux主机上只有两层

  • lowerdir 在下层,用来保存镜像(docker)
  • upperdir 在上层,用来存储容器信息
  • merged 对外提供统一的文件系统。
    工作原理
  • 当需要修改一个文件时,使用COW(Copy-on-write)将文件从只读的Lower复制到可写的Upper进行修改,结果也保存在Upper层。
  • 在Docker中,底下的只读层就是image,可写层就是Container。
感谢您的访问!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值