解决 error creating overlay mount to /var/lib/docker/overlay2

最近在centos7.1使用docker运行redis镜像,出现下面的错误:

/usr/bin/docker-current: Error response from daemon: error creating overlay mount to /var/lib/docker/overlay2/65f3c109fb903539820f84856d2725af784f2f03f95b1f0214e34184e4d61ff7-init/merged: invalid argument.
See '/usr/bin/docker-current run --help'.

在网上搜索一番后,一个可行的方案如下(改变storage driver类型, 禁用selinux):

停止docker服务

systemctl stop docker

清理镜像

rm -rf /var/lib/docker

修改存储类型

vi /etc/sysconfig/docker-storage

把空的DOCKER_STORAGE_OPTIONS参数改为overlay:

DOCKER_STORAGE_OPTIONS="--storage-driver overlay"

禁用selinux

vi /etc/sysconfig/docker

去掉option的–selinux-enabled

启动docker应该就可以了

systemctl start docker

方案抄自 Ysssssssssssssss的博客 和 redis的讨论: error creating overlay mount to …/merged: invalid argument., 基本可以确定是启用selinux导致的。

NFS-mount 跨服务器文件挂载

一、什么是NFS?

NFS:network file system,网络文件系统,允许服务器之间通过TCP/IP协议进行资源共享。NFS客户端可以透明的读写NFS服务器上的文件,就像操作本地文件一样。

二、为什么要用NFS?NFS什么好处?

  1. 节省空间:客户端磁盘空间较少,可以挂载到另外的服务器上,以节省本地存储空间。

  2. 网络受限:有些公司内部服务器无法访问外网,但是一些操作需要用到外网权限,就可以将公司服务器挂载到可以访问外网的服务器上,在另外的服务器上进行操作。

三、怎么挂载呢?

场景:服务器A的/mnt目录 挂载到 服务器B上的/test目录上

配置服务器A

1、需要检查是否具有nfs服务

$ ls -al /etc/init.d/nfs-kernel-server // 查看是否存在nfs服务

如果没有 需要手动安装 nfs-kernel-server 服务

$ sudo apt-get install nfs-kernel-server

2、修改 /etc/exports文件(需要root权限),增加要挂载的目录 /mnt *(rw,sync)

其中/mnt是要被挂在的目录,*表示任何服务器,也可以写客户端的IP地址,(rw,sync)表示挂载文件系统时的策略,rw表示读写,sync表示同步进行IO操作,还有其他的一些选项async(非同步进行IO操作)。

3、重启nfs服务

$ sudo /etc/init.d/nfs-kernel-server restart

配置服务器B

以root权限执行下面命令进行挂载

$ sudo mount -t nfs 10.24.21.143:/mnt /test

-t nfs 表示挂载类型是nfs,10.24.21.143:/mnt表示服务器A的IP及需要被挂载的目录,/test表示挂载到服务器B的目录。
执行下列命令查看是否已经挂载成功

$ mount | grep nfs // 如果成功,能够看到挂载的信息

四、配置过程中遇到的坑

其中在服务器B进行挂载时遇到报错如下:

mount: wrong fs type, bad option, bad superblock on 10.24.21.143:/mnt,
       missing codepage or helper program, or other error
       (for several filesystems (e.g. nfs, cifs) you might
       need a /sbin/mount.<type> helper program)

       In some cases useful info is found in syslog - try
       dmesg | tail or so.

错误信息中提到

you might need a /sbin/mount.<type> helper program

指在mount过程中用到了 /sbin/mount.nfs程序,而/sbin/mount.nfs是nfs-common提供的,需要手动运行下面的命令安装一下就好了。

$ sudo apt-get install nfs-common