Docker(一)
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(一)的更多相关文章
- docker——容器安装tomcat
写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...
- Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境
首先为什么要自己编写Dockerfile来构建 nginx.php.mariadb这三个镜像呢?一是希望更深入了解Dockerfile的使用,也就能初步了解docker镜像是如何被构建的:二是希望将来 ...
- Docker 第一篇--初识docker
已经多年不写博客, 看完<晓松奇谈>最后一期猛然觉醒, 决定仔细梳理下自己这几年的知识脉络. 既然决定写, 那么首先就从最近2年热门的开源项目Docker开始.Docker 这两年在国内很 ...
- 在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 ...
- docker for mac 学习记录
docker基本命令 docker run -d -p 80:80 --name webserver nginx 运行容器并起别名 docker ps 展示目前启动的容器 docker ps -a 展 ...
- scrapy爬虫docker部署
spider_docker 接我上篇博客,为爬虫引用创建container,包括的模块:scrapy, mongo, celery, rabbitmq,连接https://github.com/Liu ...
- [原][Docker]特性与原理解析
Docker特性与原理解析 文章假设你已经熟悉了Docker的基本命令和基本知识 首先看看Docker提供了哪些特性: 交互式Shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上, ...
- 开发者的利器:Docker 理解与使用
困扰写代码的机器难免会被我们安装上各种各样的开发工具.语言运行环境和引用库等一大堆的东西,长久以来不仅机器乱七八糟,而且有些相同的软件还有可能会安装不同的版本,这样又会导致一个项目正常运行了,却不小心 ...
- 使用python自动生成docker nginx反向代理配置
由于在测试环境上用docker部署了多个应用,而且他们的端口有的相同,有的又不相同,数量也比较多,在使用jenkins发版本的时候,不好配置,于是想要写一个脚本,能在docker 容器创建.停止的时候 ...
- 微服务与Docker介绍
什么是微服务 微服务应用的一个最大的优点是,它们往往比传统的应用程序更有效地利用计算资源.这是因为它们通过扩展组件来处理功能瓶颈问题.这样一来,开发人员只需要为额外的组件部署计算资源,而不需要部署一个 ...
随机推荐
- NOIp2016 Day1&Day2 解题报告
Day1 T1 toy 本题考查你会不会编程. //toy //by Cydiater //2016.11.19 #include <iostream> #include <cstd ...
- 百度地图api调用
<script type="text/javascript" src="http://api.map.baidu.com/api?key=&v=1.1&am ...
- Arcgis, ArcEngine, Arcgis Server使用开发汇总 索引
ArcGIS系列软件license及安装: Arcgis SDE10.1 和 Arcgis server10.1的授权文件license tnt_esri.dat Arcgis8.1安装license ...
- path操作
1. 通过当前目录获取想要的目录,采用relative函数,例如: function test(){ var xx= path.relative('/', '../../'); console.log ...
- [Java] Spring + SpringMVC + Maven + JUnit 搭建
示例项目下载: https://github.com/yangyxd/SpringDemo 利用前面 SpringMVC 项目的配置方式,完成初步的项目创建.下面只讲一些不同之处. 传送门: [Jav ...
- svn强制加注释才能提交
进入库的hooks目录下 cp pre-commit.tmpl pre-commit 并对pre-commit加入运行权限 修改pre-commit内容如下 REPOS="$1" ...
- 基于tomcat与Spring的实现差异化配置方案
起因 在实际开发过程中经常需要加载各种各样的配置文件..比如数据库的用户名密码,要加载的组件,bean等等..但是这种配置在各个环境中经常是不一样的....比如开发环境和测试环境,真实的生产环境.. ...
- java中Map,List与Set的区别(转)
Set,List,Map的区别 java集合的主要分为三种类型: Set(集) List(列表) Map(映射) 要深入理解集合首先要了解下我们熟悉的数组: 数组是大小固定的,并且同一个数组只能存放类 ...
- git pull和git fetch的区别
Git中从远程的分支获取最新的版本到本地有这样2个命令:1. git fetch:相当于是从远程获取最新版本到本地,不会自动merge Git fetch origin master git log ...
- Myeclipse不显示js文件错误的方法
最近在学后台,用Myeclipse ,那么问题来了,Myeclipse 总是喜欢报 js 文件的错误,这就很烦了,看着也不舒服. 查看资料后,解决方法如下: 项目[鼠标右键] -> MyEcli ...