Docker是一个能够把开发的应用程序自动部署到容器的开源引擎,它基于Apache2.0开源授权协议发行,以Docker容器为资源分割和调度的基本单位,封装整个软件运行时环境,为开发者和管理员设计的,用于构建、发布和运行分布式应用的平台。

  Docker极其简洁,它所需的全部环境只是一台仅仅安装了兼容版本的Linux内核和二进制文件最小限的宿主机。

  Docker的目标:

  1. 提供一个简单、轻量的建模方式

  2. 职责的逻辑分离: 使用Docker,开发人员只需要关心容器中运行的应用程序,而运维人员只需要关心如何管理容器

  3. 快速、高效的开发生命周期

  4. 鼓励使用面向服务的架构: Docker推荐单个容器只运行一个应用程序或进程,这样就形成了一个分布式的应用程序模型。

  Docker的组件:

  1. Docker客户端和服务器

  2. Docker镜像: 镜像是构建Docker世界的基石用户基于镜像来运行自己的容器

  3. Registry: Docker用Registry来保存用户构建的镜像。Registry分为两种: 公共(例如Docker Hub的)和私有(可以创建自己的私有的Registry,私有Registry可以收到防火墙的保护)。

  4. 容器: 镜像是Docker生命周期中的构建或打包阶段,而容器则是启动或执行阶段。

  Docker能干什么:

  1. 加速本地开发和构建流程,使其更加高效、更加轻量化。

  2. 能够让独立服务或应用程序在不同的环境中,得到相同的运行结果。

  3. 用Docker创建隔离的环境来进行测试。

  4. Docker可以让开发者先在本机上构建一个复杂的程序或架构来进行测试,而不是一开始就在生产环境部署、测试。

  5. 构建一个多用户的平台即服务(Paas)基础设施。

  6. 为开发、测试提供一个轻量级的独立沙盒环境,或者将独立的沙盒环境用于技术教学。

  7. 提供软件即服务(SaaS)应用程序,如Memcached即服务。

  8. 高性能、超大规模的宿主机部署。

  大致了解了Docker后,下面开始安装使用一下:

  Linux系统下安装Docker比较方便,但是需满足如下几个条件

  1. 运行64位CPU架构的计算机,如x86_64和amd64

  2. Linux内核版本大于3.8

  3. Linux内核必须支持一种适合的存储驱动,如:

    - Device Manager

    - AUFS

    - VFS

    - BTRFS

    - Device Mapper - 默认的存储驱动


  CentOS7系统下进行安装:

  1. 检查CPU位数和Linux版本,满足条件1和2:

  

  2. 检查存储驱动,满足条件3:

  

  如果没有出现device-mapper的信息,需要执行如下命令:sudo modprobe dm_mod来加载dm_mod模块。

  3. 在CentOS7及以上版本,Docker已内置在extras源内,可以直接使用yum来进行安装

  

  4. 查看是否安装成功了:sudo docker info

  

  docker安装成功,使用ifconfig看一下ip信息:

  

  发现多了一个docker0的网络接口设备,在docker启动时,docker会在宿主机器上创建一个名为docker0的虚拟网络接口,它会从RFC 1918定义的私有地址中随机选择一个主机不用的地址和子网掩码,并将它分配给docker0。例如启动docker几分钟后它选择了172.17.0.1,一个16位的子网掩码为主机和它的容器提供了65,534个ip地址。 
  但docker0并不是正常的网络接口,它只是一个在绑定到这上面的其他网卡间自动转发数据包的虚拟以太网桥。它可以使容器与主机相互通信。 
  每次docker创建一个容器,它就会创建一对对等接口(peer interface),类似于一个管子的两端,在这边可以收到另一边发送的数据包。Docker会将对等接口中的一个做为eth0接口连接到容器上,并使用类似于vethAQI2QT这样的惟一名称来持有另一个,该名称取决于主机的命名空间。通过将所有veth*接口绑定到docker0桥接网卡上,Docker在主机和所有Docker容器间创建一个共享的虚拟子网。

  5. 查看docker守护进程状态,如没启动,运行命令:sudo systemctl start docker

  

  6. 可以看看docker的操作参数:

  

  Docker安装好了,在下一篇,就通过docker客户端来与docker daemon进行通信,使用docker。

  

Docker(一)的更多相关文章

  1. docker——容器安装tomcat

    写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...

  2. Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境

    首先为什么要自己编写Dockerfile来构建 nginx.php.mariadb这三个镜像呢?一是希望更深入了解Dockerfile的使用,也就能初步了解docker镜像是如何被构建的:二是希望将来 ...

  3. Docker 第一篇--初识docker

    已经多年不写博客, 看完<晓松奇谈>最后一期猛然觉醒, 决定仔细梳理下自己这几年的知识脉络. 既然决定写, 那么首先就从最近2年热门的开源项目Docker开始.Docker 这两年在国内很 ...

  4. 在docker中运行ASP.NET Core Web API应用程序(附AWS Windows Server 2016 widt Container实战案例)

    环境准备 1.亚马逊EC2 Windows Server 2016 with Container 2.Visual Studio 2015 Enterprise(Profresianal要装Updat ...

  5. docker for mac 学习记录

    docker基本命令 docker run -d -p 80:80 --name webserver nginx 运行容器并起别名 docker ps 展示目前启动的容器 docker ps -a 展 ...

  6. scrapy爬虫docker部署

    spider_docker 接我上篇博客,为爬虫引用创建container,包括的模块:scrapy, mongo, celery, rabbitmq,连接https://github.com/Liu ...

  7. [原][Docker]特性与原理解析

    Docker特性与原理解析 文章假设你已经熟悉了Docker的基本命令和基本知识 首先看看Docker提供了哪些特性: 交互式Shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上, ...

  8. 开发者的利器:Docker 理解与使用

    困扰写代码的机器难免会被我们安装上各种各样的开发工具.语言运行环境和引用库等一大堆的东西,长久以来不仅机器乱七八糟,而且有些相同的软件还有可能会安装不同的版本,这样又会导致一个项目正常运行了,却不小心 ...

  9. 使用python自动生成docker nginx反向代理配置

    由于在测试环境上用docker部署了多个应用,而且他们的端口有的相同,有的又不相同,数量也比较多,在使用jenkins发版本的时候,不好配置,于是想要写一个脚本,能在docker 容器创建.停止的时候 ...

  10. 微服务与Docker介绍

    什么是微服务 微服务应用的一个最大的优点是,它们往往比传统的应用程序更有效地利用计算资源.这是因为它们通过扩展组件来处理功能瓶颈问题.这样一来,开发人员只需要为额外的组件部署计算资源,而不需要部署一个 ...

随机推荐

  1. TypeScript 素描-基础类型

    博文读自 TypeScript 官方文档而来,不具有学习性,仅是本人学习时记录以供日后翻阅 ,有学习TypeScript的朋友还请去看更为详细的官方文档 TypeScript官网文档中的基础类型, T ...

  2. 利用django创建一个投票网站(五)

    创建你的第一个 Django 项目, 第五部分 这一篇从第四部分(en)结尾的地方继续讲起.我们在前几章成功的构建了一个在线投票应用,在这一部分里我们将其创建一些自动化测试. 自动化测试简介 自动化测 ...

  3. POJ 1797 Heavy Transportation(最大生成树/最短路变形)

    传送门 Heavy Transportation Time Limit: 3000MS   Memory Limit: 30000K Total Submissions: 31882   Accept ...

  4. js正则表达式的一些研究,截取两个字符串中间的字符串

    一个最常用的场景 截取两个字符串中间的字符串 var str = "iid0000ffr";    var substr = str.match(/id(\S*)ff/);    ...

  5. 每天写点python

    1.收集系统信息python小程序 1 #!/usr/bin/env python 2 #A system information gathering script 3 4 import subpro ...

  6. 2.0、Hibernate框架的简单搭建

    一.Hibernate:是一个开放源代码的对象关系映射框架,对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句 ...

  7. 一些LINQ的使用

    var list = from staff in staffList from extraRecord in extraList where staff.staffID == extraRecord. ...

  8. C#语言之“中英文混合字符串对齐”的方法

    参考自:(1)http://www.cnblogs.com/cnluoke/articles/1213398.html (2)http://www.cnblogs.com/sql4me/archive ...

  9. Spring Boot with Spring Data JPA (1) - Concept

    What's Spring Data JPA? According to Pivotal, Spring Data JPA, part of the larger Spring Data family ...

  10. session、cookie浅见

    万事开头难,刚开始不一定能写好博文,不,应该是一定写的不好,但我定会用心. 以前只知道session是存在服务器,cookie是存在客户端,至于它们工作的原理就不了解了.为了巩固自己记忆,小小的总结了 ...