本次测试的服务器2台,服务器#1(centos7)最为docker容器所在的host,服务器#2(centos6)提供NFS服务

1. #2上配置NFS服务

(1) 安装nfs软件包

yum -y install nfs-utils portmap

(2) 配置 /etc/exports

/home/nfs_share/docker01 10.10.10.127(rw,insecure,sync,no_all_squash,anonuid=,anongid=)
/home/nfs_share/docker01 10.10.10.102(ro,insecure,sync,no_all_squash,anonuid=,anongid=)

其中 rw是可读写,ro是只读

(3) 重启服务

service rpcbind restart
service nfs restart
exportfs -a

(4) 查看状态

# nfsstat
Server rpc stats:
calls badcalls badclnt badauth xdrcall

查看mount的目录

# showmount -e 10.10.10.101
Export list for 10.10.10.101:
/home/nfs_share/docker01 10.10.10.102,10.10.10.127

2. #1上安装支持NFS的volume plugin driver

(1) 本次使用的driver是convoy (https://github.com/rancher/convoy)

下载,解压,安装

wget https://github.com/rancher/convoy/releases/download/v0.5.0/convoy.tar.gz
tar xzvf convoy.tar.gz
cp convoy/convoy convoy/convoy-pdata_tools /usr/local/bin/
mkdir -p /etc/docker/plugins/
bash -c 'echo "unix:///var/run/convoy/convoy.sock" > /etc/docker/plugins/convoy.spec'

(2)  挂载nfs共享目录,启动convoy daemon

mkdir /home/docker/nfs_share
mount -t nfs 10.10.10.101:/home/nfs_share/docker01 /home/docker/nfs_share
nohup convoy daemon --drivers vfs --driver-opts vfs.path=/home/docker/nfs_share &

nohup.out中有convoy daemon的启动日志:

time="2016-11-30T18:46:32+08:00" level=debug msg="Found existing config. Ignoring command line opts, loading config from /var/lib/rancher/convoy" pkg=daemon
time="2016-11-30T18:46:32+08:00" level=debug msg= driver=vfs driver_opts=map[vfs.path:/home/docker/nfs_share] event=init pkg=daemon reason=prepare root="/var/lib/rancher/convoy"
time="2016-11-30T18:46:32+08:00" level=debug msg= driver=vfs event=init pkg=daemon reason=complete
time="2016-11-30T18:46:32+08:00" level=debug msg="Registering GET, /volumes/" pkg=daemon
time="2016-11-30T18:46:32+08:00" level=debug msg="Registering GET, /snapshots/" pkg=daemon
time="2016-11-30T18:46:32+08:00" level=debug msg="Registering GET, /backups/list" pkg=daemon
time="2016-11-30T18:46:32+08:00" level=debug msg="Registering GET, /backups/inspect" pkg=daemon
time="2016-11-30T18:46:32+08:00" level=debug msg="Registering GET, /info" pkg=daemon
time="2016-11-30T18:46:32+08:00" level=debug msg="Registering GET, /volumes/list" pkg=daemon
time="2016-11-30T18:46:32+08:00" level=debug msg="Registering POST, /volumes/umount" pkg=daemon
time="2016-11-30T18:46:32+08:00" level=debug msg="Registering POST, /snapshots/create" pkg=daemon
time="2016-11-30T18:46:32+08:00" level=debug msg="Registering POST, /backups/create" pkg=daemon
time="2016-11-30T18:46:32+08:00" level=debug msg="Registering POST, /volumes/create" pkg=daemon
time="2016-11-30T18:46:32+08:00" level=debug msg="Registering POST, /volumes/mount" pkg=daemon
time="2016-11-30T18:46:32+08:00" level=debug msg="Registering DELETE, /volumes/" pkg=daemon
time="2016-11-30T18:46:32+08:00" level=debug msg="Registering DELETE, /snapshots/" pkg=daemon
time="2016-11-30T18:46:32+08:00" level=debug msg="Registering DELETE, /backups" pkg=daemon
time="2016-11-30T18:46:32+08:00" level=debug msg="Registering plugin handler POST, /VolumeDriver.Get" pkg=daemon
time="2016-11-30T18:46:32+08:00" level=debug msg="Registering plugin handler POST, /VolumeDriver.List" pkg=daemon
time="2016-11-30T18:46:32+08:00" level=debug msg="Registering plugin handler POST, /Plugin.Activate" pkg=daemon
time="2016-11-30T18:46:32+08:00" level=debug msg="Registering plugin handler POST, /VolumeDriver.Create" pkg=daemon
time="2016-11-30T18:46:32+08:00" level=debug msg="Registering plugin handler POST, /VolumeDriver.Remove" pkg=daemon
time="2016-11-30T18:46:32+08:00" level=debug msg="Registering plugin handler POST, /VolumeDriver.Mount" pkg=daemon
time="2016-11-30T18:46:32+08:00" level=debug msg="Registering plugin handler POST, /VolumeDriver.Unmount" pkg=daemon
time="2016-11-30T18:46:32+08:00" level=debug msg="Registering plugin handler POST, /VolumeDriver.Path" pkg=daemon

(3) 启动容器测试

docker run -t -i -v test_volume1:/test --volume-driver=convoy centos: /bin/bash

现在#2服务器上可以看到docker run建立的test_volume1目录

# ll /home/nfs_share/docker01/
总用量
drwx------. nfsnobody nfsnobody 11月 : config
drwx------. nfsnobody nfsnobody 11月 : test_volume1

在#2服务器上test_volume1生成1个文件测试:

# echo 'Test01-----' > test.txt

在容器里查看:

# ll
total
-rw-r--r--. root root Nov : test.txt

#1服务器中查看已经挂载的卷

# convoy list
{
"test_volume1": {
"Name": "test_volume1",
"Driver": "vfs",
"MountPoint": "/home/docker/nfs_share/test_volume1",
"CreatedTime": "Wed Nov 30 19:10:51 +0800 2016",
"DriverInfo": {
"Driver": "vfs",
"MountPoint": "/home/docker/nfs_share/test_volume1",
"Path": "/home/docker/nfs_share/test_volume1",
"PrepareForVM": "false",
"Size": "",
"VolumeCreatedAt": "Wed Nov 30 19:10:51 +0800 2016",
"VolumeName": "test_volume1"
},
"Snapshots": {}
}
}

注意: convoy delete <volume_name>可以删除卷,删除卷会导致实际的目录和文件被物理删除。

docker (centOS 7) 使用笔记2 - 使用nfs作为volume的更多相关文章

  1. docker (centOS 7) 使用笔记1

    1. docker配置 初次在安装完docker后,初始化配置 copy默认的docker.service后,重启服务,会在/etc/systemd/system/multi-user.target. ...

  2. docker (centOS 7) 使用笔记5 - weave网络

    weave官网 https://www.weave.works 1. 下载安装 sudo curl -L git.io/weave -o /usr/local/bin/weave sudo chmod ...

  3. docker (centOS 7) 使用笔记3 - docker swarm mode

    1. 什么是docker swarm mode docker engine自带的 容器管理 工具.功能比较早的 docker swarm 更多,且集成在docker engine里. (docker ...

  4. docker (centOS 7) 使用笔记4 - etcd服务

    本次测试的系统包含centos 7.2 64 bit,centos 7.3 64 bit 1. 安装 yum -y install etcd 2. 配置 此处一共准备了3台机器(10.10.10.10 ...

  5. docker (centOS 7) 使用笔记3 - 修改docker默认的虚拟网址

    近日在使用VPN时发现和docker的虚拟网址发生了冲突,都是172.17.0.1,故需要修改docker的默认网址. 1. 当前状态 # ifconfig docker0: flags=<UP ...

  6. docker (centOS 7) 使用笔记6 - skydns

    skydns被用于kubenets作为DNS服务.本次测试是单独使用skydns作为DNS服务器,且作为loadbalance使用. 前提:需要先安装配置etcd服务 (在前面的文章里,已经安装部署了 ...

  7. docker容器的学习笔记

    目录 Docker入门学习笔记(一) 1. 什么是Docker? 2. Docke的目标 3. Docker通常应用场景 4. Docker的基本组成 补:Docker容器相关技术简介 安装Docke ...

  8. Docker Centos安装Redis以及问题处理

    之前一篇文章 Redis安装及主从配置 介绍了redis的安装配置,另一篇文件介绍了 Docker Centos安装Openssh .今天将两篇文件结合一下——在Docker Centos环境下搭建r ...

  9. Docker Centos安装Mysql5.6

    之前一篇随笔<Docker Centos安装Openssh> 写的是如何在基础的centos镜像中搭建ssh服务,在此基础上再搭建其他服务.本文继续介绍在centos_ssh基础上搭建my ...

随机推荐

  1. 关于 NetBackup 应答文件(/tmp/NBInstallAnswer.conf)

    关于 NetBackup 应答文件 在 UNIX 和 Linux 安装和升级期间使用 NetBackup 应答文件 (/tmp/NBInstallAnswer.conf),以便: 覆盖某些默认值. 避 ...

  2. [机器视觉] SIFT特征-尺度不变特征理解

    SIFT特征-尺度不变特征理解 简介 SIFT,即尺度不变特征变换(Scale-invariant feature transform,SIFT),是用于图像处理领域的一种描述.这种描述具有尺度不变性 ...

  3. React脚手架less的安装

    最近在用react.js 结合蚂蚁金服的 Ant Design Mobile 做一个单页面的应用程序,遇到了一个很棘手的问题——那就是 react脚手架不支持less,看了不少优秀博主如何在react ...

  4. JAVA - Annotation 注解 入门

    Java注解提供了关于代码的一些信息,但并不直接作用于它所注解的代码内容.在这个教程当中,我们将学习Java的注解,如何定制注解,注解的使用以及如何通过反射解析注解. Java1.5引入了注解,当前许 ...

  5. PAT (Basic Level) Practise (中文)- 1010. 一元多项式求导 (25)

    http://www.patest.cn/contests/pat-b-practise/1010 设计函数求一元多项式的导数.(注:xn(n为整数)的一阶导数为n*xn-1.) 输入格式:以指数递降 ...

  6. iOS 后台传输服务

    后台传输服务 — 我们用水壶来比喻 (0:14) 后天传输服务是 iOS 7 引进的 API,它准许应用暂停或者中止之后,在后台继续执行网络服务(比如下载或者上传).举个例子,这正是 Dropbox ...

  7. 【Python学习之六】高阶函数1(map、reduce、filter、sorted)

    1.map map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回.示例: >>> def ...

  8. 【php】【异步】php实现异步的几种方法

    请参考  4种php常用的异步执行方式 ajax 和 img 的 src 属性 系统指令调用 (在php代码里面调用系统指令) curl socket通信 ​

  9. 一键生成属于自己的QQ历史报告,看看你对自己的QQ了解程度有多深?

    目录 一键生成属于自己的QQ历史报告,看看你对自己的QQ了解程度有多深? 简介 功能截图 如何运行 编写思路 main.py模块 qq_bot模块 tkinter_gui模块 static_data模 ...

  10. nrf51822微信开发2:[转]airkiss/airsync介绍

    "微信蓝牙"专题共分为8部分 1.airkiss/airsync介绍 2.eclipes的j2ee软件使用教程 3.微信公众号使用Dome(airkiss/airsync) 4.新 ...