Docker入门

  • Docker使用go基于linux lxc计数实现的开源容器。通过对应用封装、分发、部署、运行全生命周期管理,达到“一次封装,到处运行”。

    在这里插入图片描述

虚拟机 vs 容器
  • 虚拟机需要有额外的虚拟机管理应用和虚拟机操作系统层,操作系统不仅占用空间而且运行速度也相对慢。docker容器是在本机操作系统层面上实现虚拟化,因此很轻量级,速度接近原生系统速度。

  • 虚拟机启动速度是分钟级别,性能较弱、内存和硬盘占用大,一个物理机最多跑几十个虚拟机,但它的隔离性比较好。
    docker启停都是秒级实现,内存和硬盘占用非常小,单机支持上千个容器,在ibm服务器上可运行上万个容器
    在这里插入图片描述

  • Docker由镜像、容器、仓库组成

    镜像文件与ZIP压缩包类似,将一系列文件按照一定的格式制作成单一的文件,像照镜子一样。可以在很短的时间还原出一个完整的系统来(iso,gho都是镜像)。
    例如镜像网站就是将一个完全相同的站点放到几个服务器,分别有自己的URL,在这些服务器上互为镜像网站。它和主站并没有太大差别,或者可算是为主站作的后备措施。

  • 镜像 = 文件系统+数据,由多个层加上一些docker元数据组成,容器运行着由镜像定义的系统。

    可以理解为面向对象编程中的“类”,以某一具体镜像为模板,运行具体的容器,提供服务。

  • 容器 = 镜像运行实例,可以理解为面向对象编程中的“对象”,可以使用同一个镜像运行多个实例。

    从读写角度来说,镜像是只读的,容器是在镜像上添加了一层可读写的文件系统。

  • Docker容器可以简单的季节为提供了系统硬件环境,是真正跑项目程序、消耗机器资源、提供服务的东西。例如,我们可以暂时把容器看作一个 Linux 的电脑,它可以直接运行。容器是基于镜像启动的,并且每个容器都是相互隔离的。

  • Docker 的仓库用于存放镜像。这一点,和 Git 非常类似。我们可以从中心仓库下载镜像,也可以从自建仓库下载。同时,我们可以把制作好的镜像 commit 到本地,然后 push 到远程仓库。仓库分为公开仓库和私有仓库,最大的公开仓库是官方仓库 Dock Hub,国内的公开仓库也有很多选择,例如阿里云等。

  • 层:文件变更集合。像传统虚机应用,每个应用都需要拷贝一份文件副本,运行成百上千上磁盘空间会迅速耗光,而docker采用写时复制来减少磁盘空间,当一个运行中的容器要写入一个文件时,它会把该文件复制到新区域来记录这次的修改,在执行docker提交时将这次修改记录下并产生一个新的层。docker分层解决大规模使用容器时碰到的磁盘和效率问题。
    在这里插入图片描述

创建docker镜像
  • 常用docker命令+手工提交、Dockerfile
  • 创建一个docker应用只需要三步:编写dockerfile、构建镜像、运行容器
  1. Dockerfile:包含一系列命令的文本文件。
    在这里插入图片描述

    FROM:镜像名字 : 标签名字

    • 指定之后构建新镜像所使用的基础镜像,启动构建后Docker会基于该镜像构建新镜像。

    RUN:<command> (linux命令,将代码重定向)

    • 在镜像构建过程中执行特定命令,并生成一个中间镜像,中间镜像会被缓存并在下次构建中使用。如果不想使用可以指定--no-cache参数

    EXPOSE:声明要开放的端口
    WORKDIR:启动容器后默认目录
    ENTRYPOINT:容器启动后,根据它启动一个进程
    在这里插入图片描述
    HEALTHCHECK:通过这个指令执行的陈工与否来判断容器当前的状态。HEALTHCHECK [option] CMD <command>

    • –interval=: 两次健康检查命令执行的间隔时间. default value 是 30 seconds.
    • –timeout=: 设置某一个次health check执行的timeout时间,一旦超时代表这一次healthcheck失败. default value 是 30 seconds.
    • –retries=: 设置health check连续失败次数一旦达到设置的值容器状态就会变成unhealthy. default value 是 3.
  2. 构建镜像
    docker build --tag 镜像名字:标签生成镜像
    每个命令都会有个输入输出,输入是命令,输出是给到层的id,所以,基本上每个命令都会产生一个层
    在这里插入图片描述

  3. 运行容器
    docker run -p 8000:8000 --name 容器名运行镜像,-p将容器的8000端口映射到本机8000端口。
    curl http://locakhost:8000,对端口发起请求,测试容器是否运行成功。

【参考】
快速入门 Docker 教程
Docker Heaflth Check

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值