Docker解析

什么是Docker?

Docker是一个开放源代码软件专案,让应用程序部署在软件容器下的工作可以自动化进行,借此在Linux操作系统上,提供一个额外的软件抽象层,以及操作系统层虚拟化的自动管理机制,Docker利用Linux核心中的资源分离机制,例如Cgroups,以及Linux核心命令空间(name space),来建立独立的软件容器(containers).这可以在单一Linux实体下的运作,避免启动一个虚拟机器造成的额外负担。linux核心对命名空间的支援完全隔离了工作环境中应用程序的视野,包括进程树、网络、用户ID与挂载文件系统,而核心的cgroup提供资源的隔离,包括cpu、内存、block/O与网络。

docker和传统虚拟化方式的不同

Docker解析_第1张图片
Paste_Image.png
Docker解析_第2张图片
Paste_Image.png

为什么要用Docker

1.更快速的交付和部署
2.更轻松的迁移和扩展
3.更简单的管理
Docker解析_第3张图片
Paste_Image.png

Docker的基本概念

镜像(Image)
Docker镜像就是用来生成Docker容器的一个只读的模板。
docker根据Docker镜像来生成的一个运行环境。

容器(Container)
容器是从镜像创建的运行实例。它可以被启动、开始停止,删除。每个容器都是相互隔离的、保证安全的平台。
可以把容器看做一个简易版的Linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
镜像是只读的,容器在启动的时候创建一层可写层作为最上层。

仓库(Repository)
仓库是集中存放镜像文件的场所。
仓库分为公开仓库(Public)和私有仓库(Private).
最大的公开仓库是Dokcer Hub,存放了数量庞大的镜像供用户下载。
私有仓库是本地网络内创建的一个私有仓库。
用户创建了镜像后,可用Docker push命令将镜像上传到仓库。下次在其他机器上使用时再pull下来就行了.

Docker安装

centos ubuntu

yum update apt-get update
yum install docker.io apt-get install docker.io

如果操作系统内核版本过低,需要升级操作系统内核。
通过uname –r命令可以查看操作系统内核。建议内核升级到3.10以上。
Linux内核源码可在www.kernel.org 上下载。

docker启动

1.service docker start
2.修改配置文件
Centos:/etc/sysconfig/docker
Ubuntu:/etc/default/docker

获取docker镜像

1.docker search centos
在docker hub上搜索镜像,部分结果如下

Docker解析_第4张图片
Paste_Image.png

docker基本操作

1.docker images 列出本地镜像
2.docker run -t -i docker.io/centos:latest /bin/bash
使用docker.io/centos:latest启动一个容器
3.docker commit 提交修改后的镜像

docker数据管理

docker内部及容器之间如果管理数据?

主要有两种方式:
1.数据卷(Data volumes)
2.数据卷容器(Datavolume containers)
挂载一个主机目录作为数据卷
Docker run -d --name tomcat -v /var/logs/tomcat:/home/tomcat/logs/ docker.io/centos:latest

Paste_Image.png

数据卷容器

如果有一些持续更新的数据需要在容器之间共享,最好创建数据卷容器。
数据卷容器,就是专门提供数据卷供其他容器挂载的容器。
在其他容器中用 --volumes-from来挂载

我的Dokcer镜像设计

Docker解析_第5张图片
Paste_Image.png

关于docker的一些问题

什么样的应用场景适合使用docker部署?
什么服务应该放到Docker上?
怎样保证docker中的数据安全性?
怎样保证生产环境的稳定性以及故障的快速排除能力?
怎样设计监控系统?
应用迁移怎样保证数据同步?

你可能感兴趣的:(Docker解析)