錯誤現象
在運行容器時,出現以下錯誤
[root@localhost test]# docker run -it -d -v $PWD/test.txt:/mydir mytest
fd44cdc550548c0b791d6a7d12d27a2d64855c7c5d498305dd1239d6608b4350
Error response from daemon: Cannot start container fd44cdc550548c0b791d6a7d12d27a2d64855c7c5d498305dd1239d6608b4350: [9] System error: could not synchronise with container process
而實際查看容器時,可以看到容器已經成功創建,但是實際無法啟動。
[root@localhost test]# docker ps -a|grep fd4
fd44cdc55054 mytest "sh" 3 minutes ago Created mad_jones
問題復現及分析
容器直接啟動docker run -it mytest是可以正常啟動的。
[root@localhost site-packages]# docker run -it mytest
/ # stat /mydir
File: /mydir
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: fd08h/64776d Inode: 786453 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 1970-01-01 00:00:00.000000000
Modify: 2017-07-04 09:39:03.000000000
Change: 2017-07-04 09:39:04.000000000
但是加了掛載的參數-v $PWD/test.txt:/mydir參數后就無法啟動了。所以可以判斷問題是出在掛載上。
查看上面那個未能啟動的容器,可以看到容器中的掛載。
[root@localhost test]# docker inspect fd4
...
"HostConfig": {
"Binds": [
"/root/dockerfile/test/test.txt:/mydir"
],
...
通過上面可以看到,容器中,或者說原有的鏡像中已經存在了/mydir,而且/mydir是一個文件夾。
而現在把test.txt這個文件映射掛載為文件夾,即會報could not synchronise with container process: not a directory的錯誤。
修正方法只要修改一下掛載點就可以,可以使用-v $PWD/test.txt:/mydir/test.txt即可成功啟動。
