Docker的核心及安装的具体使用
一.Docker是什么?
(1)Docker是在Linux容器里运行应用的开源工具,是一种轻量级的“虚拟机”
Logo设计为蓝色鲸鱼,鲸鱼可以看作为宿主机,上面的集装箱可以理解为相互隔离的容器,每个集装箱中包含自己的应用程序。
(2)Docker和虚拟机的区别
作为一种轻量级的虚拟化方式,Docker与传统虚拟机相比具有显著的优势。
Docker之所以拥有众多优势,与操作系统虚拟化自身的特点是分不开的。传统虚拟机需要有额外的虚拟机管理程序和虛拟机操作系统层,而Docker容器是直接在操作系统层面之上实现的虚拟化,
如图:
(3)Docker的使用场景
现在开发者需要能方便地创建运行在云平台上的应用,必须要脱离底层的硬件,同时还需要任何时间地点可获取这些资源,这正是Docker所能提供的。Docker的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器。通过这种容器打包应用程序,意味着简化了重新部署、调试这些琐碎的重复工作,极大地提高了工作效率。
二.Docker的核心概念及安装
(1)镜像
Docker的镜像(mage)是创建容器的基础,类似虚拟机的快照
可以理解为是一一个面向Docker容器引擎的只读模板。比如,一个镜像可以是一个完整的CentOS操作系统环境,称为-个CentOS
镜像;可以是一个安装了MySQL的应用程序,称为一个MySQL镜像,等等。
(2)容器
Dooker的容器(Container)是从镜像创建的运行实例。它可以被启动、停止和删除。所创建的每一个容器都是相互隔离、互不可见,可以保证安全性的平台。可以把容器看作一个简易版的Linux环
境,Docker利用容器来运行和隔离应用。
(3)仓库
Docker仓库(Repository)是用来集中保存镜像的地方,当创建了自己的镜像之后,可以使用push命令将它上传到公有仓库(Public)或者私有仓库(Private),这样一来当下次要在另外一台机器上使用这个镜像时,只需要从仓库上拉取下来就可以了。
(4)安装Docker
主机有网的话可以直接安装,
配置yum
[root@localhost~]#rm-rf/etc/yum.repos.d/* [root@localhost~]#vim/etc/yum.repos.d/a.repo [aaa] name=asd baseurl=file:///media gpgcheck=0 [root@localhost~]#mount/dev/cdrom/media/ [root@localhost~]#yum-yinstalldocker
安装完成可以启动Docker,并设置开机自启
[root@localhost~]#systemctlstartdocker [root@localhost~]#systemctlenabledocker Createdsymlinkfrom/etc/systemd/system/multi-user.target.wants/docker.serviceto/usr/lib/systemd/system/docker.service.
[root@localhost~]#dockerversion//查看Docker版本 Client: Version:1.13.1 APIversion:1.26 Packageversion:docker-1.13.1-75.git8633870.el7.centos.x86_64 Goversion:go1.9.4 Gitcommit:8633870/1.13.1 Built:FriSep2819:45:082018 OS/Arch:linux/amd64 Server: Version:1.13.1 APIversion:1.26(minimumversion1.12) Packageversion:docker-1.13.1-75.git8633870.el7.centos.x86_64 Goversion:go1.9.4 Gitcommit:8633870/1.13.1 Built:FriSep2819:45:082018 OS/Arch:linux/amd64 Experimental:false
分为服务端与客户端
三.Docker镜像操作
(1)搜索镜像(前提电脑有网)
[root@localhost~]#dockersearchdhcp INDEXNAMEDESCRIPTIONSTARSOFFICIALAUTOMATED docker.iodocker.io/networkboot/dhcpdSuitableforrunningaDHCPserverforyou...43[OK] docker.iodocker.io/joebiellik/dhcpdDHCPserverrunningonAlpineLinux15[OK] docker.iodocker.io/gns3/dhcpADHCPcontainerforGNS3usingdnsmasq3[OK] docker.iodocker.io/instantlinux/dhcpd-dns-pxeServeDNS,DHCPandTFTPfromasmallAlpi...2[OK] docker.iodocker.io/ictu/dhcpd-tftpddhcpdtftpdcontainer1[OK] docker.iodocker.io/marcelwiget/dhcptesterSimpledhcpclientsimula
(2)获取镜像
[root@localhost~]#dockerpulldocker.io/network/dhcpd//下载上面最开头的dhcp
还有一种就是插入已经下载好的dhcp
做成光盘插入到主机中
[root@localhost~]#mount/dev/cdrom/media/ [root@localhost~]#cd/media/ [root@localhostmedia]#ls dhcp [root@localhostmedia]#cpdhcp/ [root@localhostmedia]#
[root@localhost/]#dockerload将镜像下载到本地
(3)查看镜像信息
[root@localhost/]#dockerimages REPOSITORYTAGIMAGEID//镜像IDCREATEDSIZE docker.io/networkboot/dhcpdlatest6f98b6b9b48619monthsago125MB
- REPOSITORY:镜像属于的仓库。
- TAG:镜像的标签信息,标记同一个仓库中的不同镜像。
- IMAGEID:镜像的唯一ID号,唯一标识了该镜像。
- CREATED:镜像创建时间。
- CREATED:镜像创建时间。
[root@localhost/]#dockerinspect6f98b6b9b486\查看镜像ID详细信息镜像的详细信息中包括创建时间、系统版本.主机名.域名.用户.卷.标签.操作系统.设备ID等各种信息。
[root@localhost/]#dockertagdocker.io/networkboot/dhcpddhcp:dhcp 第一个dhcp:名称 第二个dhcp:标签(4)删除镜像
[root@localhost/]#dockerrmidhcp:dhcp Untagged:dhcp:dhcp四.Docker容器操作
容器是Docker的另一一个核心概念,简单来说,容器是镜像的一个运行实例,是独立运行的一个或一组应用及它们所必需的运行环境,包括文件系统、系统类库.shell环境等。镜像是只读模板,而容器会给这个只读模板一个额外的可写层
(1)容器的创建与启动
[root@localhost/]#dockercreate-itdocker.io/networkboot/dhcpd/bin/bash e392026ddd186d01cbd3306acae15f2f197dc9874a84ea241d347c7fe20a0946常用选项:-i表示让容器的输入保持打开:-t表示让Docker分配一个伪终端。
[root@localhost/]#dockerps-a\\查看所有容器运行状态 CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES e392026ddd18docker.io/networkboot/dhcpd"/entrypoint.sh/b..."AboutaminuteagoCreatedelegant_goldwasser输出信息显示容器的ID号.加载的镜像.运行的程序.创建时间、目前所处的状态、端口映射.容器名称等。其中状态-栏为Created表示当前的容器是新创建的并处于停止状态。
[root@localhost/]#dockerstarte392026ddd18\\启动容器,上面的ID e392026ddd18容器启动后,可以看到容器状态一栏已经变为UP,表示容器已经处于启动状态。
(2)容器的运行与终止
[root@localhost/]#dockerstop容器的ID号(3)容器的进入
[root@localhost/]#dockerexec-ite392026ddd18/bin/bash root@e392026ddd18:/#用户可以通过所创建的终端来输入命令,通过exit命令退出容器.
root@e392026ddd18:/#ls bincoreentrypoint.shhomelib64mntprocrunsrvtmpvar bootdevetclibmediaoptrootsbinsysusr root@e392026ddd18:/#exit exit(4)容器的导出导入
容器是最小化,导致一些命令不能使用,所以就要从容器里面导出到本地来设置,设置完再导入进容器就可以。
导出命令如下:
[root@localhost/]#dockerexporte392026ddd18>/etc/dhcp/dhcpd.conf乱数字为容器的ID号
把dhcp主配置文件导出来配置,
导入命令如下:
[root@localhost/]#dockerimport/etc/dhcp/dhcpd.conf>e392026ddd18(5)容器的删除
可以使用dockerrm命令将一个已经终止状态的容器进行删除。
一个镜像可以包含多个容器
[root@localhost/]#dockerstope392026ddd18\\先停止 e392026ddd18 [root@localhost/]#dockerrme392026ddd18\\再删除 e392026ddd18 [root@localhost/]#dockerps-a CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES五.Docker资源控制
Cgroup是Controlgroup的简写,是Linux内核提供的一种限制所使用物理资源的机制,这些资源主要包括CPU.内存、blkio。下面就这3个方面来谈一下Docker是如何使用Cgroup机制进行管理的。
(1)限制CPU使用速率
例如,将容器60ff4594cc73的CPU使用设置为20000,设置CPU的使用率限定为20%:
[root@localhost~]#echo20000>/sys/fs/cgroup/cpu/system.slice/docker-60ff4594cc73b5474477636b25b41f16e166a3606aed226522d420d0c296990d.scope/cpu.cfs_quota_us(2)多任务按比例分享CPU
例如,运行3个新建容器A.B、C,占用CPU资源的比例为1:1:2就可以这样执行:
[root@localhost/]#dockerrun-tid--cpu-shares1024+镜像A [root@localhost/]#dockerrun-tid--cpu-shares1024+镜像B [root@localhost/]#dockerrun-tid--cpu-shares2048+镜像C以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。