容器和宿主机之间共享数据------挂在卷-------容器内的目录和宿主机的目录进行挂载。实现数据文件共享
容器的生命周期有限,一旦重启所有对容器内部文件数据的修改以及保存的数据都会被初始化,所以为了防止数据丢失,重要的组件一定会做数据卷。
-v 指定:volume
docker run -itd --name test1 -v /etc/yum.repos.d/:/etc/yum.repos.d/contos:7 bash
第一点:前面是宿主机目录,后面是容器内容内的目录
第二点:加不加斜杠,都是目录,不是文件,如果不存在,宿主机和容器自动创建
第三点:以宿主机的目录为标的,同步的是宿主机目录的内容到容器内
第四点:挂载之后,容器内的目录的权限默认是读写权限都有
容器与容器之间进行数据共享:
容器之间会需要共享数据,最简单的方法是使用数据卷容器。可以提供容器内部的一个目录,专门用来供其他容器进行挂载。
容器互联:
容器与容器之间建立一条专门的网络通道,容器与容器之间通过这个通道相互通信。
建立通道之后,容器之间可以通过容器进行通信,容器之间不需要暴露端口,也不依赖宿主机的ip
在容器内部可以通过容器名进行通信,容器之间不需要暴露端口,也不依赖宿主机的ip
在容器内部可以通过容器名直接访问另一个容器。简化容器之间的连接配置
doker容器的资源控制:
docker通过cgruop来控制容器的资源配额。包括cpu,内存,磁盘三大方面
cgroup
control gropus
linux内核提供的可以限制,记录,隔离进程所有使用的物力资源(cpu,内存,磁盘IO)的机制。
1、cup资源控制:
只能在容器创建时候进行限制
进程占用cpu的时间进行计算
cat cpu.cfs_quota_us
-1:表示系统没有对该进程进行cpu的限制
cat cpu.cfs_period_us
100000微妙 100毫秒
在每个使用cpu的周期内,容器可以用指定的比例使用cpu时间
50000微妙 50毫秒
容器占用cpu的时间
修改配置文件进行cpu限制
docker exec -it test1 bash
yum -y install vim
vim cpu.sh
#!/bin/bash
i=0
while true
do
let i++
done
chmod 777 cpu.sh
./cpu.shdocker stats test1/id
#可以查看容器的运行占用宿主机资源的情况
docker top test1
#查看容器内的进程pid和容器外的进程pid映射关系修改配置文件进行cpu限制:
docker ps -a
cd /sys/fs/cgroup/cpu/docker/d62c444a5e4118a078e84be01de30f18372b28dfe7358caee183f4da986fa40a
echo 50000 > cpu.cfs_quota_us
在容器中查看是否生效
cd /opt/
top
2、设置cpu的资源占用比:
--cpu-shares默认值是1024,必须是1024的倍数
--cpu-shares
#指定容器占用cpu的份额
#默认权重是1024,设置的值只能是1024的倍数
docker run -itd --name test3 --cpu-shares 512 centos:7 /bin/bash
docker run -itd --name test4 --cpu-shares 1024 centos:7 /bin/bash
docker exec -it test3 bash
yum -y install epel-release
yum -y install stress
#下载模拟系统负载的工具
stress -c 4
在宿主机查看
topdocker exec -it test4 bash
yum -y install epel-release
yum -y install stress
stress -c 4
在宿主机查看
docker stats
#不加容器名就是显示所有容器占用情况
3、内存限制
-memory=
-m 512m
-m 1g
单位是小写
也可以限制容器使用交换空间swap
--memory-swap=512M/1g
docker run -itd --name test6 -m 512m centos:7 /bin/bash
docker stats
如何清理docker占用的磁盘空间
docker system prune -a
#清理docker占用磁盘的空间