开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第9天
随着云原生快速发展,很多业务已经基于K8s运行,但是还是会有一些老的业务会运行在docker中,会遇到docker一些常规问题,今天就来研究一番。
1、查看内存占用过高的docker应用
#查看占用过高的应用
docker stats --动态实时显示
docker stats --no-stream --静态显示
#使用top命令查询占用过高的应用
top -c -b -o +%MEM | head -n 20 | tail -15
2、修改内存
- #修改compose file(版本小于v3)
mem_limit: 10g
#如果compose版本大于v3
deploy:
resources:
limits:cpus: '0.5' --一般不设置,0.5代表单核50%的用量
memory: 4G
reservations:cpus: '0.2'
memory: 200M
#重启相关容器
docker-compose up -d demo - 还有一种就是直接在命令行添加相关内存参数
docker stop demo
docker update demo -m 2g --memory-swap -1
docker start demo
3、挂载目录
容器启动的时候,可以挂载一个宿主机目录,用参数-v指定
docker run -it -v /test:/soft centos 冒号前面是宿主机目录,后面是荣亲日目录
需要注意,容器目录不能是相对路径,就是绝对路径需要加下斜线开头。如果宿主机目录不存在,会自动生成。默认会挂载在/var/lib/docker/volumes/目录下
容器销毁后,目录是否还存在,两种情况,一种指定了宿主机目录,一种是没有指定,但这两种就算删除容器,挂载的宿主机目录和随机的目录都依旧存在,所以如果遇到docker磁盘目录很大的时候,需要删除这些不需要容器的挂目录,用来清除空间。
4、设置默认存储目录
可以直接vi /etc/docker/daemon.json
systemctl daemon-reload
systemctl restart docker
利用命令
docker info |grep -i root
看到已经切换了。
如果切换不成功,注意查看下是否关闭selinux,还需要在将以前的容器相关目录复制到新的根目录 cp -R /var/lib/docker/* /data/docker/,这样以前的docker就能正常切换路径,正常运行了。
还有那些呢,欢迎评论补充,祝学习顺利!