Bootstrap

Docker学习笔记整理

这周不知道写点啥内容做个分享,但还是秉持学会分享的精神,粗略放一些Docker相关的问题和解答吧,后面有机会再补补再深挖深挖o(>﹏<)o

1. 容器VS虚拟机

虚拟机是一种带环境安装的解决方案(资源完全隔离),有以下缺陷:

  1. (1)资源占用多
  2. (2)冗余步骤多
  3. (3)启动慢
  4. Linux容器是一种虚拟化技术,用来对进程进行隔离,对容器内进程接触到的资源都是虚拟的,实现与底层系统的隔离

  5. 2. Docker定义及作用

定义:Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口,提供操作系统级别的虚拟化

作用:

  1. (1) 提供一次性环境
  2. 本地测试他人软件、持续集成时提供单元测试和构建环境
  3. (2) 提供弹性的云服务
  4. Docker 容器可随开随关,适合动态扩容和缩容
  5. (3) 用来组建微服务架构
  6. 通过多个容器,一台机器可以跑多个服务,在本机就可模拟微服务架构
  7. 3. 什么是守护式容器

  • 能够长期运行
  • 没有交互式会话
  • 适合运行应用程序和服务

(ctrl+P ctrl+Q 让程序在后台运行)

4. 数据卷定义及作用

定义:一个可以绕过联合文件为一个或多个容器提供访问的目录/文件,与容器的生命周期独立

作用:

为了数据的持久化和方便容器间的数据的共享

相关操作:

5. 数据卷容器定义及作用

定义:命名的容器挂载数据卷,其他容器通过挂载这个容器实现数据共享,挂载数据卷的容器就叫数据卷容器(容器实际上起一个配置信息的作用,连接指定的数据卷)

作用:容器启动时,镜像中指定的数据卷会进行一次完整的初始化,根据镜像指定数据卷来创建的容器所使用的数据卷无法共享

6. Docker的守护进程

7. 容器间的互联

默认允许, 指定容器与容器连接,避免默认容器间用ip地址互联(会因容器的启动而变化ip地址)

8. Docker的跨主机连接的方式

  • 网桥
  • Open vS
  • witchWeave

9. Docker的匿名卷

防止运行时用户忘记将动态文件所保存目录挂载为卷

10. Dockerfile常用指令

  • FROM 指令 用于为镜像文件构建过程指定基准镜像
  • MAINTAINER 指令 用于让Dockerfile制作者提供本人的详细信息
  • LABEL指令 用于为镜像添加元数据
  • COPY指令 用于从Docker宿主机的当前目录复制文件到创建的新镜像中
  • ADD指令 ADD指令类似于COPY指令,所不同的地方是ADD支持使用TAR文件和url路径
  • WORKDIR指令 用 WORKDIR 指定的工作目录,会在构建镜像的每一层中都存在
  • VOLUME指令 用于在image中创建一个挂载点目录,以挂载docker host上的卷或者其他容器上的卷
  • EXPOSE指令 声明运行时容器提供服务端口,容器打开指定要监听的端口,以实现与外部通信。
  • ENV指令 用于为镜像定义所需的环境变量
  •  RUN指令 用于指定docker build过程中,运行的程序,其可以是任何的命令
  •  CMD指令 类似于RUN指令,CMD指令也可用于运行任何命令或者应用程序
  •  ENTRYPOINT指令 用于为容器指定默认运行的程序,从而使得容器像是一个单独的可执行程序
  •  USER指令 用于指定运行image时或者运行Dockerfile中的任何RUN/CMD/ENTRYPOINT指令指定的程序时的用户和用户组
  •  HEALTHCHECK指令 用于告诉docker怎样去检测一个容器,它还是处于工作状态的
  •  ARG指令 构建参数,与 ENV 作用一至。不过作用域不一样
  •  ONBUILD 用于延迟构建命令的执行
;