当前位置: 首页 > news >正文

做纸棋的网站wordpress最简单的主题

做纸棋的网站,wordpress最简单的主题,动漫设计网站,做科研找论文的网站docker 指定根目录 迁移根目录 1、问题描述2、问题分析3、解决方法3.1、启动docker程序前就手动指定docker根目录为一个大的分区(支持动态扩容)#xff0c;事前就根本上解决根目录空间不够问题3.1.0、方法思路3.1.1、docker官网安装文档3.1.2、下载docker安装包3.1.3、安装doc… docker 指定根目录 迁移根目录 1、问题描述2、问题分析3、解决方法3.1、启动docker程序前就手动指定docker根目录为一个大的分区(支持动态扩容)事前就根本上解决根目录空间不够问题3.1.0、方法思路3.1.1、docker官网安装文档3.1.2、下载docker安装包3.1.3、安装docker 26.1.03.1.4、配置docker systemd服务 3.2、发现docker根目录爆满了改变docker根目录为一个大的分区(支持动态扩容)事后解决根目录空间不够问题(需要迁移之前的根目录数据到新的根目录)3.2.1、正常安装docker后 docker根目录是/var/lib/docker3.2.1.1、官网安装文档3.2.1.2、下载docker安装包3.2.1.3、安装docker 26.1.03.2.1.4、配置docker systemd服务 3.2.2、默认根目录安装docker后创建容器和容器数据一段时间后发现docker根目录空间不够、需要迁移根目录3.2.2.1、创建redis、mysql容器3.2.2.2、创建redis、mysql数据 3.2.3、配置新的docker根目录、迁移docker根目录数据到新的根目录3.2.4、重要迁移docker根目录后 确认docker服务正常3.2.4.1、检查容器启动是否正常docker logs 查看容器启动日志3.2.4.2、执行容器内部服务检测确认容器服务的接口调用是否正常3.2.4.3、执行df -lh 查看输出确认docker根目录是否已迁移到新路径 1、问题描述 默认启动docker后默认的docker根目录是/var/lib/docker 使用docker info 命令查看docker根目录 docker info在有些服务器上/ 根目录空间非常小而且不能动态扩容不能承载太多的docker镜像和数据随着docker的运行默认的docker根目录是/var/lib/docker 占用空间越来越大导致/ 目录爆满系统崩溃。(为什么不扩充根目录呢因为在有些服务器上根目录不是LVM分区、不能动态扩容) 不指定配置文件默认启动docker服务后docker根目录如下查看docker根目录的组织结构 ls -l /var/lib/docker整个根目录大小是340K 根目录下各个子目录大小如下 docker 根目录结构如下 这些所在的地方都是空格 [rootcentos ~]# tree /var/lib/docker/ /var/lib/docker/ ├── buildkit │?? ├── cache.db │?? ├── containerdmeta.db │?? ├── content │?? │?? └── ingest │?? ├── executor │?? ├── history.db │?? ├── metadata_v2.db │?? └── snapshots.db ├── containerd │?? └── daemon │?? ├── io.containerd.content.v1.content │?? │?? └── ingest │?? ├── io.containerd.metadata.v1.bolt │?? │?? └── meta.db │?? ├── io.containerd.runtime.v1.linux │?? ├── io.containerd.runtime.v2.task │?? ├── io.containerd.snapshotter.v1.blockfile │?? ├── io.containerd.snapshotter.v1.native │?? │?? └── snapshots │?? ├── io.containerd.snapshotter.v1.overlayfs │?? │?? └── snapshots │?? └── tmpmounts ├── containers ├── engine-id ├── image │?? └── overlay2 │?? ├── distribution │?? ├── imagedb │?? │?? ├── content │?? │?? │?? └── sha256 │?? │?? └── metadata │?? │?? └── sha256 │?? ├── layerdb │?? └── repositories.json ├── network │?? └── files │?? └── local-kv.db ├── overlay2 │?? └── l ├── plugins │?? ├── storage │?? │?? └── ingest │?? └── tmp ├── runtimes ├── swarm ├── tmp └── volumes├── backingFsBlockDev└── metadata.db39 directories, 11 files [rootcentos ~]#2、问题分析 有2个思路解决docker根目录空间爆满的问题 1、整体规划防患于未然 在docker程序启动前通过docke daemon的配置文件指定一个很大或者可以动态扩容的文件目录作为docker根目录。 2、后知后觉整体规划没做好事后处理 如果在生产环境上运行docker程序签没有手动指定docker根目录造成默认的docker根目录就是/var/lib/docker并且环境已经运行一段时间发现根目录空间不够了这种情况下仍然可以通过docke daemon的配置文件指定一个很大或者可以动态扩容的文件目录作为docker根目录只不过要把之前docker根目录/var/lib/docker下哦数据迁移到新的docker根目录即可。。 3、解决方法 3.1、启动docker程序前就手动指定docker根目录为一个大的分区(支持动态扩容)事前就根本上解决根目录空间不够问题 3.1.0、方法思路 在docker启动前先在配置文件中指定docker根目录这个根目录的空间要保证非常大或者这个根目录是能够动态扩容的比如LVM分区。 linux上docker daemon配置文件是/etc/docker/daemon.json windwos上docker daemon配置文件是C:\ProgramData\docker\config\daemon.json 本文以linux系统为例描述配置docker根目录方法 参考链接: https://docs.docker.com/config/daemon/ 在linux系统上安装完成docker后先不要启动docker程序。 先编辑docker配置文件/etc/docker/daemon.json mkdir /etc/docker vi /etc/docker/daemon.json注默认情况下这个docker配置文件是没有的这里实际也就是新建一个/etc/docker/daemon.json 写入以下内容 其中/path/to/docker是自定义的docker根目录需要保证/path/to/这个目录存在 {data-root: /path/to/docker }然后启动docker服务 systemctl start docker.service安装过程如下 3.1.1、docker官网安装文档 https://docs.docker.com/engine/install/binaries/ 3.1.2、下载docker安装包 官方下载链接https://download.docker.com/linux/static/stable/ 选择最新版 26.1.0 下载 文件名docker-26.1.0.tgz 3.1.3、安装docker 26.1.0 上传docker-26.1.0.tgz到linux服务器 cd /path/to/docker-26.1.0.tgztar -xzvf docker-26.1.0.tgz cp docker/* /usr/bin/至此安装完成docker 查看docker版本 docker --version3.1.4、配置docker systemd服务 vi /etc/systemd/system/docker.service插入以下内容 [Unit] DescriptionDocker Application Container Engine Documentationhttps://docs.docker.com Afternetwork-online.target firewalld.service Wantsnetwork-online.target[Service] Typenotify # the default is not to use systemd for cgroups because the delegate issues still # exists and systemd currently does not support the cgroup feature set required # for containers run by docker ExecStart/usr/bin/dockerd ExecReload/bin/kill -s HUP $MAINPID # Having non-zero Limit*s causes performance problems due to accounting overhead # in the kernel. We recommend using cgroups to do container-local accounting. LimitNOFILEinfinity LimitNPROCinfinity LimitCOREinfinity # Uncomment TasksMax if your systemd version supports it. # Only systemd 226 and above support this version. #TasksMaxinfinity TimeoutStartSec0 # set delegate yes so that systemd does not reset the cgroups of docker containers Delegateyes # kill only the docker process, not all processes in the cgroup KillModeprocess # restart the docker process if it exits prematurely Restarton-failure StartLimitBurst3 StartLimitInterval60s[Install] WantedBymulti-user.target为docker.service添加可执行权限 chmod x /etc/systemd/system/docker.service重新加载docker.service配置文件使得systemctl识别docker.service systemctl daemon-reload配置docker.service开机自启动 systemctl enable docker.service查看操作系统文件系统目录 df -lTh编辑docker配置文件/etc/docker/daemon.json mkdir /etc/docker vi /etc/docker/daemon.json注默认情况下这个docker配置文件是没有的这里实际也就是新建一个/etc/docker/daemon.json 写入以下内容 其中/home/docker是自定义的docker根目录 {data-root: /home/docker }启动docker服务前执行docker info 查看docker根目录 报错docker服务未在运行 docker info启动docker服务前查看docker根目录结构还没有创建docker根目录 然后启动docker服务 systemctl start docker.service启动docker服务时会自动创建docker根目录/home/docker 查看docker服务 systemctl status docker.service查看docker信息 docker info得知docke的根目录是 /home/docker 查看docker根目录的组织结构 ls -l /home/docker整个根目录大小是340K、根目录下各个子目录大小如下 导入镜像前查看 /home/docker/overlay2 ls -l /home/docker/overlay2导入redis镜像文件 导入mysql像文件 查看操作系统文件系统目录 df -lTh启动docker前的操作系统文件系统目录如下 df -lTh发现导入2个镜像后 docker根目录所在的/homr分区 就增大了差不多1G。后期docker会导入更多的镜像、docker系统日志会占用很多空间因此在启动docker服务前先编辑配置文件选择一恶搞大的分区作为docker根目录是很重要的。 3.2、发现docker根目录爆满了改变docker根目录为一个大的分区(支持动态扩容)事后解决根目录空间不够问题(需要迁移之前的根目录数据到新的根目录) 3.2.1、正常安装docker后 docker根目录是/var/lib/docker 3.2.1.1、官网安装文档 https://docs.docker.com/engine/install/binaries/ 3.2.1.2、下载docker安装包 官方下载链接https://download.docker.com/linux/static/stable/ 选择最新版 26.1.0 下载 文件名docker-26.1.0.tgz 3.2.1.3、安装docker 26.1.0 上传docker-26.1.0.tgz到linux服务器 cd /path/to/docker-26.1.0.tgztar -xzvf docker-26.1.0.tgz cp docker/* /usr/bin/至此安装完成docker 查看docker版本 docker --version3.2.1.4、配置docker systemd服务 vi /etc/systemd/system/docker.service插入以下内容 [Unit] DescriptionDocker Application Container Engine Documentationhttps://docs.docker.com Afternetwork-online.target firewalld.service Wantsnetwork-online.target[Service] Typenotify # the default is not to use systemd for cgroups because the delegate issues still # exists and systemd currently does not support the cgroup feature set required # for containers run by docker ExecStart/usr/bin/dockerd ExecReload/bin/kill -s HUP $MAINPID # Having non-zero Limit*s causes performance problems due to accounting overhead # in the kernel. We recommend using cgroups to do container-local accounting. LimitNOFILEinfinity LimitNPROCinfinity LimitCOREinfinity # Uncomment TasksMax if your systemd version supports it. # Only systemd 226 and above support this version. #TasksMaxinfinity TimeoutStartSec0 # set delegate yes so that systemd does not reset the cgroups of docker containers Delegateyes # kill only the docker process, not all processes in the cgroup KillModeprocess # restart the docker process if it exits prematurely Restarton-failure StartLimitBurst3 StartLimitInterval60s[Install] WantedBymulti-user.target为docker.service添加可执行权限 chmod x /etc/systemd/system/docker.service重新加载docker.service配置文件使得systemctl识别docker.service systemctl daemon-reload配置docker.service开机自启动 systemctl enable docker.service启动docker服务 systemctl start docker.service查看docker服务 systemctl status docker.service查看docker信息 docker info得知docker默认的根目录是 /var/lib/docker 查看docker根目录的组织结构 ls -l /var/lib/docker整个根目录大小是340K 根目录下各个子目录大小如下 3.2.2、默认根目录安装docker后创建容器和容器数据一段时间后发现docker根目录空间不够、需要迁移根目录 3.2.2.1、创建redis、mysql容器 上传redis镜像包redis7.2.4.tar、mysql镜像包mysql8.4.0.tar到服务器 导入镜像包前查看dock镜像、docker容器都是空的 导入redis、mysql镜像 cd /path/to/redis7.2.4.tar docker load -i redis7.2.4.tar cd /path/to/mysql8.4.0.tar docker load -i mysql8.4.0.tar创建redis、mysql容器 docker run --name redis7.2.4 --userroot --nethost --privileged --cap-addALL -idt --log-opt max-size64m --log-opt max-file3 --restartalways redis:7.2.4docker run --name mysql8.4.0 --userroot --nethost --privileged --cap-addALL -idt -e MYSQL_ROOT_PASSWORDroot --log-opt max-size64m --log-opt max-file3 --restartalways mysql:8.4.0查看redis、mysql容器 docker ps -a查看docker根目录的组织结构 ls -l /var/lib/docker整个根目录大小是1.7G根目录下各个子目录大小如下。仅仅是导入了redis、mysql镜像、创建了redis、mysql容器仅仅2个容器根目录从最初docker安装后的340K增大到了1.7G这仅仅是刚刚导入镜像和创建容器后的根目录占用量1.7G。 查看操作系统分区占用情况 df -lTh等mysql运行一段时间后假设是业务环境、数据表数据量非常多、很快mysql的空间占用率会急剧增大这个占用量就在docker根目录里。因为mysql的数据量占用空间属于mysql容器、mysql容器占用空间属于docker根目录最终导致docker根目录也就是/var/lib/docker占用量急剧增大最终导致操作系统上docker根目录所在的分区爆满如果操作系统docker根目录所在的分区不能动态扩容操作系统很快就会因为docker根目录所在的分区爆满而崩溃。 这种情况下就需要考虑迁移docker根目录数据到新的docker根目录并且修改docker配置文件指定新的docker根目录。 3.2.2.2、创建redis、mysql数据 下面创建mysql数据表为了快速创建直接从其他数据库中备份的sql文件恢复到mysql容器中。 创建mysql数据表前查看mysql容器中mysql根目录占用空间 占用了213Mmysql容器内部查看操作系统分区信息发现mysql容器的根目录就是docker服务的根目录所在宿主机的分区因此docker服务根目录一定要大或者能够动态扩容才行不然很快就会因为容器的占用空间增大导致docker服务根目录增大最终导致docker服务的根目录所在宿主机的分区爆满、最终操作系统崩溃。 查看mysql容器内部的mysql配置文件/etc/my.cnf发现mysql根目录是/var/lib/mysql cat /etc/my.cnf|grep -i dir这次新安装的mysql容器数据库如下 直接从其他数据库中备份的sql文件恢复到mysql容器中 恢复mysql数据完成 再次查看mysql容器数据库如下 show databases; use kgc; select table_name,table_comment,create_time from information_schema.TABLES where table_schemakgc; select * from banji;恢复mysql数据完成后再次查看mysql容器中mysql根目录占用空间 占用从213M增加到了352M。这是因为恢复的数据库表占用了空间。 mysql容器操作系统根目录占用空间从2.4G增大到了2.6G。 mysql容器数据量占用的增大最终体现在宿主机上就是docker根目录的增大从1.7G增大到了1.9G。 很快随着mysql容器的占用空间增大最终会在宿主机上就是docker根目录的增大最终导致宿主机上docker根目录所在的分区磁盘占用爆满操作系统崩溃。怎么解决这个问题呢只需迁移docker根目录到一个比较大的分区即可或者迁移docker根目录到一个可以动态扩展的分区通常二者都要把docker根目录迁移到一个空间比较大的而且可以动态扩容的分区即可。 在本博文3.2.3节中如果发现停止docker服务后和开启docker服务后docker根目录占用空间不同这是正常的因为开启docker服务会拉起容器啦气的容器占用了空间所致。 3.2.3、配置新的docker根目录、迁移docker根目录数据到新的根目录 停止docker服务 systemctl stop docker.service建立新的docker根目录执行命令df -h,找一个大的磁盘。这里指定的docker新的根目录是/home/docker mkdir -p /home/docker迁移/var/lib/docker目录下面的文件到 新的docker根目录/home/docker/home/docker rm -rf /home/docker cp -r /var/lib/docker /home/docker编辑docker配置文件/etc/docker/daemon.json 指定docker根目录是/home/docker mkdir /etc/docker vi /etc/docker/daemon.json注默认情况下这个docker配置文件是没有的这里实际也就是新建一个/etc/docker/daemon.json 写入以下内容 其中/mnt/docker是自定义的docker根目录 {data-root: /home/docker }然后启动docker服务 systemctl start docker.service检查dockerx新的根目录是否配置成功 docker info | grep Docker Root Dir启动docker服务成功后确认之前的镜像和容器还在不 docker images docker ps -a镜像容器都在说明本次迁移根目录是成功的。mysql容器没有启动成功需要接下来接续排查。 3.2.4、重要迁移docker根目录后 确认docker服务正常 3.2.4.1、检查容器启动是否正常docker logs 查看容器启动日志 docker logs -f mysql8.4.0 --tail 200日志显示是因为没有权限在/tmp下创建新的文件 查看/tmp 权限有写额权限 想到可能是mysql容器挂载目录的权限问题查看mysql容器挂载目录 docker inspect mysql8.4.0|grep Mounts -C20看宿主机上挂载目录的权限是不是1777果然不是1777 查看原docker根目录下这个目录的权限是777 因此修改新docker根目录小这个目录的权限为777 systemctl stop docker.service chmod -R 1777 /home/docker/volumes/e6265e69cc98fd7098523608fad604830884c4299dcbd6d1ea1aaaa29c6f7469/_data systemctl start docker.service然后Mysql容器后仍然报同样的错误 可能是docker根目录下其他的哪个目录权限不对 因此直接更改整个docker根目录权限是777 然后重启docker服务 systemctl stop docker.service chmod -R 777 /home/docker/ systemctl start docker.service查看所有容器都是正常启动的状态了 3.2.4.2、执行容器内部服务检测确认容器服务的接口调用是否正常 进入mysql容器 查看数据库表和迁移docker根目录之前是否一致 登录mysql报错mysql: [Warning] World-writable config file ‘/etc/my.cnf’ is ignored. 参考链接: https://www.cnblogs.com/hf8051/p/4991699.html 设置/etc/my,cnf的权限为644即可 即root用户可读写其他用户不可写 再次登录mysql 报错ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2) 这个问题重启mysql容器即可 然后登录mysql报错ERROR 1524 (HY000): Plugin ‘mysql_native_password’ is not loaded 这个问题需要修改/etc/my.cnf 在[mysqld]下面添加一行skip-grant-tables(加上这句话之后重启mysql就可以免输密码登录了) 修改后如下 再次重启mysql容器 可以登录进mysql 查看mysql root用户的auth_plugin是mysql_native_password这个mysql版本是8.4.0 已经启用了新的auth_plugincaching_sha2_password默认是caching_sha2_password。 因为上面恢复数据库数据用的是其他数据库的sql备份文件(这个数据库的auth_plugin是mysql_native_password、并且密码字段也被恢复成了这个数据库的密码 所以现在已经看不到原先的密码字段是什么内容了)导致的。现在只需要更改root用户的plugin为caching_sha2_passwor之后再重置root用户密码即可。 use mysql; select user,plugin from user;重置root用户的auth_plugin为caching_sha2_password update user set plugincaching_sha2_password where userroot;然后就是重置root用户的密码 操作步骤如下 如果当前root用户authentication_string字段下有内容先将其设置为空 select user,authentication_string,plugin from user;update user set authentication_string where userroot; select user, authentication_string,plugin from user;然后去掉/etc/my.cnf中的 skip-grant-tables这一行重启mysql容器 使用root用户进行登录因为上面设置了authentication_string为空所以可以免密码登录 mysql -u root -p passwrod:直接回车 然后使用ALTER修改root用户密码 修改前root密码为空 修改root密码为root ALTER USER root% IDENTIFIED BY root PASSWORD EXPIRE NEVER;修改root密码后如下 select user,authentication_string,plugin from user;至此修改成功 从新使用新的密码登录root用户即可 再次登录mysql root用户输入正确密码root即可成功登录 输入错误密码不可登录 查询banji表的数据 和迁移docker根目录之前的数据是一样的。说明mysql容器内部服务没问题。 3.2.4.3、执行df -lh 查看输出确认docker根目录是否已迁移到新路径 迁移docker根目录后 宿主机操作系统执行df -lTh df -lTh迁移docker根目录后前 宿主机操作系统执行df -lTh df -lTh迁移docker根目录前后 宿主机操作系统执行df -lTh查看确实 docker根目录已经从/var/lib/docker变成了/home/docker 以上确认均没问题至此本次docker根目录迁移完成。
http://www.w-s-a.com/news/172197/

相关文章:

  • 网站建设与维护培训网页制作专业用语
  • 建站特别慢wordpress网页制作与设计项目策划书
  • 视频制作素材免费网站头像制作在线生成器
  • 网站建设是不是可以免费建站广州做网站 信科网络
  • 闸北区网站设计叫别人做网站后怎么更改密码
  • 为什么想做网站运营建设工程教育网站
  • 站长基地百度推广整体优化网站
  • 门窗 东莞网站建设wordpress外链论坛
  • 安徽省建设部网站官网还能用的wap网站
  • 企业网站设计开发网站关键词优化seo
  • 郑州高档网站建设台州网站建设推广
  • 广东省建设信息港网站WordPress手机缩略图设置
  • 优秀网站主题平顶山专业做网站公司
  • wordpress返回顶部插件wordpress站群seo
  • 企业网站建设报价表百度竞价托管哪家好
  • 织梦网站首页打开慢淄博网站推广那家好
  • 苏州高端网站建设kgwl互动网站建设的主页
  • 宿州网站建设哪家公司好个人网站制作方法
  • 网站正能量晚上在线观看视频站长之家关键词挖掘工具
  • 建设网站怎么判断是电脑还是手机仿租号网站源码网站开发
  • seo百度网站排名软件重庆巫山网站设计公司
  • 搭建视频播放网站网站排名诊断
  • 网站域名注册网站centos做网站服务器
  • 网站服务器共享的 vpsh5页面制作软件电脑版
  • 免费手机网站申请上海网站建设设计公司哪家好
  • 站长工具大全企业网上书店网站建设设计
  • 做网站的专业公司公司网站是做的谷歌的
  • 做网站前期工作wordpress图片并排
  • 免费注册网站哪个好wordpress评论修改
  • 合肥模板网站建设软件赤峰公司网站建设