笔记-Docker部分

Docker
1.Docker是一个容器化平台,它以容器的形式将您的应用程序及其所有依赖项打包在一起,以确保您的应用程序在开发,测试或生产的任何环境中无缝运行.
2.Docker容器,将一个软件包装在一个完整的文件系统中,该文件系统包含运行所需的一切:代码,运行时,系统工具,系统库等可以安装在服务器上的任何东西.
3.这可以保证软件始终运行相同,无论其环境如何.

Docker镜像
Docker镜像是Docker容器的源代码.换句话说,Docker镜像用于创建容器.使用build命令创建镜像,并且在使用run启动使它们生成容器.镜像存储在Docker注册表registry.hub.docker.com中,因为它们可能变得非常大,镜像被设计为由其他镜像层组成,允许在通过网络传输镜像时发送最少量的数据

Docker容器
Docker容器包括应用程序及其所有依赖项,但与其他容器共享内核,作为主机操作系统上用户空间中的独立进程运行.Docker容器不依赖于任何特定的基础架构:它们可以在任何计算机,任何基础架构和任何云中运行

Docker基本使用流程
1.一切都从Dockerfile开始.Dockerfile是镜像的源代码.
2.创建Dockerfile后,您可以构建它以创建容器的镜像.镜像只是”源代码”的”编译版本”,即Dockerfile.
3.获得容器的镜像后,应使用注册表重新分发容器.注册表就像一个git存储库 - 你可以推送和拉取镜像.
4.接下来,您可以使用该镜像来运行容器.在许多方面,正在运行的容器与虚拟机(但没有管理程序)非常相似.

Dockerfile中最常见的指令
FROM:我们使用FROM为后续指令设置基本镜像.在每个有效的Dockerfile中,FROM是第一条指令
MAINTAINER:镜像维护者的姓名和邮箱地址
RUN:容器构建时需要运行的命令
EXPOSE:当前容器对外界暴露出的端口
WORKDIR:(默认在/根目录)终端登录进去的落脚点
ENV:构建镜像过程中的环境变量
ADD:拷贝+解压功能
COPY:直接拷贝
VOLUME:自建容器卷
CMD:容器启动时需要运行的命令.可能有多个CMD,但只有最后一个生效,CMD会被docker run之后的参数替换
ENTRYPOINT:目的和CMD一样,但命令行加参数不会替换
ONBUILD:触发器,当镜像用作另一个镜像构建的基础时,ONBUILD指令向镜像添加将在稍后执行的触发指令

监控Docker
Docker提供docker stats和docker事件等工具来监控生产中的Docker.可以使用这些命令获取重要统计数据的报告
1.Docker统计数据:当我们使用容器ID调用docker stats时,我们获得容器的CPU,内存使用情况等.它类似于Linux中的top命令.
2.Docker事件:Docker事件是一个命令,用于查看Docker守护程序中正在进行的活动流.一些常见的Docker事件是:attach,commit,die,detach,rename,destroy等.

非Linux系统上运行Docker
通过添加到Linux内核版本2.6.24的名称空间功能,可以实现容器的概念.容器将其ID添加到每个进程,并向每个系统调用添加新的访问控制检查.它由clone()系统调用访问,该调用允许创建先前全局命名空间的单独实例.
如果由于Linux内核中可用的功能而可以使用容器,那么显而易见的问题是非Linux系统如何运行容器.docker for Mac和Windows都使用Linux VM来运行容器.Docker Toolbox用于在Virtual Box VM中运行容器.但是,最新的Docker在Windows中使用Hyper-V,在Mac中使用Hypervisor.framework

Docker构建与环境无关的系统
1.卷
2.环境变量注入
3.只读文件系统

COPY和ADD命令区别
一般而言,虽然ADD并且COPY在功能上类似,但是首选COPY.那是因为它比ADD更易懂.COPY仅支持将本地文件复制到容器中,而ADD具有一些功能(如仅限本地的tar提取和远程URL支持),这些功能并不是很明显.因此,ADD的最佳用途是将本地tar文件自动提取到镜像中,如ADD rootfs.tar.xz /

Docker Hub
Docker hub是一个基于云的注册表服务,允许您链接到代码存储库,构建映像并测试它们,存储手动推送的镜像以及指向Docker云的链接,以便您可以将镜像部署到主机.它为整个开发流程中的容器发现,分发和变更管理,用户和团队协作以及工作流自动化提供了集中资源

Docker容器四种状态
1.运行
2.已暂停
3.重新启动
4.已退出

识别Docker容器的状态的命令
docker ps –a

Docker Image和Layer
Image:Docker镜像是由一系列只读层构建的
Layer:每个层代表Dockerfile中的指令

虚拟化
允许在同一硬件上运行两个完全不同的操作系统

管理程序
管理程序处理创建用户虚拟机运行的虚拟环境.它监督用户系统,并确保在必要时为客户分配资源.虚拟机管理程序位于物理机和虚拟机之间,并为虚拟机提供虚拟化服务.为了实现它,它拦截虚拟机上的客户操作系统操作,并模拟主机操作系统上的操作

Docker Swarm
Docker Swarm是Docker的群集管理工具.它将Docker主机池转变为一个虚拟Docker主机.Docker Swarm提供标准的Docker API,任何已经与Docker守护进程通信的工具都可以使用Swarm扩展到多个主机