首页 > 其他分享 >Docker08-docker调优/管理

Docker08-docker调优/管理

时间:2024-05-10 10:02:31浏览次数:30  
标签:容器 -- json 调优 usr cgroup docker Docker08

8.docker调优\管理

容器=cgroup+namespace_rootfs+容器引擎

docker 实战 https://blog.csdn.net/woniu211111/article/details/108675525

docker compose https://blog.csdn.net/pushiqiang/article/details/78682323

rootfs:  文件系统隔离
容器引擎:生命周期控制

namespace
主要用来访问隔离。原理是针对一类资源进行抽象,并将其封装在一起提供给一个容器使用,对于这类资源,因为每个容器都有自己的抽象,而它们彼此之间是不可见的,所以就可以做到隔离

cgroup

control group,控制组,主要做资源控制。其原理是将一组进程放在一个控制组里,通过给这个控制组分配指定的可用资源,达到控制这一组进程可用资源的目的

mount -t cgroup -o cpuset cpuset /sys/fs/cgroup/cpuset
mkdir /sys/fs/cgroup/cpuset/child    # 创建cgroup
echo $$ > /sys/fs/cgroup/cpuset/child/tasks   # 通过将当前进程ID写入tasks文件,就可以将进程移动到这个cgroup

也可以将进程ID写入cgroup.procs
写入tasks文件,只会将指定进程放入cgroup
写入cgroup.procs,会将进程所属的线程也放入child中

清理占用的磁盘空间

docker system df       类似linux中的df,可查看docker镜像和容器的数量以及占用磁盘大小
docker system prune    用于清理磁盘,删除关闭的容器,删除无用的数据卷和网络,删除没有tag的镜像
docker system prune -a    清理更加彻底,可以将没有容器使用的镜像也删除

限制容器日志大小

将日志文件内容清空
truncate -s 0 /var/lib/docker/containers/a376aa694b22ee497f6fc9f7d15d943de91c853284f8f105ff5ad6c7ddae7a53/*-json.log

限制nginx容器日志大小为5G,重启容器生效
nginx:
  image: nginx:1.12.1
  restart: always
  logging:
    driver: "json-file"
    options:
      max-size: "5g"

-------------------------------
vim /etc/docker/daemon.json
{
  "registry-mirrors": ["http://f613ce8f.m.daocloud.io"],
  "log-driver":"json-file",
  "log-opts": {"max-size":"500m", "max-file":"3"}
}

max-size=500m,意味着一个容器日志大小上限是500M,
max-file=3,意味着一个容器有三个日志,分别是id+.json、id+1.json、id+2.json。

docker图形化管理

portainer单机版

docker run -d -p 9000:9000 \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
--name prtainer-test \
docker.io/portainer/portainer

访问方式:http://IP:9000

portainer 远程管理
远程管理使用2375端口,需要开启端口
vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock  # 原配置文件

修改后,选择其中一种
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H 0.0.0.0:2375
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

添加容器自动重启

命令行修改
docker container updata --restart=always

修改配置文件,停止容器后修改,修改后重启生效
vim /var/lib/docker/containers/容器ID/hostconfig.json
"RestartPolicy":{"Name":"always","MaximumRetryCount":0}

修改docker默认的存储位置

docker info | grep 'Docker Root Dir'   查看
docker stop `docker ps -q`             停止所有容器
systemctl stop docker                                      停止docker服务
mv /var/lib/docker     新路径                           移动原有文件
vim /usr/lib/systemd/system/docker.service  
ExecStart=/usr/bin/dockerd --graph /new-path/docker
systemctl daemon-reload
systemctl restart docker

配置DNS

创建容器时指定
docker run --dns=x.x.x.x image

修改配置文件
vim /etc/docker/daemon.json
{
"dns": "x.x.x.x"
}

安装docker-machine 和 docker-compose

docker-machine
base=https://github.com/docker/machine/releases/download/v0.16.0 &&  
curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&  
sudo mv /tmp/docker-machine /usr/local/bin/docker-machine &&
chmod +x /usr/local/bin/docker-machine

docker-compose
curl -L https://github.com/docker/compose/releases/download/1.8.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

虚拟化三种类型

仿真
半虚拟化
基于容器的虚拟化

容器四种状态

运行 已暂停 重新启动 已退出

资源限制

docker rum -itd --name mycontainer --memory 256m --cpu-shares 1024 --user nobody --cap-drop all nginx /bin/bash

标签:容器,--,json,调优,usr,cgroup,docker,Docker08
From: https://www.cnblogs.com/lixunblogs/p/18167364

相关文章

  • linux中离线安装docker
    一、linux中离线安装docker1、从官方下载Docker安装包并上传至虚拟机https://download.docker.com/linux/static/stable/x86_64/2.解压安装包tar-xvfdocker-19.03.9.tgz3.将解压出来的docker文件内容移动到/usr/bin/目录下#移动命令复制命令请用cpmvdocker/*/usr......
  • Docker05-docker仓库
    搭建docker私用仓库1.下载docker注册镜像dockerpullregistry:latest2.运行容器dockerrun-itd-p5000:5000--namehello-registry\-v/tmp/registry:/tmp/registryregistry3.上传镜像上传之前需要先打标签格式为dockertag镜像名称:标签docker仓库的URL/镜像......
  • Docker07-docker网络
    docker网络模式1、bridge模式,--net=bridge(默认,可省略)2、host模式,--net=host3、container模式使用--net=container:指定容器名4、none模式,--net=none5、overlayoverlayDocker原生的跨主机多子网模型底层需要etcd这样的KV存储系统进行消息同步,核心是通过linux网桥与vxla......
  • Docker01-安装Docker
    Docker安装脚本yuminstall-yyum-utilsdevice-mapper-persistent-datalvm2yum-config-manager--add-repohttp://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoyumcleanallyummakecacheyum-yinstalldocker-cesystemctlstartdockersystemctlenab......
  • centos制作具备telnet和ping功能的docker镜像
    第一步:制作Dockerfile   Dockerfile具体内容如下所示#使用官方CentOS镜像作为基础镜像FROMcentos:7#安装telnetRUNyum-yupdate&&yumcleanall&&\yum-yinstalltelnet&&\yumcleanall#安装pingRUNyum-yupdate&&yumclean......
  • Linux问题--docker启动mysql时提示3306端口被占用(kill不掉3306端口)
    使用kill-9杀掉mysqld服务时一直失败。mysql启动时会启动mysqld和mysqld_safe两个进程,当使用kill-9杀掉mysqld进程时,mysqld_safe会自动重新启动mysqld。当使用正常方式退出mysqld时,mysqld_safe也会退出。如果需要kill掉mysqld服务可以先通过lsof-i:3306查询到占用3306......
  • docker 容器查看jvm参数配置
    1、登录服务器查看有哪些容器dockerps2、进入到相应的容器中dockerexec-it容器ID或名称bash3、找到java线程top 4、使用jcmd查询java也就是jvm的配置jcmdPIDVM.flags这里我查看的是线程1:jcmd1VM.flags 复制信息出来,格式化,具体参数什么意思,可网......
  • docker打包前端项目/flask项目
    1.docker安装我安装的是dockerdesktop安装完成后$docker-v$Dockerversion26.0.0,build2ae903e同时也可以打开图形界面看2.前端打包配置Dockerfile放在前端项目根目录配置nginx.conf放在前端项目根目录---Dockerfile#设置Node.js版本FROMnode:20.12.2#设置容器工......
  • docker的部署
    Docker安装docker环境查看bear@bear:~$cat/etc/os-releaseNAME="Ubuntu"VERSION="20.04.3LTS(FocalFossa)"ID=ubuntuID_LIKE=debianPRETTY_NAME="Ubuntu20.04.3LTS"VERSION_ID="20.04"HOME_URL="https://www.ubunt......
  • docker_test
    WelcometoHexo!Thisisyourveryfirstpost.Checkdocumentationformoreinfo.IfyougetanyproblemswhenusingHexo,youcanfindtheanswerintroubleshootingoryoucanaskmeonGitHub.QuickStartCreateanewpost$hexonew"MyNewPost&q......