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介绍
什么是微服务 微服务应用的一个最大的优点是,它们往往比传统的应用程序更有效地利用计算资源.这是因为它们通过扩展组件来处理功能瓶颈问题.这样一来,开发人员只需要为额外的组件部署计算资源,而不需要部署一个 ...
随机推荐
- Git,non-fast-forward
当把coding好的code,push到Git时会出现这个错误:master[rejected non-fast-forward] 问题(Non-fast-forward)的出现原因在于:git仓库 ...
- 基于Dubbo框架构建分布式服务(二)
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> ...
- SocketServer
SocketServer是基于socket写成的一个更强大的模块. SocketServer简化了网络服务器的编写.它有4个类:TCPServer,UDPServer,UnixStreamServer ...
- ThinkPhp 3.2 CRUD操作
创建数据对象 ThinkPHP可以帮助你快速地创建数据对象,最典型的应用就是自动根据表单数据创建数据对象,这个优势在一个数据表的字段非常之多的情况下尤其明显. 很简单的例子: // 实例化User模型 ...
- 学习php一个星期
学习这事都是被逼出来的,总监让我做一个邮箱系统,目测可以.
- mysql表单输入数据出现中文乱码解决方法
MySQL会出现中文乱码的原因在于1.server本身设定问题,一般来说是latin1 2.建库建表时没有制定编码格式. 解决方法: 1.建库的时候 CREATE DATABASE test CHAR ...
- UITextField set placeholderColor and UITextField set clearButton Image
self.usernameTextField.tintColor = [UIColor whiteColor]; [self.usernameTextField setValue:UIColorFro ...
- Android中AIDL的理解与使用(二)——跨应用绑定Service并通信
跨应用绑定Service并通信: 1.(StartServiceFromAnotherApp)AIDL文件中新增接口: void setData(String data); AppService文件中 ...
- JS中用apply、bind实现为函数或者类传入动态个数的参数
为纪念10年没写blog,第一篇博文就以这样一个有趣的窍门开始吧 -___- 在ES5中,当我们调用一个函数时,如果要传入的参数是根据其他函数或条件判断生成的,也就是说不确定会传入多少个参数时,在不改 ...
- js的click事件传递参数方法
参考链接:http://www.cnblogs.com/shytong/p/5005704.html 由于是回调函数,事先就需要先把数据储存在event上,否则只能用全局变量做为参数传递,建议用bin ...