Docker虚拟化

1. Docker虚拟化特点

跟传统VM比较具有如下优点:

  • 操作启动快

运行时的性能可以获取极大提升,管理操作(启动,停止,开始,重启等等) 都是以秒或毫秒为单位的。

  • 轻量级虚拟化

你会拥有足够的“操作系统”,仅需添加或减小镜像即可。在一台服务器上可以布署100~1000个Containers容器。但是传统虚拟化,你虚拟10-20个虚拟机就不错了。

  • 开源免费

开源的,免费的,低成本的。由现代Linux内核支持并驱动。注* 轻量的Container必定可以在一个物理机上开启更多“容器”,注定比VMs要便宜。

2. 为什么使用docker

Docker 在如下几个方面具有较大的优势:

  • 更快速的交付和部署

Docker在整个开发周期都可以完美的辅助你实现快速交付。Docker允许开发者在装有应用和服务本地容器做开发。可以直接集成到可持续开发流程中。

开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。 Docker 可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。 Docker 容器很轻很快!容器的启动时间是秒级的,大量地节约开发、测试、部署的时间。

  • 高效的部署和扩容

Docker容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。 这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个。

Docker的兼容性和轻量特性可以很轻松的实现负载的动态管理。你可以快速扩容或方便的下线的你的应用和服务,这种速度趋近实时。

  • 更高的资源利用率

Docker 对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器。容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。传统虚拟机方式运行 10 个不同的应用就要起 10 个虚拟机,而Docker 只需要启动 10 个隔离的应用即可。

  • 更简单的管理

使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。

3. Docker镜像原理

一个完整的Docker镜像可以支撑一个Docker容器的运行,在Docker容器运行过程中主要提供文件系统数据支撑。

Docker镜像作为docker中最基本的概念,有以下几个特性:

  • 镜像分层,每个镜像都由一个或多个镜像层组成;
  • 可通过在某个镜像加上一定的镜像层得到新镜像(此过程可通过编写dockerfile或基于容器Commit实现);
  • 每个镜像层拥有唯一镜像ID;
  • 镜像在存储和使用时共享相同的镜像层(根据ID),所以在pull镜像时,已有的镜像层会自动跳过下载;
  • 每个镜像层都是只读,即使启动成容器,也无法对其真正的修改,修改只会作用于最上层的容器层;

Docker容器,可以理解为一个或多个运行进程,而这些运行进程将占有相应的内存,相应的CPU计算资源,相应的虚拟网络设备以及相应的文件系统资源。而Docker容器所占用的文件系统资源,则通过Docker镜像的镜像层文件来提供。

基于每个镜像的json文件,Docker可以通过解析Docker镜像的json的文件,获知应该在这个镜像之上运行什么样的进程,应该为进程配置怎么样的环境变量,Docker守护进程实现了静态向动态的转变。

4. Docker安装配

CentOS7.x Linux,基于YUM二进制方式,操作命令如下:


#安装第三方Epel-relase扩展源;

yum install epel-release -y

#安装Docker软件包程序;

yum install docker -y

#查看Docker软件包是否部署;

yum list docker

rpm -qa|grep -w docker

#启动Docker Engine服务;

systemctl start docker.service

#查看Docker版本信息;

docker version

根据如上Docker部署方法,Docker虚拟化平台构建完成,如图所示:

5. Docker仓库源更新实战

Docker默认连接的国外官方镜像,通常根据网络情况不同,访问时快时慢,大多时候获取速度非常慢,为了提示效率可以自建仓库或者先修改为国内仓库源,提升拉取镜像的速度。

Docker可以配置的国内镜像有很多可供选择,例如:Docker中国区官方镜像、阿里云、网易蜂巢、DaoCloud等,这些都是国内比较快的镜像仓库。

从国外官网下载Docker Tomcat镜像,访问速度慢,

Docker镜像修改方法,vim /etc/docker/daemon.json,执行如下命令即可:

cat>/etc/docker/daemon.json<<EOF
{

"registry-mirrors":["https://registry.docker-cn.com"]

}

EOF

service docker restart

systemctl start docker.service

重启Docker服务即可,修改仓库地址为国内仓库后,获取镜像速度非常快。

6. Docker常用命令讲解

Docker常用命令详解:


docker  version #查看版本

docker  search centos #搜索可用docker镜像

docker  images 查看当前docker所有镜像

docker  pull  centos #下载镜像

cat   centos.tar | docker import  -  centos6  #Docker导入镜像

docker  export  容器id  > cenos6.tar  #Docker导出镜像

docker  run   centos echo "hello word"  #在docker容器中运行hello world!

docker  run  centos yum install ntpdate   #在容器中安装ntpdate的程序

docker  ps -l 命令获得最后一个容器的id,

docker   ps  -a查看所有的容器。

运行docker commit 提交刚修改的容器,例如:

docker  commit  2313132(容器的id)  centos:v1

docker run -it -d centos /bin/bash 生成一个新的/bin/bash shell环境的容器,可以登录进入操作,其中-t 表示打开一个终端的意思,-i表示可以交互输入。

docker exec -it  id  /bin/bash  进入容器里面

docker  run  -d  centos:v1  /bin/bash  ,-d表示在后台启动,以daemon方式启动。

docker stop  id 关闭容器

docker start  id 启动某个容器

docker  rm  id 删除容器,docker  rmi  images删除镜像

docker  run  -d  -p 80:80   centos:v2,解析:-p指定容器启动后docker上运行的端口映射及容器里运行的端口,80:80,第一个80表示docker系统上的80,第二个80表示docker虚拟机里面的端口。用户默认访问本机80端口,自动映射到容器里面的80端口。

Docker命令表格如下:


docker


search


在docker hub中搜索镜像;


docker


pull


从docker镜像源服务器拉取指定镜像或者库镜像;


docker


push


推送指定镜像或者库镜像至docker源服务器;


docker


history


展示一个镜像形成历史;


docker


images


列出系统当前镜像;


docker


run


创建一个新的容器并运行一个命令;


docker


start


启动容器;


docker


stop


停止容器;


docker


attach


当前shell下attach连接指定运行镜像;


docker


build


通过Dockerfile定制镜像;


docker


commit


提交当前容器为新的镜像;


docker


cp


从容器中拷贝指定文件或者目录到宿主机中;


docker


create


创建一个新的容器,同run,但不启动容器;


docker


diff


查看docker容器变化;


docker


events


从docker服务获取容器实时事件;


docker


exec


在已存在的容器上运行命令;


docker


export


导出容器的内容流作为一个tar归档文件[对应import];


docker


import


从tar包中的内容创建一个新的文件系统映像[对应export];


docker


info


显示系统相关信息;


docker


inspect


查看容器详细信息;


docker


kill


指定docker容器;


docker


load


从一个tar包中加载一个镜像[对应save];


docker


login


注册或者登陆一个docker源服务器;


docker


logout


Docker registry退出;


docker


logs


输出当前容器日志信息;


docker


port


查看映射端口对应的容器内部源端口;


docker


pause


暂停容器;


docker


ps


列出容器列表;


docker


restart


重启运行的容器;


docker


rm


移除一个或者多个容器;


docker


rmi


移除一个或多个镜像;


docker


save


保存一个镜像为一个tar包[对应load];


docker


tag


给源中镜像打标签;


docker


top


查看容器中运行的进程信息;


docker


unpause


取消暂停容器;


docker


version


查看docker版本号;


docker


wait


截取容器停止时的退出状态值。

6. Docker虚拟化平台的案例

1)根据如上的Docker部署指令,Docker虚拟化平台构建完成,作为运维人员如何在企业中应用好Docker软件呢?能够使用Docker虚拟化平台实现哪些企业需求呢?Docker虚拟化技术的产物是Docker容器(虚拟机)。

2)要掌握Docker虚拟化技术,首先要了解3个Docker虚拟化相关的概念:

  • Docker镜像

Docker镜像类似Linux ISO镜像文件,主要是存储了各种应用程序、软件服务、各种数据等,为Docker虚拟化的产物(虚拟机)提供数据支撑的,后续的虚拟机所需的文件、数据都是从镜像文件中获取的,而且Docker镜像内容只读的、不能被修改的、模板数据。

  • Docker容器(虚拟机)

Docker容器(虚拟机)是基于Docker镜像运行之后的实例,类似进程和程序的关系(进程是程序运行之后的实例),Docker容器是可读、可写的,不能直接修改镜像的数据内容,镜像是持续为容器提供服务,没有镜像就没有容器,容器永远离不开镜像。

  • Docker仓库

Docker仓库是用于存储镜像的地方,仓库通常分为两类:公共仓库、私有仓库,企业测试环境、生产环境推荐自建私有仓库,私有仓库:安全、稳定、高效、管理、定制性。

3)基于Docker虚拟化平台,构建一套Nginx WEB服务器(容器),同时让NginxWEB服务器对外提供WEB服务,用户通过浏览器可以实现页面的访问,操作步骤如下:

#在Docker仓库中搜索Nginx镜像;

docker search nginx

#从Docker仓库下载Nginx镜像;

docker pull docker.io/nginx

#查看本地Nginx镜像列表;

docker images|grep -i nginx

#基于本地Nginx镜像启动Nginx WEB服务(容器|虚拟机);

docker run -itd -p 80:80 docker.io/nginx

  Run,全新启动一台容器(虚拟机);

  • -i,interactive交互模式;
  • -t,tty打开一个终端;
  • -d,daemon后台启动;
  • -p,开启DNAT映射,将宿主机80映射至容器的80,用户访问宿主机的80即是访问容器的80。

#查看已经启动的Nginx虚拟机(容器);

  • docker ps

#访问Nginx容器中的WEB服务;

#查看虚拟机(容器)的IP地址;

docker inspect 3d5559023d71|grep -i ipaddr|tail -1|awk -F\" ‘{print $4}‘

#将宿主机的index.html文件部署至Nginx容器(虚拟机)中;

docker cp index.html 3d5559023d71:/usr/share/nginx/html/

4)Docker虚拟化构建Nginx+Tomcat集群

#基于Docker构建Tomcat WEB平台,操作方法如下:


#从docker仓库搜索tomcat镜像;

docker search tomcat

#从Docker仓库下载tomcat镜像;

docker pull docker.io/tomcat

#查看本地tomcat镜像列表;

docker images|grep -i tomcat

#基于tomcat镜像运行tomcat容器(虚拟机);

docker run -itd -p 8080:8080 docker.io/tomcat:latest

docker run -itd -p 8081:8080 docker.io/tomcat:latest

#查看tomcat容器是否启动;

docker ps|grep -i tomcat

#查看tomcat容器的IP地址;

docker inspect 容器id|grep -i ipaddr|tail -1

#进入docker容器中,命令;

docker exec -it 9bfbcb5d7bc3 /bin/bash

#宿主上查看docker容器中配置文件;

docker exec d8237e80d49b cat /etc/nginx/conf.d/default.conf

docker exec d8237e80d49b mkdir /tmp/`date +%F`

docker exec d8237e80d49b ls /tmp/

#通过浏览器访问Docker宿主机IP+8080即可;

http://docker宿主机IP:8080/

http://docker宿主机IP:8081/

#配置Nginx整合2台Tomcat WEB集群,实现负载均衡+动静分离架构;

#Nginx主配置文件代码如下:


cat default.conf

upstream tomcat_web {

server 172.17.0.3:8080 weight=100 max_fails=2 fail_timeout=15;

server 172.17.0.4:8080 weight=100 max_fails=2 fail_timeout=15;

}

server {

listen 80;

server_name localhost;

#charset koi8-r;

#access_log /var/log/nginx/host.access.log main;

location / {

root /usr/share/nginx/html;

index index.html index.htm;

proxy_pass http://tomcat_web;proxy_set_header host $host;

}

}

原文地址:https://www.cnblogs.com/zhangan/p/11549856.html

时间: 2024-10-31 10:41:12

Docker虚拟化的相关文章

Docker虚拟化技术系列之-自动化部署管理

随着企业Docker容器越来越多,如果要靠手工去管理docker,肯定非常吃力,而且也不现实,这就需要我们把日常的操作变成自动化管理,通过脚本工具,将工作减轻到最小,解放运维人员,如下为企业Docker自动化部署脚本V1版本,如果需要更多其他的功能,可以自己定制和修改. 如下自动化管理脚本功能: 1)通过YUM自动安装Docker平台: 2)通过该脚本,可以自动配置桥接网络: 3)自动创建docker容器,给予centos操作系统: 4)自动收集创建好的Docker容器,集中管理: 5)通过PI

Docker虚拟化技术

---恢复内容开始--- Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化. 容器是完全使用沙箱机制,相互之间不会有任何接口(类似iPhone的app).几乎没有性能开销,可以很容易的在机器和数据中心中运行.更重要的是,它们不依赖于任何语言,框架或包括系统. “Docker”应该是2014年最火爆的技术之一,2015年将开启新的跨越. Docker自开源后受到广泛的关注和讨论,以至于dotClo

docker虚拟化安装配置与常用命令

一.Docker安装配置 docker只有在centos6.5以上机器才能使用yum直接安装,如果其他版本需要安装centos扩展源epel. docker官方文档说要求Linux kernel至少3.8以上,一般为centos6.5或者Ubuntu系统, 在Centos6.x系列安装docker软件,首先要关闭selinux,然后需要安装相应的epel源,如下: sed -i '/SELINUX/s/enforcing/disabled/g' /etc/selinux/config wget

你真的了解Docker虚拟化吗?

服务器虚拟化指的是在操作系统与硬件之间加一层,叫做hypervisor层,对下控制硬件,对上承载操作系统,操作系统os以文件形式封装运行,称为虚拟机,主要解决的问题是硬件利用率和灵活性的问题,常见的方案为vmware vsphere,xen,kvm,hyper-v..容器虚拟化指的是在os上将应用打包以进程的形式运行,应用和应用间非完全隔离,但是更轻量,效率高,lxc和docker都可以称为容器级虚拟化,区别在于docker可以理解为经过精美封装过更加好用的lxc,有更好的接口和更完善的配套.

Docker虚拟化实战学习——基础篇(转)

Docker虚拟化实战学习--基础篇 2018年05月26日 02:17:24 北纬34度停留 阅读数:773更多 个人分类: Docker Docker虚拟化实战和企业案例演练 深入剖析虚拟化技术概念和应用场景 虚拟化,一是项技术--,是一种资源解决方案. 虚拟化技术是将物理资源转变为逻辑上可以管理的资源,以打破物理结构之间的壁垒,使计算元件运行在虚拟的基础上,而不是真实的物理资源上. 通过虚拟化技术,可以将物理资源转变为逻辑资源(虚拟机),应用程序服务运行在虚拟资源上,而不是真实的物理机上.

Docker虚拟化技术系列之-命令详解

虚拟化原理:虚拟化解决方案的底部是要进行虚拟化的物理机器.这台机器可能直接支持虚拟化,也可能不会直接支持虚拟化:那么就需要系统管理程序 层的支持.系统管理程序(Virtual machine monitor),或称为 VMM,可以看作是平台硬件和操作系统的抽象化.在某些情况中,这个系统管理程序就是一个操作系统:此时,它就称为主机操作系统. 随着docker不断的学习,我们要想进一步去维护docker,就需要掌握docker日常使用的命令,如下为docker常用命令: 一.容器基础命令 docke

使用Docker虚拟化技术搭设Hadoop环境

一.Docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app).几乎没有性能开销,可以很容易地在机器和数据中心中运行.最重要的是,他们不依赖于任何语言.框架包括系统.(以上摘自“百度百科”) 二.Docker安装 2.1 Docker简介 使用yum安装Docker最新版本,经验证,目前能安装Dock

Docker虚拟化容器的使用

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化. 容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低. 一.docker常用命令 docker容器生命周期管理 docker run  在一个新的容器执行一个命令 docker start 开一个或者更多已经

Docker虚拟化技术系列之-DockerFile配置

随着Docker管理的任务增多,我们需要用Dockerfile进行docker容器管理,这样可以减轻人工的操作,让docker管理更加的方便,快捷: Dockerfile是一个镜像的完整描述,可以通过Dockerfile来描述构建镜像的步骤,并自动构建一个容器. 所有的 Dockerfile 命令格式都是: INSTRUCTION arguments 虽然指令忽略大小写,但是建议使用大写. FROM 命令 FROM <image> 或 FROM <image>:<tag>