什么是Docker?
Docker是一个开放源代码软件专案,让应用程序部署在软件容器下的工作可以自动化进行,借此在Linux操作系统上,提供一个额外的软件抽象层,以及操作系统层虚拟化的自动管理机制,Docker利用Linux核心中的资源分离机制,例如Cgroups,以及Linux核心命令空间(name space),来建立独立的软件容器(containers).这可以在单一Linux实体下的运作,避免启动一个虚拟机器造成的额外负担。linux核心对命名空间的支援完全隔离了工作环境中应用程序的视野,包括进程树、网络、用户ID与挂载文件系统,而核心的cgroup提供资源的隔离,包括cpu、内存、block/O与网络。
docker和传统虚拟化方式的不同
Paste_Image.png Paste_Image.png为什么要用Docker
1.更快速的交付和部署
2.更轻松的迁移和扩展
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基本操作
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
数据卷容器
如果有一些持续更新的数据需要在容器之间共享,最好创建数据卷容器。
数据卷容器,就是专门提供数据卷供其他容器挂载的容器。
在其他容器中用 --volumes-from来挂载
我的Dokcer镜像设计
Paste_Image.png关于docker的一些问题
什么样的应用场景适合使用docker部署?
什么服务应该放到Docker上?
怎样保证docker中的数据安全性?
怎样保证生产环境的稳定性以及故障的快速排除能力?
怎样设计监控系统?
应用迁移怎样保证数据同步?
网友评论