写给你的Docker(后续来啦)

通过“docker stats”命令观察这两个容器占用CPU的情况可以看到容器
6114c62899a7占用的CPU比容器b16286346ffc占用的CPU多近一倍

如果要变更一个正在运行的容器的配额
则需要先使用“docker inspect CONTAINER”命令获取容器ID。获取的这个ID 会很长,
docker inspect 6114c62899a7 | grep  Id

使用“systemctl set-property”命令将容器6114c62899a7  占用 CPU 的权重设
置为

systemctl set-property \
docker-6114c62899a78847af8c6fdc49f16c7193b524573ed588b6d095cba9d8cb82d0.scope \
CPUShares=1024

在使用-m参数时,可以指定具体的参数值后缀,如K、M或G
以下语句使用了mycentos 来进行测试

-m256m:限制容器使用的内存大小。
--vm1;给压力测试工具stress产生一个内存分配的进程。
--vm-bytes128M:压力测试工具stress每次分配大小为128MB的内存空间。 --vm-hang0:压力测试工具stress分配完内存后立即释放分配的内存;如果该
值为非零值,如100,则表示分配内存后,等待 100 秒后再释放分配的内存。
使用“docker stats”命令观察容器占用的内存,会发现容器占用的内存被限定在
256MB
要在Docker 中对容器使用的 I/O带宽进行限定,则需要先了解 Docker l/O 管理相关
的参数。执行以下命令可以获取这些参数及其含义

使用--device-read-bps和--device-write-bps 参数限定容器的读写速率
(1)使用以下语句创建并启动容器。这里将限制容器的写入速度设为 1MB/s。
docker run -it --rm --dovice-write-bps /dev/sda:1mb centos /bin/bash
在容器中执行以下命令。其中,oflag=direct 表示读写数据采用直接I/0方式
dd if=/dev/zero of=test.out bs=1M count=200 oflag=direct
以下语句将限制容器的读取速度为1MB/s。
docker run -it --rm --docker-read-bps /dev/sda:1mb centos /bin/bash
为了观察结果,先在宿主机上安装sysstat 软件包。
yum -y install sysstat
创建并启动容器,通过使用“--device-write-iops”参数将容器写数据的速率设
定为每秒5次
在容器中执行以下命令,其中,oflag=direct 表示读写数据采用直接1/0方式

 

以下语句会将容器读数据的速率设定为每秒5次

管理Docker 容器中的数据
在生产环境中使用 Docker,一方面,需要对数据进行保存或者在多个容器之间进行数
据共享;另一方面,在 Docker 的容器被删除后,并不会保留容器的状态信息。
那么如何实现信息的持久化呢?这必然涉及容器的数据管理。
在Docker容器中实现数据管理的两种方式
在Docker容器中实现数据管理(或者说实现数据的持久化)主要有以下两种方式
1. 数据卷(Data Volumes )
数据卷本质上是一个挂载目录,类似使用Linux的mount命令挂载的目录。数据卷可以
供容器使用,并且可以在不同的容器之间共享和重用数据卷。对数据卷的修改会立即生效。
数据卷与容器彼此独立,对数据卷的更新不会影响镜像。

 

在Docker 中可以使用-mount和-v 两种方式给容器挂载数据卷。图3-33展示了数据卷
与容器的关系。
数据卷容器(Data Volume Containers)
数据卷容器是一种特殊的容器,用来维护数据卷。它可以在多个容器之间共享数据信
息。利用数据卷容器可以很方便地完成数据迁移。
创建一个名为“myvolume”的数据卷。  查看所有的数据卷

使用“dockerinspect volume”命令查看数据卷的详细信息

 

启动一个容器,并使用myvolume 数据卷。这里使用Nginx 镜像创建了一个容
器,并将容器的80端口映射到了宿主机的1234端口,容器的名称为“mynginx”。

 

 

切换到“var/lib/docker/volumes/myvolume/_data”目录下,并修改 Nginx
的首页index.html文件的内容

 

通过浏览器访问宿主机的1234端口打开Nginx的主页会看到显示的就是新修改的
Nginx主页

 

在挂载数据卷时,也可以使用-V 参数。以下命令是将宿主机的“/root”目录挂
载到了容器内的“/root/container/mydatavolume”目录下
docker run -it -v /root/:/root/container/mydatavolum centos bash

 

其中,-v参数用于指定在创建容器时挂载的数据卷,格式为:
-v 宿主机目录:容器内部目录
需要说明的是,使用这样方式挂载的数据卷默认的权限是“读写”(rw),用户也可以通
过ro将其指定为“只读”
docker run -it -v /root/:/root/container/mydatavolume:ro centos bash
另外,也可以在创建容器时使用--privileged=true参数来解决权限的问题
docker run -it -v /root/:/root/container/mydatavolume --privileged=true centos bash
数据卷容器也是一个容器,专门用来提供数据卷供其他容器挂载。如果用户需要在多个
容器之间共享一些持续更新的数据,则最简单的方式是使用数据卷容器。
1.使用数据卷容器
创建一个数据卷容器dbdata,并在其中创建一个数据卷挂载到“/dbdata”下
docker run -it -v /dbdata --name dbdata centos
创建一个容器db1,并使用--volumes-from 挂载dbdata 容器中的数据卷
docker run -it --volumes-from dbdata --name db centos 
在容器db1的“/dbdata”目录下生成了一个新的文件b.txt。
echo "Hello World" > b.txt
创建一个容器db2,并使用参数--volumes-from 来挂载dbdata容器中的数据卷
docker run -it --volumes-from dbdata --name db2 centos

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值