这周不知道写点啥内容做个分享,但还是秉持学会分享的精神,粗略放一些Docker相关的问题和解答吧,后面有机会再补补再深挖深挖o(>﹏<)o
1. 容器VS虚拟机
虚拟机是一种带环境安装的解决方案(资源完全隔离),有以下缺陷:
- (1)资源占用多
- (2)冗余步骤多
- (3)启动慢
-
Linux容器是一种虚拟化技术,用来对进程进行隔离,对容器内进程接触到的资源都是虚拟的,实现与底层系统的隔离
-
2. Docker定义及作用
定义:Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口,提供操作系统级别的虚拟化
作用:
- (1) 提供一次性环境
- 本地测试他人软件、持续集成时提供单元测试和构建环境
- (2) 提供弹性的云服务
- Docker 容器可随开随关,适合动态扩容和缩容
- (3) 用来组建微服务架构
- 通过多个容器,一台机器可以跑多个服务,在本机就可模拟微服务架构
-
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 用于延迟构建命令的执行