随着计算机近年来的蓬勃发展,产生了大量优秀系统和软件。软件开发人员能够自由选择各类软件应用。但同时带来的问题就是须要维护一个很是庞大的开发、测试和生产环境。面对之中状况,Docker容器技术横空出世,提供了简单、灵活、高效的解决方案,不须要过多的改变现有的使用习惯,就能够和已有的工具配合使用。所以,掌握Docker相关技术也是途径云计算的必经之路。node
博文大纲:
1、Docker概述
1.Docker简介
2.Docker和虚拟机的区别
3.Docker的使用场景
2、Docker的核心概念及安装
1.镜像
2.容器
3.仓库
4.安装Docker
3、Docker镜像操做
1.搜索镜像
2.获取镜像
3.查看镜像信息
4.删除镜像
5.存出镜像和载入镜像
4、Docker容器操做
1.容器的建立与启动
2.容器的运行与终止
3.容器的进入
4.容器的导入与导出
5.容器的删除
5、Docker资源控制linux
Docker做为开源社区最火爆的项目,它是在Linux容器里运行应用的开源工具,是一种轻量级的“虚拟机”,docker的所有源代码都在https://github.com/docker 进行相关维护,其官网是:https://www.docker.com 。git
Docker的Logo设计为蓝色鲸鱼,拖着许多集装箱。github
如图所示:鲸鱼能够看做宿主机,而集装箱能够理解为相互隔离的容器,每一个集装箱中都包含本身的应用程序。正如 Docker的设计宗旨同样:Buid、 Ship and Run Any App、 Anywhere,即经过对应用组件的封装、发布、部署、运行等生命周期的管理,达到应用组件级别的“一次封装,处处运行”的目的。这里的组件,既能够是一个应用,也能够是一套服务,甚至是一个完整的操做系
统。docker
做为一种轻量级的虚拟化方式,Docker与传统虚拟机相比具备显著的优点。如图:shell
Docker之因此拥有众多优点,与操做系统虚拟化自身的特色是分不开的。传统虚拟机须要有额外的虚拟机管理程序和虚拟操做系统层,而Docker容器是直接在操做系统层面之上实现的虚拟化,如图:json
如今卡者须要能方便地建立运行在云平台上的应用,必需要脱离底层的硬件,同时还须要任什么时候间、地点可获取这些资源,这正是Docker所能提供的。vim
Docker的容器技术能够在一条主句上轻松为任何应用建立一个轻量级的、可移植的、自给自足的容器。经过这种容器打包应用程序,意味着简化了从新部署、调试这些琐碎的重复工做,极大地提升了工做效率。centos
好比:服务器从腾讯云迁移到阿里云,若是采用了Docker容器技术,迁移只须要在新的服务器上启动须要的容器便可。缓存
Docker的镜像是建立容器的基础,相似虚拟机的快照,能够理解为是一个面向Docker容器引擎的只读模板。
Docker提供了简单的机制来建立和更新现有的进行,用户也能够从网上下载已经作好的应用进行来直接使用。
Docker的容器是从镜像建立的运行实例。它能够被启动、中止个删除。所建立的每个容器都是互相隔离、互不可见,能够保证安全性的平台。能够把容器看作一个简易版的Linux环境,Docker利用容器来运行和隔离应用。
Docker仓库是用来集中保存镜像的地方,当建立了本身的镜像以后,可使用命令将它上传到公有仓库或私有仓库,这样一来当下次要在另一条机器上使用这个镜像是,只需从仓库拉取下来便可!
仓库注册服务器是存放仓库的地方,其中包含了多个仓库,每一个仓库集中存放某一类镜像,而且使用不一样的标签来区分它们。目前最大的公有仓库Docker Hub,存放了数量庞大的镜像提供用户下载使用。
Docker支持在主流的操做系统平台上进行使用,包括Windows系统、Linux系统及MacOS系统等。目前最新的RedHat RHEL、Centos及Ubuntu系统官方软件源中都已经默认自带了Docker包,可直接安装使用,也能够用Docker本身的YUM源进行配置。
Centos系统下安装Docker能够有两种方式:
本次博文使用Centos 7.3系统,采用两种方式进行安装:
(1)安装Docker
[root@localhost ~]# systemctl stop firewalld [root@localhost ~]# setenforce 0 //因为安装Docker时,SELinux会组织Docker的正常启动 [root@localhost ~]# yum -y install docker //安装Docker
(2)启动Docker
[root@localhost ~]# systemctl daemon-reload //从新加载守护进程 [root@localhost ~]# systemctl start docker //启动Docker
可是启动Docker时,能够会出现如下状况,如图:
没法正常启动,这时须要进行如下操做:
[root@localhost ~]# vim /etc/sysconfig/docker //修改Docker的配置文件,如图:
[root@localhost ~]# systemctl daemon-reload //从新加载守护进程 [root@localhost ~]# systemctl restart docker //从新加载docker
这样就启动成功了,可是也有个别的例外,还需修改配置文件:
[root@localhost ~]# vim /etc/docker/daemon.json { "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] } //注意:这个配置文件中,有时会自动生成,有时只有“{}”,可是在这个配置文件中,不容许有“,”的出现! //这是和加速配置有关的内容 [root@localhost ~]# systemctl daemon-reload [root@localhost ~]# systemctl restart docker //这样从新加载Docker,就不会出现错误了!
本人目前只遇到这两种状况,这里就先介绍这两种常见的问题!
[root@localhost ~]# docker -v //查看Docker版本 Docker version 1.13.1, build 7f2769b/1.13.1 //注意采用这种方法进行安装,安装的Docker版本较低!
(1)安装Docker
[root@localhost ~]# systemctl stop firewalld [root@localhost ~]# setenforce 0 //因为安装Docker时,SELinux会组织Docker的正常启动 [root@localhost ~]# cd /etc/yum.repos.d/ //切换到yum源目录下 [root@localhost yum.repos.d]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo //获取阿里云的Docker的yum配置文件 [root@localhost ~]# yum makecache //创建yum元数据缓存 [root@docker ~]# yum repolist //列出yum仓库的可用包 ...................... //省略部份内容 docker-ce-stable/x86_64 Docker CE Stable - x86_64 61 //确认docker.....这一列有可用的包,我这里显示的是61个(可是,必定不能够为0) [root@docker ~]# yum install -y docker-ce-18.09.0-3.el7 docker-ce-cli-18.09.0-3.el7 containerd.io-1.2.0-3.el7 //安装docker
关于containerd的解释能够参考:containerd相关解释
若centos是最小化安装,则须要执行如下命令,以便支持Docker命令自动补全
[root@docker01 ~]# yum -y install bash-completion [root@docker01~]# curl -L https://raw.githubusercontent.com/docker/compose/1.24.1/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose [root@docker01 ~]# source /etc/bash_completion.d/docker-compose
(2)启动Docker
[root@localhost ~]# systemctl daemon-reload [root@localhost ~]# systemctl restart docker //启动Docker,这种方法不会出现错误 [root@localhost ~]# docker -v //查看Docker版本 Docker version 18.09.0, build 4d60db4 //注意这种版本是较新的,也是最新的!
这两种安装方式,安装的Docker版本差别较大,根据实际状况自行选择!
本次博文默认使用第二种安装方式,由于第一种安装方式,Docker版本过低,致使与不少镜像版本不匹配!
安装好的Docker有两个程序:Docker服务端和Docker客户端。
大部分状况Docker服务端和Docker客户端会安装在一台服务器上。
Docker运行容器前须要本地存在对应的镜像,若是不存在本地镜像,Docker就会尝试从默认镜像仓库https://hub.docker.com/ 下载。这是由Docker官方维护的一个公共仓库,能够知足用户的绝大部分需求,固然用户也可经过配置来使用自定义的镜像仓库。
在下载Docker镜像时,本人强烈建议使用如下方法加速镜像下载。方法以下:
启用道云提供的下载镜像加速功能(阿里也提供了该功能,我这里就写道云了)。
道云加速器网址:https://www.daocloud.io/
流程以下:
(1)访问道云的官网;
(2)注册用户而且登陆;
前两步完成后,请看图操做:
看到如下界面后,往下拖页面:
拖到此处,根据本身系统版本,复制相应的命令(基于Linux服务器就复制下面这行):
在Linux服务器上执行如下命令:
[root@localhost ~]# curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io [root@localhost ~]# systemctl daemon-reload [root@localhost ~]# systemctl restart docker //启用加速文件以后,须要从新启动docker [root@localhost~]# systemctl enable docker //在完成加速器的操做后,会在/etc/docker目录下多了一个文件 [root@localhost ~]# cat /etc/docker/daemon.json //这个就是和加速相关的文件 {"registry-mirrors": ["http://f1361db2.m.daocloud.io"]}
[root@localhost ~]# docker search dhcp //以DHCP做为关键字进行搜索镜像 INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED docker.io docker.io/networkboot/dhcpd Suitable for running a DHCP server for you... 40 [OK] docker.io docker.io/joebiellik/dhcpd DHCP server running on Alpine Linux 14 [OK] docker.io docker.io/gns3/dhcp A DHCP container for GNS3 using dnsmasq 2 [OK] docker.io docker.io/instantlinux/dhcpd-dns-pxe Serve DNS, DHCP and TFTP from a small Alpi... 2 [OK] docker.io docker.io/ictu/dhcpd-tftpd dhcpd tftpd container 1 [OK] .................#省略部份内容
返回不少包含DHCP关键字的镜像,其中返回的信息包括镜像名称(NAME)、描述(DESCRIPTION)、星级(STARS)、是否官方建立(OFFICIAL)、是否主动建立(AUTOMATED)。默认的输出结果会按照星级评价进行排序,表示该镜像的受欢迎程度,在下载镜像时,能够参考这一项,星级越高表示越受欢迎;是否为官方镜像一项是指是否由官方项目组建立和维护的镜像,通常官方项目组维护的镜像使用单个单词做为镜像名称,咱们称为基础镜像或者根镜像。如/reinblau/dhcp这种命名方式的镜像,表示是由docker hub的用户reinblau建立并维护的镜像,带有用户名为前缀;是否主动建立资源则是指是否容许用户验证镜像的来源和内容。
使用docker search命令只能查找镜像,镜像的标签没法查找,所以若是须要查找docker标签,须要从网页上访问镜像仓库https://hub.docker.com/ 进行查找。
搜索到符合需求的镜像,可使用docker pull命令从网络下载镜像到本地使用。
对于Docker镜像来讲,若是下载镜像时不指定标签,则默认会下载最新版本的镜像,即选择标签为latest;也可经过指定的标签下载特定版本的某一镜像。标签就是用来区分镜像版本的。
[root@localhost ~]# docker pull docker.io/networkboot/dhcpd //获取dhcp的镜像 …………………… //省略下载过程
从整个下载过程当中能够看出,镜像文件是由若干层组成,咱们称为AUFS(联合文件系统),是实现增量保存与更新的基础,下载过程当中会输出镜像的各层信息。镜像下载到本地以后就可使用该镜像了。
用户也可选择从其余注册服务器仓库下载,这时须要在仓库名称前执行完整的仓库注册服务器地址。
[root@localhost ~]# docker images docker.io/networkboot/dhcpd //查看下载本地镜像 //若是不指定镜像名称,则默认查看本地的全部镜像 REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/networkboot/dhcpd latest 52cbff801df2 7 months ago 105 MB
从查看的信息能够看到如下信息:
用户还能够根据镜像的惟一标识ID号,获取镜像的详细信息。好比:
[root@localhost ~]# docker inspect 52cbff801df2 //查看dhcp镜像的详细信息(dhcp镜像的ID号)
镜像的详细信息中包括建立时间、系统版本、主机名、域名、用户、卷、标签、操做系统、设备ID等各类信息。
为了在后续工做中常用这个镜像,可使用docker tag命令为本地镜像添加新的标签。
[root@localhost ~]# docker tag docker.io/networkboot/dhcpd dhcp:dhcp //将本地镜像添加一个新的名称为dhcp,标签为dhcp [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE dhcp dhcp 52cbff801df2 7 months ago 105 MB docker.io/networkboot/dhcpd latest 52cbff801df2 7 months ago 105 MB //查看效果
删除镜像的操做有两种:使用镜像的标签删除镜像;使用镜像的ID删除镜像;
[root@localhost ~]# docker rmi docker.io/networkboot/dhcpd:latest //指定镜像仓库名称与标签名称进行删除,也能够指定镜像的ID号进行删除
注意:当一个镜像有多个标签是,docker rmi命令只是删除该镜像多个标签中的指定标签,不会影响镜像文件。至关于只是删除了镜像的一个标签而已。但当该镜像只剩下一个标签的时候就要当心了,再使用删除命令就会完全删除该镜像。
[root@localhost ~]# docker rmi dhcp:dhcp //再进行删除就会完全删除镜像 Untagged: dhcp:dhcp Deleted: sha256:52cbff801df2c6e2da3866d9f9476f20f190f64a0e886fbdfa79d843befa666a Deleted: sha256:db0874da62cbba0cdfb80d69326ddb4b48a4867d9e62f1b905212a4ddca52cf6 Deleted: sha256:67b03dec2ec327771501cfc88560f9e6cce99fb74e892491accacc6a917fa4b0 Deleted: sha256:e783d8ee44ce099d51cbe699f699a04e43c9af445d85d8576f0172ba92e4e16c Deleted: sha256:cc7fae10c2d465c5e4b95167987eaa53ae01a13df6894493efc5b28b95c1bba2 Deleted: sha256:99fc3504db138523ca958c0c1887dd5e8b59f8104fbd6fd4eed485c3e25d2446 Deleted: sha256:762d8e1a60542b83df67c13ec0d75517e5104dee84d8aa7fe5401113f89854d9
当使用docker rmi命令后面跟上镜像的ID号时,必须确保该镜像没有被容器使用才能进行,删除时系统会先删除掉全部指向该镜像的标签,而后删除该镜像文件自己。若是该镜像已经被容器使用,正确的作法是先删除依赖该镜像的全部容器,再去删除镜像。
当须要把一台机器上的镜像迁移到另外一台机器上时,须要将镜像保存成本地文件,这一过程叫作存出镜像,可使用docker save命令进行存出操做。以后就能够复制该文件到其余机器。方法以下:
[root@localhost ~]# docker save -o dhcp docker.io/networkboot/dhcpd //将本地的dhcp镜像存出为文件dhcp
将存出的镜像从A机器复制到B机器,须要在B机器上使用该镜像,就能够将该导出文件导入B机器的镜像库中,这一过程叫作载入镜像。
[root@localhost ~]# scp 192.168.1.1:/root/dhcp . //B机器使用scp的方式将dhcp文件复制到本地 [root@localhost ~]# docker load --input dhcp //将dhcp文件中载入镜像到本地镜像库中 [root@localhost ~]# docker load < dhcp //这条命令,跟上一条命令一个意思,选择其中一种便可!
容器是Docker的另外一个核心的概念,简单来讲,容器是镜像的一个运行实例,是独立运行的一个或一组应用及他们所必需的运行环境,包括文件系统、系统类库、shell环境等。镜像是只读模板,而容器会给这个只读模板提供一个额外的可写层。
Docker的建立就是将镜像加载到容器的过程,Docker的容器十分轻量级,用户能够随时建立或者删除。新建立的容器默认处于停滞状态,不运行任何程序,须要在其中发起一个进程来启动容器,这个过程是该容器的惟一进程,因此当该进程结束的时候,容器天然也会停滞。停滞的容器能够从新启动并保留原来的修改。可使用“docker create”命令新建一个容器。
[root@localhost ~]# docker create -it networkboot/dhcpd /bin/bash 93cfa68ee12f8ea569e5a627ff241c6652641103425a32d863279ef6e459114d //使用dhcp的镜像建立一个容器。-i:表示让容器的输入保持打开;-t表示让Docker分配一个伪终端 //下面的数字则是容器的惟一ID号
若是建立容器命令出现报错“WARNING:IPV4 forwarding is disable Networking will not work”这样的信息。这时须要使用修改/usr/lib/sysctl.d/00-system.conf文件,在文件中添加一条“net.ipv4.ip_forward = 1”,而后重启网络服务便可!
建立完容器以后,可使用“docker ps”命令查看容器的运行状态。添加“-a”选项能够列出系统最近一次启动的容器。
[root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 93cfa68ee12f networkboot/dhcpd "/entrypoint.sh /bin…" 9 minutes ago Created nifty_pascal //输出的信息显示容器的ID号、加载的镜像、运行的程序、建立时间、目前所处的状态、端口映射、容器名称等。 //其中状态一栏为“Created”则表示当前的容器是新建立的并处于中止状态。
启动中止状态的容器可使用“docker start ”命令。
[root@localhost ~]# docker start 93cfa68ee12f //启动容器(后面是容器的ID号/名称) 93cfa68ee12f [root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 93cfa68ee12f networkboot/dhcpd "/entrypoint.sh /bin…" 12 minutes ago Up 2 minutes nifty_pascal //状态变为UP状态,表示容器已经处于启动状态
若是用户想建立并启动容器,能够直接执行“docker run”命令。等同于先执行“docker create”命令,再执行“docker start”命令,须要注意只要后面的命令运行结束,容器就会中止。
[root@localhost ~]# docker run networkboot/dhcpd /bin/bash -c ls //指定一个终端,-c后面是执行的命令 bin boot dev entrypoint.sh etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var [root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e555cebe89ea networkboot/dhcpd "/entrypoint.sh /bin…" 47 seconds ago Exited (0) 46 seconds ago heuristic_galileo //查询状态时,Exited为退出、中止状态
当利用“docker run”命令来建立容器时,Docker在后台的标准运行过程是这样:
优点须要在后台持续地运行这个容器,就须要让docker容器在守护形式在后台进行运行,能够在“docker run”命令以后添加“-d”选项来实现,可是须要注意容器所运行的程序不能结束。好比:
[root@localhost ~]# docker run -d networkboot/dhcpd /bin/bash -c "while true;do echo ok;done;" 9a69dac64cb36c43f37bbd1a7f23c8d64f83148ab8ab6ef983d30be70cc73b47 //-d选项表示在后台运行,后面跟一个死循环的脚本便可! [root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9a69dac64cb3 networkboot/dhcpd "/entrypoint.sh /bin…" 7 seconds ago Up 7 seconds kind_mendeleev //这样,查看状态则是“UP”状态,表示容器始终在启动
若是须要终止运行的容器,可使用“docker stop”命令完成。好比:
[root@localhost ~]# docker stop 9a69dac64cb3 //中止容器,后面能够是容器的ID或名称 9a69dac64cb3 [root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9a69dac64cb3 networkboot/dhcpd "/entrypoint.sh /bin…" 2 minutes ago Exited (143) 2 seconds ago kind_mendeleev //再次查看状态则是Exited状态,表示终止状态
须要进入容器进行相关操做时,可使用“docker exec”命令进入运行着的容器。好比:
[root@localhost ~]# docker exec -it 93cfa68ee12f /bin/bash //-i表示让容器的输入保持打开,-t选项表示让docker分配一个伪终端 //指定容器的ID,使用的shell进入容器中 root@93cfa68ee12f:/# ls //进入容器中,命令提示符发生了变化 bin dev etc lib media opt root sbin sys usr boot entrypoint.sh home lib64 mnt proc run srv tmp var root@93cfa68ee12f:/# exit //使用exit退出容器 exit
用户能够将任何一个Docker容器从一台机器迁移到另外一台机器。在迁移过程当中,首先须要将已经建立好的容器导出为文件,可使用“docker export”命令实现,不管这个容器是处于运行状态仍是中止状态都可导出。导出以后可将导出文件传输到其余机器,经过相应的导入命令实现容器的迁移。
[root@localhost ~]# docker export 93cfa68ee12f > dhcpd //将容器导出为dhcpd文件,能够是容器的名称也但是容器的ID号
导出的文件从A机器传输到B机器,以后使用“docker import”命令导入,成为镜像。
[root@localhost ~]# scp 192.168.1.1:/root/dhcpd . //使用scp命令将容器生成的文件传输到本地 [root@localhost ~]# cat dhcpd | docker import - dhcp:dhcp //导入dhcpd文件成为本地镜像 sha256:897fc38054e773e1798db8ba9ea41ac8565b970ec7f2d34babc478b527505e81 [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE dhcp dhcp 897fc38054e7 4 seconds ago 84.7 MB
可使用“docker rm”命令将一个已经终止状态的容器进行删除。
[root@localhost ~]# docker stop 9a69dac64cb3 //经过容器的ID号进行中止 9a69dac64cb3 [root@localhost ~]# docker rm 9a69dac64cb3 //经过容器的ID号进行删除 9a69dac64cb3 [root@localhost ~]# docker ps -a | grep 9a69dac64cb3 //最后确认一下
若是删除一个正在运行的额容器,能够添加“-f”选项强制删除,可是建议先将容器中止再进行删除操做。
Docker默认的存储目录在/var/lib/docker,Docker的镜像、容器、日志等内容所有都存储在此,能够单独使用大容量的分区来存储这些内容,而且通常选择创建LVM逻辑卷,从而避免Docker运行过程当中存储目录容量不足的问题。
[root@node3 ~]# cd /sys/fs/cgroup/cpu,cpuacct/system.slice/docker-3364d6aee72d0c01e606c047737683790ccfe2a1df14933e172cfcaf8ba2b820.scope/ [root@node3 docker-3364d6aee72d0c01e606c047737683790ccfe2a1df14933e172cfcaf8ba2b820.scope]# echo 2000 >cpu.cfs_quota_us //最大值是100000,表示100%。
咱们看到 /sys/fs/cgroup 目录中有若干个子目录,咱们能够认为这些都是受 cgroups 控制的资源以及这些资源的信息。
• blkio — 这个子系统为块设备设定输入/输出限制,好比物理设备(磁盘,固态硬盘,USB 等等)。
• cpu — 这个子系统使用调度程序提供对 CPU 的 cgroup 任务访问。
• cpuacct — 这个子系统自动生成 cgroup 中任务所使用的 CPU 报告。
• cpuset — 这个子系统为 cgroup 中的任务分配独立 CPU(在多核系统)和内存节点。
• devices — 这个子系统可容许或者拒绝 cgroup 中的任务访问设备。
• freezer — 这个子系统挂起或者恢复 cgroup 中的任务。
• memory — 这个子系统设定 cgroup 中任务使用的内存限制,并自动生成内存资源使用报告。
• net_cls — 这个子系统使用等级识别符(classid)标记网络数据包,可容许 Linux 流量控制程序(tc)识别从具体 cgroup 中生成的数据包。
• net_prio — 这个子系统用来设计网络流量的优先级
hugetlb — 这个子系统主要针对于HugeTLB系统进行限制,这是一个大页文件系统。
当多个容器任务运行时,很难计算CPU的使用率,为了使容器合理使用CPU资源,能够经过如下方式对单个容器进行限制。
[root@node3 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE dhcp dhcp 56c1dba24f3e 23 hours ago 96.6 MB [root@node3 ~]# docker run -tid --cpu-shares 1024 56c1dba24f3e /bin/bash -c ls
限制新建的容器使用第一个内核
[root@node3 ~]# cat /proc/cpuinfo| grep "processor"| wc -l 2 [root@node3 ~]# docker run -tid --cpuset-cpus 1 56c1dba24f3e /bin/bash -c ls
限制新建的容器使用内存512MB
[root@node3 ~]# docker run -tid -m 512MB 56c1dba24f3e /bin/bash -c ls
一旦容器中Cgroup使用的内存超过了限制的容量,Linux内核将会尝试收回这些内存,若是仍然没办法控制使用内存在限制范围内,进程将会被杀死。
若是一个服务器上运行容器的混合部署,那么会存在同时几个程序写磁盘数据的状况,这时就须要使用一下方式来进行限制。
限制新建的容器的/dev/sda的写入速度为1MB
[root@node3 ~]# docker run -tid -device-write-bps 56c1dba24f3e /bin/bash -c ls
关于Docker就先简单介绍这么多!
———————— 本文至此结束,感谢阅读 ————————