docker 清理 /var/lib/docker/aufs 目录

内网服务器上一直用 Docker 来 build 镜像,来进行持续发布,使用一段时间之后,会生成很多文件,如果不及时清理,会占据大量的 inode,虽然磁盘没满,但是无法分配 inode,也会导致一些命令不可用。

查看 inode 数量命令

df -i

如何锁定目录

如果是 / 根目录占满了,怎么确认是哪个子目录呢?使用这条命令依次深入目录执行,查看计算结果,最终就会确认下是哪个目录。

for i in *; do echo $i; find $i | wc -l; done

最后发现是 /var/lib/docker/aufs/diff 这个目录,直接删除 aufs 目录下所有文件,删除 base 镜像,然后重启 docker 服务,清理结束。

cd /var/lib/docker/aufs
rm -r *
docker rmi [你的基础镜像 ID]
service docker restart

不用担心,重启之后会自动重建 diff 目录。
再次执行 df -i 的时候,inode 的百分比已经降下来了。

附加一些批量操作命令:

批量删除镜像

docker images | awk '{print $3}' | xargs docker rmi

批量删除容器

docker ps -a | awk '{print $1}' | xargs docker rm

参考链接:
https://segmentfault.com/q/1010000003106521

以 docker 方式安装 Jenkins 的笔记

  准备工作:docker 环境要装好,docker version 能显示出版本信息。
  Docker 安装: https://www.w3cschool.cn/docker/ubuntu-docker-install.html

  1. 首先将镜像 pull 到本地,pull 的过程很慢,有可能卡死,我重试了好几次,成功之后本地大小 809 MB。

    sudo docker pull jenkins
  2. 给 Jenkins 创建一个工作目录,目录名称随意,下面会将这个目录映射到容器。

    mkdir /var/jenkins_home
  3. 为工作目录设置归属用户Id

    sudo chown -R 1000:1000 /var/jenkins_home

    为什么是 1000,可以看看 Dockerfile 就明白了。 https://hub.docker.com/_/jenkins/

  4. 运行容器,8081 可以替换成你自己的端口,8080 不要改动,这是 Jenkins 的容器端口号。

    docker run --name myjenkins -p 8081:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -d jenkins
  5. 输入 ip 加 端口号就可以访问 Jenkins 了
    第一次访问需要解锁密码:
    cat /var/jenkins_home/secrets/initialAdminPassword

    卡白屏或一直显示请稍后问题:

    vim /var/jenkins_home/updates/default.json
    替换为百度的网址  "connectionCheckUrl":"http://www.baidu.com/"

    被墙了,所以一直卡住。

接下来安装好推荐插件,设置一个管理员账号,就可以用了。

附一张安装好的截图:

Linux 多条命令同时执行的一些姿势

命令之间用 ; 隔开

说明:各命令的执行结果,不会影响其它命令的执行。换句话说,各个命令都会执行,但不保证每个命令都执行成功。

root@ubuntu:/# echo $HOME; echo $LANG
/root
en_US.UTF-8

命令之间用 && 隔开

说明:若前面的命令执行成功,才会去执行后面的命令。这样可以保证所有的命令执行完毕后,执行过程都是成功的。

root@ubuntu:~# cd Cloud && mkdir test
root@ubuntu:~/Cloud# ls
test
root@ubuntu:~/Cloud# cd Cloudaaa && mkdir test
-bash: cd: Cloudaaa: No such file or directory

命令之间用 || 隔开

说明:|| 是或的意思,只有前面的命令执行失败后才去执行下一条命令

/* && 不会输出 123 */
root@ubuntu:~/Cloud# cd Cloudaaa && echo '123'
-bash: cd: Cloudaaa: No such file or directory
/* 用 || 可以输出 123,因为 cd Cloudaaa 失败了 */
root@ubuntu:~/Cloud# cd Cloudaaa || echo '123'
-bash: cd: Cloudaaa: No such file or directory
123

命令之间用 | 隔开

说明:在命令行中,| 表示管道,管道可以将一个命令的输出导向另一个命令的输入,从而让两个(或者更多命令)像流水线一样连续工作,不断地处理文本流。

root@ubuntu:~/Cloud# env | grep LANG
LANG=en_US.UTF-8
LANGUAGE=en_US:

env 获取所有环境变量将结果传给下一个命令,所以用 grep 搜索 LANG 就会有结果显示。

日志文件分割(将大的日志文件分割成小的)

   通常网站的日志文件之前没有配置自动切割,需要看日志的时候非常大,就需要割成小块,文件分割可以通过split命令来实现,可以指定按行数分割和按大小分割两种模式。文件合并可以通过cat命令来实现,非常简单。

在Linux下用split进行文件分割:

模式一:指定分割后文件行数

对与txt文本文件,可以通过指定分割后文件的行数来进行文件分割。

命令:split -l 300 large_file.txt new_file_prefix

模式二:指定分割后文件大小

split -b 10m server.log waynelog

对二进制文件我们同样也可以按文件大小来分割。

在Linux下用cat进行文件合并:

命令:cat small_files* > large_file


Win下文件分割工具

Ultra File Splitte.zip


Linux(CentOS)挂载移动硬盘,实现文件拷贝、备份

常常我们需要备份服务器上的某些数据,今天在这里跟大家分享一下如何使用移动硬盘备份CentOS上的文件。

一、挂载移动硬盘(挂载NTFS格式分区)

 1. 安装ntfs3g工具

  • wget http://tuxera.com/opensource/ntfs-3g_ntfsprogs-2011.4.12.tgz

  • tar zxf ntfs-3g_ntfsprogs-2011.4.12.tgz

  • cd ntfs-3g_ntfsprogs-2011.4.12

  • ./configure --prefix=/usr/local/ntf3g

  • make&&make install


 2.  挂载(可以使用多种命令进行挂载,蓝色代表要挂载的移动硬盘,绿色代表挂载到CentOS上某个盘符)

    命令一:ntfs-3g /dev/sdb1 /mnt/windows -o locale=ar_SA.UTF-8,红色部分也可改为zh_CN.GBK,很明显,使用某种编码进行挂载,防止出现乱码;

    命令二:mount -t ntfs-3g /dev/sdb1 /mnt/windows

    补充:如何找到要挂载的移动硬盘?请使用命令 fdisk -l 进行查看,取消挂载:umount /mnt/windows


二、挂载移动硬盘错误解决办法

 1. FATAL: Module fuse not found.(这是由于系统默认的内核并不支持FUSE模块,所以要更新内核)

  • modprobe fuse(此命令是用来查看系统是否支持FUSE)

  • uname –r(查看系统的内核版本)

  • yum install kernel*(更新系统内核)

  • shutdown -r now(重启计算机)

  • 使用modprobe fuse命令查看系统是否支持FUSE,若不再显示FATAL: Module fuse not found,表示您可以使用ntfs3g进行移动硬盘挂载了

三、文件拷贝(文件拷贝就很简单了)

  • cp -r /web /mnt/windows (将CentOS中web目录下所有文件拷贝到/mnt/windows下,即拷贝到我们刚刚挂载的移动硬盘上)


原文链接:http://www.cnblogs.com/zengen/archive/2011/09/01/2161637.html