How can enable udev sync successfully in docker?

 

问题:

1、How can enable udev sync successfully in docker? #13179

2、Dynamically linked docker binary reports devicemapper and Udev not supported #12925

3、devicemapper: set flags based on udev sync support #10203

4、Docker APT repository binary has devicemapper "Udev Sync Supported: false" #10705

5、docker不支持在使用devicemapper存储类型下打开Udev Sync功能?

 

 

解决方案:

 

对docker1.7.1版本的解决方法:
1、先检查是否为devicemapper没有支持udev_sync功能:dmsetup udevcookies。如果没有支持会提示要求以--enable-udev_sync方式重新编译devicemapper,可按2,3步骤重新编译devicemapper。
2、安装最新版本的libudev: apt-get install libudev-dev
3、下载lvm2源码:git clone -b v2_02_103 
https://git.fedorahosted.org/git/lvm2.git /usr/local/lvm2
指定--enable-udev_sync参数,重新编译安装devicemapper:./configure --enable-udev_sync & make device-mapper & make install_device-mapper
3、编译动态链接的docker程序:AUTO_GOPATH=1 ./hack/make.sh dynbinary
4、启动docker daemon时指定存储驱动器类型为devicemapper:./docker -d -D --storage-driver=devicemapper -b=my_br -H tcp://0.0.0.0:1234 -H unix:///var/run/docker.sock &
(-s 选项(storage-driver)是关键,其他按自己的情况来)
5、docker info查看结果中的Udev Sync Supported。

 

对最新版本的docker1.11:

编译出来后检查:

root@dev:/home/code/docker/docker/bundles/1.11.0-dev/dynbinary# ldd docker
        linux-vdso.so.1 =>  (0x00007ffe3997c000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f8dbc497000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f8dbc293000)
        libdevmapper.so.1.02 => /lib/libdevmapper.so.1.02 (0x00007f8dbc057000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8dbbcca000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f8dbc6b3000)
        libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f8dbbaaa000)
        libsepol.so.1 => /lib/x86_64-linux-gnu/libsepol.so.1 (0x00007f8dbb86a000)
        libudev.so.0 => /lib/x86_64-linux-gnu/libudev.so.0 (0x00007f8dbb65b000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f8dbb453000)

已经依赖libudev.so。


root@dev:/home/code/docker/docker/bundles/1.11.0-dev/dynbinary# dmsetup udevcookies
Cookie       Semid      Value      Last semop time           Last change time
0xd4dbe47    0          1          Fri Mar 25 21:09:29 2016  Fri Mar 25 21:09:29 2016
0xd4d1f0e    32769      1          Fri Mar 25 21:14:00 2016  Fri Mar 25 21:14:00 2016

已经有支持udev_sync的device-mapper。


root@dev:/home/code/docker/docker/bundles/1.11.0-dev/dynbinary# ./docker -d -D --storage-driver=devicemapper -b=my_br -H tcp://0.0.0.0:1234 -H unix:///var/run/docker.sock

root@dev:/home/code/docker/docker/bundles/1.11.0-dev/dynbinary# docker info
DEBU[0005] Calling GET /v1.19/info                     
DEBU[0005] Client and server don't have the same version (client: 1.7.1, server: 1.11.0-dev)
Containers: 0
Images: 0
Storage Driver: devicemapper
 Udev Sync Supported: true

(其他信息省略)

已经支持udev_sync了。(也可能和我之前重编译了device-mapper有关了)。

 

总结下来就一句话:只要device-mapper支持udev_sync,docker为动态链接依赖库即可。

 

 

 

Reference:

http://icarobichir.com.br/posts/building-a-dynamically-linked-docker-v-1-6-2/

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Logical_Volume_Manager_Administration/udev_commands_interfaces.html

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值