本篇博客参考了《微服务架构基础》和一些其他教程,对Docker进行了较为全面的总结,以便加深理解和记忆。
1)来源
Docker是一个开源的应用容器引擎,基于go语言开发,诞生于2013年,包括Community Edition(CE社区版,免费)和Enterprise Edition(EE企业版,付费),遵从Apache2.0开源协议。
2)功能
Docker可以让应用及其依赖封装到一个可移植的镜像中,发布到任意Linux机器上,也可也实现虚拟化。Docker完全使用沙箱机制,相互隔离,保证了容器之间的安全性。
3)特点
4)Docker与虚拟机的区别
①虚拟机:运行在每个应用层级的客户端操作系统上,是资源密集型。由于磁盘的镜像和应用程序的操作系统相互交叉,所以导致虚拟机对操作系统的依赖性很强,一旦系统出现问题,虚拟机依赖的文件都可能存在丢失的情况。
②Docker容器:进程级的隔离,多个容器可以共享单个内核,且创建Docker容器的镜像所需要的配置不依赖于宿主机器。正是由于容器间配置的隔离性,容器之间没有配置交叉,因而Docker拥有很好的可移植性。
5)运行机制
- Docker引擎
Docker Engine是Docker的核心部分,使用的CS架构,其主要组成部分如下:
- Docker架构
6)Docker底层技术
1)安装要求
Docker支持多种平台,但由于Docker是基于Ubuntu发布的,因而官方更推荐在Ubuntu上使用Docker。以Ubuntu系统为例,Docker安装需要满足:
①Ubuntu版本的支持(Ubuntu Trusty 14.04(LTS)、Ubuntu Xenial 14.04(LTS)、Ubuntu Zesty 17.04、其他更高版本)
②Ubuntu的内核支持:Docker需要在64位Ubuntu上安装,其内核版本不能低于3.10(可以通过 查看)
2)安装方式
- 在线安装
- 离线安装
在docker官网的下载页下载对应系统、对应版本、对应机器架构的安装包,如Ubuntu下的.deb文件,上传至Ubuntu系统中,进行安装
- 通过脚本文件安装
Dockerfile文件用于构建Docker镜像,其命令包含了构建镜像的配置信息。
1)基本结构
Dockerfile的结构包括4个基本部分:
2)常用指令
4)通过Dockerfile文件构建镜像
5).dockerignore文件
Docker读取应用上下文中的Dockerfile之前会先将.dockerignore文件中声明的文件或目录排除,再读Dockerfile构建镜像,它有助于在进行文件复制时避免向进程中加入过大或敏感无用的文件和目录
1)DockerHub仓库
2)Docker Registry
Docker Registry相比于Docker官方提供的开放的镜像仓库,Docker Registry是用户私人搭建的镜像仓库。
在想严格控制镜像的存储位置,完全拥有自己的镜像分配渠道,或想将镜像存储和分布紧密嵌入到自己开发的程序中,可以使用Docker Registry。
下面给出通过命令行搭建和访问Docker Registry的方法,除此以外,还可以通过Portus等第三方可视化私有仓库工具来简化操作
①Docker Registry仓库搭建
②私有Docker Registry仓库访问
1)数据存储机制
①通过Dockerfile文件创建的镜像,会在某个基础镜像之上层层提交修改(对应每一条指令)
②通过某一镜像构建容器时,会在镜像层之上增加一个容器层。不同容器进行的(数据)修改由各自保存,共享底层的镜像层。当容器层被删除时,容器层包括其存储的数据也会被一同删除,底层的镜像层保持不变
2)数据存储方式
②数据外挂
由数据存储在容器中的缺陷,我们通常不会将数据直接存放于容器中,而是采用Docker volume数据外挂机制,将数据映射到宿主机中,有如下三种方式:
下面着重对volumes数据卷方式进行介绍
3)volumes 数据卷
Volumes数据卷比bind mounts更容易备份和迁移,可以使用Docker CLI或API进行管理,跨平台性更好,更加安全,允许加密和云存储,是持久化容器数据、数据共享的很好选择
Docker默认使用bridge(单主机互联)和overlay(跨主机互联)两种网络驱动来进行容器的网络管理,用户还可自定义网络驱动插件来进行Docker容器的网络管理。
- 单机互联
1)单机下的默认网络
单机下Docker自带三种网络:bridge(容器的默认网络驱动,配置后可以与宿主机实现通信)、host、none(后两者属于无网络,容器无法与外界通信)
2)单机下的自定义网络
单机下的自定义网络,即是自定义bridge网络,它是基于原有的bridge网络创建的新的网络,可以较好的实现容器隔离
3)单机下的容器互联
①未使用相同网络管理的容器之间不能通信
②使用默认bridge网络管理的容器之间可以通过IP通信,但无法通过容器名称通信
③使用自定义bridge网络管理的容器之间可以通过容器名称通信
- 跨主机互联
见Swarm集群的网络管理
1)介绍
Docker Swarm是一个用于创建和管理Docker集群的工具,Docker 1.12以后都集成了swarmkit工具,该工具主要用于Docker集群管理和容器编排。因此,开发者可以不用安装额外的工具就可以通过简单的命令创建并管理Swarm集群。
Docker Swarm集群算是微服务等架构推动的产物,此前较为成熟的容器集群工具有谷歌的开源系统架构Kubernetes和Apache的分布式管理框架Mesos等。
2)特点
3)集群搭建
准备多台Linux机器,其中一台作为管理节点,其余作为工作节点。
4)网络管理
集群状态下会增加两个网络类型:docker_gwbridge(以bridge驱动)、ingress(以overlay驱动),其中ingress是服务默认的网络类型。
实际中会使用基于overlay驱动的自定义网络
5)集群可视化工具visualizer
Docker Compose,Docker编排工具,是用来定义和运行多容器应用的Docker工具。通过该工具可通过docker-compose.yaml配置文件来配置服务,只需要一条简单的命令就可以创建并启动所有服务,提高了部署效率(否则逐一运行不同参数的dockerfile文件,给部署和维护都带来了很多麻烦)
1)linux下的安装与卸载
2)使用方法
①编写Dockerfile文件,定义应用运行的环境,然后构建镜像
②定义docker-compose.yaml文件,对每个应用的执行和参数进行统一定义
③运行docker-compose部署指令,启动所有应用
到此这篇docker 进程守护(docker管理程序)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/jszy-cpgl/11608.html