docker学习之理论学习

docker的介绍

简介

  • Docker是一个开源的应用容器引擎,基于Go语言,并遵从Apache协议开源。
  • Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。
  • 容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。

应用场景

  • web应用的自动化打包和发布
  • 自动化测试和持续集成、发布
  • 在服务型环境中部署和调整数据库或其他后台应用。
  • 从头编译或者扩展现有的平台环境

docker的优点

  • 简化程序:Docker让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,便可以实现虚拟化,Docker的最大优势,过去需要用数天乃至数周的任务,在Docker容器的处理下,只需要数秒就能完成。
  • 避免选择恐惧症:如果你有选择恐惧症,Docker帮你打包你的纠结。比如Docker镜像;Docker镜像中包含了运行环境和配置,所以Docker可以简化部署多种应用实例工作。比如web应用、后台应用、数据库应用、大数据应用、比如hadoop集群、消息队列等等都可以打包成一个镜像部署。
  • 节省开支:一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker改变了高性能必然高架格的思维定式。Docker与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。

docker系统架构

  • Docker使用客户端-服务端(cs)架构模式,使用远程API来管理和创建Docker容器,Docker容器通过Docker镜像来创建。
  • 容器与镜像的关系类似于面向对象编程中的对象与类
  • 相关概念
标题 说明
镜像(images) Docker镜像是用于创建Docker容器的模板
容器(Container) 容器是独立运行的一个或一组应用
客户端(Client) Docker客户端通过命令行或者其他工具使用Docker API与Docker守护进程通信
主机(Host) 一个物理或者虚拟的机器用于执行Docker守护进程和容器
仓库(Regisrty) Docker仓库用来保存镜像,可以理解为代码控制中的代码仓库。DockerHub提供了庞大的镜像集合供使用。
Docker Machine Docker Machine 是一个简化Docker安装的命令工具,通过一个简单的命令行即可在响应的平台上安装Docker

相关概念

数据卷(数据持久化)

  • 数据卷是一个可以提供一个或多个容器使用的特殊目录。
  • 可以达到以下目的:
    • 绕过“拷贝写”系统,以达到本地磁盘IO的性能,(比如运行一个容器,在容器中对数据卷修改内容,会直接改变宿主机上的数据卷中的内容,所以是本地磁盘IO性能,而不是先在容器中写一份,最后还要将容器中的修改的内容拷贝出来进行同步)
    • 绕过“拷贝写”系统,有些文件不需要在docker commit 打包镜像文件,
    • 在多个容器间共享目录
    • 在宿主和容器间共享一个文件。
  • 数据卷可以提供很多有用的特性:
    • 数据卷可以在容器之间共享和重用,容器间传递数据将变得高效与方便。
    • 对数据卷内容数据的修改会立马生效,无论是容器内操作还是本地操作
    • 对数据卷的更新不会影响镜像,解耦开应用和数据
    • 卷会一直存在,知道没有容器使用,可以安全地卸载它。

端口映射与容器互联

端口映射实现容器访问

当容器中运行一些网络应用,要让外部访问这些应用时,可以通过-p参数来指定端口映射。

互联机制实现便捷互访

容器的互联是一种让多个容器中的应用进行快速交互的方式。它会在源和接收容器之间创建连接关系,接收容器可以通过容器名快速访问到容器,而不用指定具体的IP地址。

–name

  1. 容器互联

    使用 --link 参数可以让容器之间安全地进行交互

    docker run -d --name db mysql

    docker run -d -p --name web --link db:db webapp

    此时,db容器和web容器建立互联关系。

    –link参数的格式为–link name:alias,其中name是要链接的容器的名称,alias是别名

Docker相当于在两个互联网的容器之间创建了一个虚拟机通道,而且不用映射他们的端口到宿主主机上。

Docker-compose

  • Docker Componse是一种用于通过使用单个命令创建和启动Docker应用程序的工具。我们可以使用它来配置应用程序的服务。
  • 它是开发,测试和升级环境的利器。
  • 它提供以下命令来管理应用程序的整个生命周期:
    • 启动,停止和重建服务
    • 查看运行服务的状态
    • 流式运行服务的日志输出
    • 在服务上运行一次性命令
  • 要实现docker compose,需要包括以下步骤
    • 将应用程序环境变量放在Docker文件中以公开访问。
    • 在docker-compose.yml 文件中提供配置服务名称,以便他们可以在隔离的环境中一起运行。
    • 运行docker-compose ,compose将启动并运行整个应用程序。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章