一 容器资源限制
如果不对容器的资源做限制,它就会无限制地使用物理机的资源。
查看资源情况 :docker stats
1.内存限制
--memory Memory limit
如果不设置 --memory-swap,其大小和memory一样
docker run -d --memory 100M --name tomcat1 tomcat
2.CPU限制
--cpu-shares 权重
docker run -d --cpu-shares 10 --name tomcat2 tomcat
二 Docker网络
每启动一个docker容器,docker就会给docker容器分配一个IP。
容器间通信使用的是evth-pair技术。
1.查看network
查看网络列表:docker network ls
查看指定网络:docker network inspect 网络id
2.创建自己的network
docker network create my-net-jcl
或者
docker network create --subnet=172.18.0.0/24 my-net-jcl
3.创建容器,并且指定使用自己创建的网络
docker run -d --name my-net-tomcat --network my-net-jcl
4.单机容器间通信
如果容器使用的是使用自己创建的网络,则可以使用自定义的容器名称或者容器内部IP地址来通信
三 磁盘-数据持久化
1.匿名挂载
在写Dockerfile的时候使用VOLUME指令可以定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷。
liujian@liujiandeMacBook-Pro ~ % docker volume ls
DRIVER VOLUME NAME
local 0a740df7f5cc30f57cfcac28ff4ec9b02fccf3c0a1cabda683e1f263c2b4e4e3
local 0b56e86025cfdf4853558e9628725fc7fd882a87fa7d2aa622372c6f78bb1fbc
local 2cbabaa0119242fdbaf81e62db1cd0ae418a5d4a0450520d05d1c0d7268da07f
local 2dad9f8679d3debf7f5ec69eb16124b4dc6bd2e3f2d5c3137771c00597e4da20
local 4c815c6e53f410d93c653a0e042be11739fd036d504cc498253a4d43b31ebca5
local 4e80bccef25051ebf3794a46ee44475992c07a66bf85b38822d020ed76d59006
local 5c4c992f9df4ec1f97db190106b886babaa77676fcbe1467b6312825ccbd3a62
2.指定名称挂载
使用-v命令指定挂载的名称
docker run -d --name mysql1202 -v mysql1201_data:/var/lib/mysql mysql:5.7.30
liujian@liujiandeMacBook-Pro ~ % docker volume ls
DRIVER VOLUME NAME
local 0a740df7f5cc30f57cfcac28ff4ec9b02fccf3c0a1cabda683e1f263c2b4e4e3
local mysql1201_data
3.宿主机和容器的目录映射(Bind Mounting)
命令:-v 宿主机目录:容器内目录
docker run -it -v /Users/liujian/Desktop/cs666:/data redis /bin/bash
宿主机的/Users/liujian/Desktop/cs666目录和容器内的/data此时就是共享的