Moby: Docker ๋ฐ๋ชฌ์ด๋กœ๋“œ ์ค‘ ์ •์ง€๋จ

์— ๋งŒ๋“  2015๋…„ 06์›” 11์ผ  ยท  174์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: moby/moby

Docker Daemon์€ ๊ณผ๋ถ€ํ•˜ ์ƒํƒœ์—์„œ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค. ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ์ดˆ๋‹น ๋งŽ์€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ / ์ค‘์ง€ / ์ข…๋ฃŒ / ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋Š” ํ•˜๋‚˜์˜ ํฌํŠธ๋ฅผ ํฌํ•จํ•˜๋ฉฐ ๋กœ๊น…์—†์ด ๋ถ„๋ฆฌ ๋œ ๋ชจ๋“œ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋Š” ๋“ค์–ด์˜ค๋Š” TCP ์—ฐ๊ฒฐ์„ ์ˆ˜์‹ ํ•˜๊ณ  ์ผ๋ถ€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์‘๋‹ต์„ ๋ณด๋‚ธ ๋‹ค์Œ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค. ์™ธ๋ถ€ ํ”„๋กœ์„ธ์Šค๋Š” ์ƒˆ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ฃฝ์ด๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•˜๊ณ  ์‹œ์ž‘ํ•˜์—ฌ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์ผ๋‹จ ์ค‘๋‹จ๋˜๋ฉด ์žฌ๋ถ€ํŒ…์—†์ด ๋„์ปค๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์‹ค์ œ ์ค‘๋‹จ ๋œ ์ธ์Šคํ„ด์Šค์—์„œ ๋„์ปค ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ์ •๋ณด๋Š” ์žฌ๋ถ€ํŒ… ํ›„ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ์ธ์Šคํ„ด์Šค ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ๋ฌด์–ธ๊ฐ€๊ฐ€ ์™„์ „ํžˆ ์ž ๊ธฐ๊ณ  ์ธ์Šคํ„ด์Šค๊ฐ€ ssh'd ๋  ์ˆ˜์—†๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋„์ปค ์ž ๊ธˆ์ด ๋ฐœ์ƒํ•œ ํ›„ ์–ธ์  ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Docker ์ •๋ณด

์ปจํ…Œ์ด๋„ˆ : 8
์ด๋ฏธ์ง€ : 65
์Šคํ† ๋ฆฌ์ง€ ๋“œ๋ผ์ด๋ฒ„ : ์˜ค๋ฒ„๋ ˆ์ด
๋ฐฑ์—… ํŒŒ์ผ ์‹œ์Šคํ…œ : extfs
์‹คํ–‰ ๋“œ๋ผ์ด๋ฒ„ : native-0.2
์ปค๋„ ๋ฒ„์ „ : 3.18.0-031800-generic
์šด์˜ ์ฒด์ œ : Ubuntu 14.04.2 LTS
CPU : 2
์ด ๋ฉ”๋ชจ๋ฆฌ : 3.675GiB
์ด๋ฆ„:
์•„์ด๋”” : FAEG : 2BHA : XBTO : CNKH : 3 RCA : GV3Z : UWIB : 76QS : 6 JAG : SVCE : 67LH : KZBP
๊ฒฝ๊ณ  : ์Šค์™‘ ์ œํ•œ ์ง€์› ์—†์Œ

Docker ๋ฒ„์ „

ํด๋ผ์ด์–ธํŠธ ๋ฒ„์ „ : 1.6.0
ํด๋ผ์ด์–ธํŠธ API ๋ฒ„์ „ : 1.18
Go ๋ฒ„์ „ (ํด๋ผ์ด์–ธํŠธ) : go1.4.2
Git ์ปค๋ฐ‹ (ํด๋ผ์ด์–ธํŠธ) : 4749651
OS / Arch (ํด๋ผ์ด์–ธํŠธ) : linux / amd64
์„œ๋ฒ„ ๋ฒ„์ „ : 1.6.0
์„œ๋ฒ„ API ๋ฒ„์ „ : 1.18
Go ๋ฒ„์ „ (์„œ๋ฒ„) : go1.4.2
Git ์ปค๋ฐ‹ (์„œ๋ฒ„) : 4749651
OS / Arch (์„œ๋ฒ„) : linux / amd64

uname -a
๋ฆฌ๋ˆ…์Šค3.18.0-031800-generic # 201412071935 SMP ์›” 12 ์›” 8 ์ผ 00:36:34 UTC 2014 x86_64 x86_64 x86_64 GNU / Linux

ulimit -a
์ฝ”์–ด ํŒŒ์ผ ํฌ๊ธฐ (๋ธ”๋ก, -c) 0
๋ฐ์ดํ„ฐ ์„ธ๊ทธ๋จผํŠธ ํฌ๊ธฐ (KB, -d) ๋ฌด์ œํ•œ
์Šค์ผ€์ค„๋ง ์šฐ์„  ์ˆœ์œ„ (-e) 0
ํŒŒ์ผ ํฌ๊ธฐ (๋ธ”๋ก, -f) ๋ฌด์ œํ•œ
๋ณด๋ฅ˜์ค‘์ธ ์‹ ํ˜ธ (-i) 14972
์ตœ๋Œ€ ์ž ๊ธด ๋ฉ”๋ชจ๋ฆฌ (KB, -l) 64
์ตœ๋Œ€ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ (KB, -m) ๋ฌด์ œํ•œ
์—ด๋ฆฐ ํŒŒ์ผ (-n) 1024
ํŒŒ์ดํ”„ ํฌ๊ธฐ (512 ๋ฐ”์ดํŠธ, -p) 8
POSIX ๋ฉ”์‹œ์ง€ ํ (๋ฐ”์ดํŠธ, -q) 819200
์‹ค์‹œ๊ฐ„ ์šฐ์„  ์ˆœ์œ„ (-r) 0
์Šคํƒ ํฌ๊ธฐ (KB, -s) 8192
CPU ์‹œ๊ฐ„ (์ดˆ, -t) ๋ฌด์ œํ•œ
์ตœ๋Œ€ ์‚ฌ์šฉ์ž ํ”„๋กœ์„ธ์Šค (-u) 14972
๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ (KB, -v) ๋ฌด์ œํ•œ
ํŒŒ์ผ ์ž ๊ธˆ (-x) ๋ฌด์ œํ•œ

aredaemon areruntime kinbug

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์˜ค๋Š˜ ๋‚˜๋Š” ์ด์™€ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๋งŒ๋‚œ๋‹ค-docker ps frozen, docker๋Š” 100 % cpu๋ฅผ ๋จน์Šต๋‹ˆ๋‹ค.
์ด์ œ ๋‚ด datadog-agent๊ฐ€์ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•ด ๋ฃจํ”„์—์„œ docker๋ฅผ ์š”์ฒญํ•œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

collect_container_size: true

๊ทธ๋ž˜์„œ ๋‚˜๋Š” ๋งค์šฐ ์–ด๋ ค์šด ์ž‘์—…์œผ๋กœ ๋ฌดํ•œ ๋ฃจํ”„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค (10k ์ด์ƒ์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค). ๋‚ด๊ฐ€ datadog docker ํ†ตํ•ฉ์„ ์ค‘์ง€ ํ•œ ํ›„ ์‹œ์Šคํ…œ runnig ok-docker ps๊ฐ€ ์ž‘๋™ํ•˜๊ณ  docker๋Š” 0 % cpu๋ฅผ ๋จน์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  174 ๋Œ“๊ธ€

์ด๊ฒƒ์„ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ์ถ•์†Œ ๋œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ๊ฐ–๊ฒŒ ๋ ๊นŒ์š”? ์•„๋งˆ๋„ ์ปจํ…Œ์ด๋„ˆ์—์žˆ๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ์ž‘์€ Dockerfile๊ณผ ์ปจํ…Œ์ด๋„ˆ ์‹œ์ž‘ / ์ค‘์ง€ / ... ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” bash ์Šคํฌ๋ฆฝํŠธ์ผ๊นŒ์š”?

์ปจํ…Œ์ด๋„ˆ๊ฐ€ dockerhub kinvey / blrunner # v0.3.8์— ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ์˜ต์…˜๊ณผ ํ•จ๊ป˜ ์›๊ฒฉ API ์‚ฌ์šฉ :

์ฐฝ์กฐํ•˜๋‹ค
์ด๋ฏธ์ง€ : 'kinvey / blrunner # v0.3.8'
AttachStdout : ๊ฑฐ์ง“
AttachStderr : ๊ฑฐ์ง“
ExposedPorts : { '7000 / tcp': {}}
Tty : ๊ฑฐ์ง“
HostConfig :
PublishAllPorts : true
CapDrop : [
"CHOWN"
"DAC_OVERRIDE"
"FOWNER"
"์ฃฝ์ž„"
"SETGID"
"SETPCAP"
"NET_BIND_SERVICE"
"NET_RAW"
"SYS_CHROOT"
"MKNOD"
"SETFCAP"
"AUDIT_WRITE"
]
LogConfig :
์œ ํ˜• : "์—†์Œ"
๊ตฌ์„ฑ : {}

์Šคํƒ€ํŠธ

container.start

์—†์• ๋‹ค
force : true

ํ , ๊ณผ๋„ํ•œ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋Ÿ‰์ด ๋ณด์ด์‹ญ๋‹ˆ๊นŒ?
ssh๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์‚ฌ์‹ค์€ ๋‚˜๋ฅผ ์˜์‹ฌํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
์˜ค๋ฒ„๋ ˆ์ด์˜ inode ๋ฌธ์ œ์ด๊ฑฐ๋‚˜ ๋„ˆ๋ฌด ๋งŽ์€ ์—ด๋ฆฐ FD ๋“ฑ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณผ๋„ํ•œ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๊ณผ ๊ด€๋ จํ•˜์—ฌ ํŠนํžˆ๋Š” ์•„๋‹ˆ์ง€๋งŒ ์ดˆ๊ธฐ ์ฆ์ƒ์€ docker๊ฐ€ ์™„์ „ํžˆ ์ค‘๋‹จ๋˜๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋Š” ํ–‰๋ณตํ•˜๊ฒŒ ์œ™์œ™ ๊ฑฐ๋ฆฌ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค ...

์ค‘์š”ํ•œ ์ ์€ ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค์—์„œ ํ•œ ๋ฒˆ์— 8 ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ ๋งŒ ์‹คํ–‰๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

docker๊ฐ€ ๋” ์ด์ƒ resposive๊ฐ€ ์•„๋‹Œ ์ผ๋ถ€ ํ†ต๊ณ„๋ฅผ ์บก์ฒ˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

lsof | ํ™”์žฅ์‹ค -l

1025๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์˜ค๋ฅ˜๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.
lsof : ๊ฒฝ๊ณ  : ์˜ค๋ฒ„๋ ˆ์ด ํŒŒ์ผ ์‹œ์Šคํ…œ / var / lib / docker / overlay / aba7820e8cb01e62f7ceb53b0d04bc1281295c38815185e9383ebc19c30325d0 / merged๋ฅผ stat () ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
์ถœ๋ ฅ ์ •๋ณด๊ฐ€ โ€‹โ€‹๋ถˆ์™„์ „ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ๋‹จ์˜ ์ƒ˜ํ”Œ ์ถœ๋ ฅ :

์ƒ๋‹จ-00:16:53 12:22, ์‚ฌ์šฉ์ž 2 ๋ช…,๋กœ๋“œ ํ‰๊ท  : 2.01, 2.05, 2.05
์ž‘์—… : ์ด 123 ๊ฐœ, ์‹คํ–‰ ์ค‘ 1 ๊ฐœ, ์ˆ˜๋ฉด 121 ๊ฐœ, ์ค‘์ง€ 0 ๊ฐœ, ์ข€๋น„ 1 ๊ฐœ
% Cpu (s) : 0.3 us, 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : ์ด 3853940, ์‚ฌ์šฉ 2592920, ๋ฌด๋ฃŒ 1261020, ๋ฒ„ํผ 172660
KiB ์Šค์™‘ : ์ด 0 ๊ฐœ, ์‚ฌ์šฉ 0 ๊ฐœ, ๋ฌด๋ฃŒ 0 ๊ฐœ. 1115644 ์บ์‹œ ๋œ ๋ฉ”๋ชจ๋ฆฌ

24971 kinvey 20 0 992008 71892 10796 S 1.3 1.9 9 : 11.93 ๋…ธ๋“œ
902 ๋ฃจํŠธ 200 1365860 62800 12108 S 0.3 1.6 30 : 06.10 ๋„์ปค
29901 ์šฐ๋ถ„ํˆฌ 200 27988 6720 2676 S 0.3 0.2 3 : 58.17 tmux
1 ๋ฃจํŠธ 2000 33612 4152 2716 S 0.0 0.1 14 : 22.00 ์ดˆ๊ธฐํ™”
2 ๋ฃจํŠธ 20000 S 0.0 0.0 0 : 00.03 kthreadd
3 ๋ฃจํŠธ 20000 S 0.0 0.0 0 : 04.40 ksoftirqd / 0
5 ๋ฃจํŠธ 0-20 0 0 S 0.0 0.0 0 : 00.00 kworker / 0 : 0H
7 ๋ฃจํŠธ 200 000 S 0.0 0.0 2 : 21.81 rcu_sched
8 ๋ฃจํŠธ 200 000 S 0.0 0.0 0 : 01.91 rcu_bh

@mjsalinger ์‚ฌ์šฉ์ค‘์ธ ์„ค์ •์ด ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ง€์›๋˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ์‚ฌ์šฉ์ž ์ง€์ • ์ปค๋„๊ณผ ํ•จ๊ป˜ Ubuntu 14.04๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

3.18.0-031800 ์ปค๋„์€ ์–ด๋””์—์„œ ์™”์Šต๋‹ˆ๊นŒ? ์ด ์ปค๋„ ๋นŒ๋“œ๊ฐ€ ์˜ค๋ž˜๋œ ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๊นŒ? ์‚ฌ์šฉ์ค‘์ธ ์ปค๋„์€ ์ž‘๋…„ 12 ์›”์— ๋นŒ๋“œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋””๋ฒ„๊น… ํ•  ํ•ญ๋ชฉ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ์‹ค์ œ๋กœ ์˜ค๋ฒ„๋ ˆ์ด์™€ ๊ด€๋ จ๋œ ์ปค๋„ ๋ฒ„๊ทธ์ด๊ฑฐ๋‚˜ ์ตœ์‹  ๋ฒ„์ „์˜ ์ปค๋„ 3.18์—์„œ ๋” ์ด์ƒ ๋ฌธ์ œ๊ฐ€๋˜์ง€ ์•Š๋Š” ๋‹ค๋ฅธ ์ด๋ฏธ ์ˆ˜์ • ๋œ ์ปค๋„ ๋ฒ„๊ทธ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ตœ์‹  3.18 ์ด์ƒ์˜ ์ปค๋„๋กœ ๋‹ค์‹œ ์‹œ๋„ํ•˜๊ณ  ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ์˜ค๋ฒ„๋ ˆ์ด์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ ๋ฌธ์ œ๊ฐ€ ์—ด๋ ค ์žˆ์œผ๋ฉฐ ์ตœ์‹  ์ปค๋„ ๋ฒ„์ „ ๋ฐ ์ตœ์‹  Docker ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธ ํ•œ ํ›„์—๋„ ์˜ค๋ฒ„๋ ˆ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ์„ ๋ช…์‹ฌํ•˜์‹ญ์‹œ์˜ค.

@unclejack @ cpuguy83 @ LK4D4 ์ด ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ์—ฌ์‹ญ์‹œ์˜ค. ์ด๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๊ตฌ์„ฑ์— ๋Œ€ํ•œ ์กฐ์–ธ์ด ํŠนํžˆ ๋„์ปค ํŒ€๊ณผ ์‹คํ—˜์—์„œ ์ œ๊ณต ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ตœ์‹  ์ปค๋„ (3.19 +)์„ ์‚ฌ์šฉํ•ด ๋ณด์•˜๊ณ  ์–ด๋–ค ์ข…๋ฅ˜์˜ ์ปค๋„ ํŒจ๋‹‰ ๋ฒ„๊ทธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 12 ์›” ์ด์ „์— 3.18์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ ์ดํ›„์— ์•Œ๋ ค์ง„ ์ปค๋„ ๋ฒ„๊ทธ๋กœ ์ธํ•ด ์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ณ ์žˆ๋Š” ์ปค๋„ ํŒจ๋‹‰์€ ์•„์ง ์ˆ˜์ •๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

OverlayFS์— ๊ด€ํ•ด์„œ๋Š” AUFS์—์„œ _numerous_ ๊ฐœ์˜ ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ๊ฒฝํ—˜ ํ•œ ํ›„ Docker์— ์ด์ƒ์ ์ธ FS๋กœ๋„ ์ œ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ง€์›๋˜๋Š” ๊ตฌ์„ฑ์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€์ด ์‚ฌ์šฉ ์‚ฌ๋ก€์— ์ ํ•ฉํ•œ ์„ฑ๋Šฅ์ ์ด๊ณ  ์•ˆ์ •์ ์ธ ๊ตฌ์„ฑ์„ ์ฐพ๋„๋ก ๋„์™€ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋Š”์ด ์•ˆ์ •์„ ๋ช‡ ๋‹ฌ ๋™์•ˆ ์ถ”์ง„ํ•ด ์™”์Šต๋‹ˆ๋‹ค.

@mjsalinger ์˜ค๋ฒ„๋ ˆ์ด๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋ณผ๋ฅจ์— ๋Œ€ํ•œ inode ์‚ฌ์šฉ๋Ÿ‰์„ ์ œ๊ณต ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ( df -i /var/lib/docker ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค).

๋‹ค์‹œ ์—ด์–ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋‹ต์ด ๋‹ค๋ฅธ ์ปค๋„์ด๋ฉด ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ์•ˆ์ •์ ์ธ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.

df -i / ver / lib / docker

ํŒŒ์ผ ์‹œ์Šคํ…œ Inode IUsed IFree IUse % Mounted on
/ dev / xvda1 1638400 643893 994507 40 % /

์˜ค๋ฒ„๋ ˆ์ด์—๋Š” ์—ฌ์ „ํžˆ ๋งŽ์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค : https://github.com/docker/docker/issues?q=is%3Aopen+is%3Aissue+label%3A%2Fsystem%2Foverlay

ํ”„๋กœ๋•์…˜์—์„œ๋Š” ์˜ค๋ฒ„๋ ˆ์ด๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์€์ด ์ด์Šˆ ํŠธ๋ž˜์ปค์— ๋Œ€ํ•ด ํ”„๋กœ๋•์…˜์—์„œ AUFS๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์•ˆ์ •์ ์ด๋ผ๊ณ  ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

Kernel 3.18์€ Ubuntu 14.04์—์„œ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Canonical์€ ์ด์— ๋Œ€ํ•œ ์ง€์›์„ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์˜ AUFS๋Š” ์„ฑ๋Šฅ์ด ์ „ํ˜€ ๋–จ์–ด์ง€์ง€ ์•Š์•˜๊ณ  ์šฐ๋ฆฌ์—๊ฒŒ๋Š” ์•ˆ์ •์  ์ด์—ˆ์ง€๋งŒ I / O ๋ณ‘๋ชฉ ํ˜„์ƒ, ๋ฉˆ์ถค ๋“ฑ์ด ์ž์ฃผ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ณด๋‹ค:

11228, # 12758, # 12962

์˜ค๋ฒ„๋ ˆ์ด๋กœ ์ „ํ™˜ํ•˜๋ฉด ์œ„์˜ ๋ชจ๋“  ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚จ์€ ๋ฌธ์ œ๋Š” ํ•˜๋‚˜๋ฟ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ:

http://developerblog.redhat.com/2014/09/30/overview-storage-scalability-docker/
http://qconlondon.com/system/files/presentation-slides/Docker%20Clustering.pdf

Overlay๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์„ ํƒํ•œ ๋™์ธ์œผ๋กœ ์ œ๊ณต๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์•„์ง ์•ˆ์ •์ ์ด์ง€ ์•Š๋‹ค๋ฉด ๊ดœ์ฐฎ์ง€ ๋งŒ AUFS๋„ ์•„๋‹ˆ๊ณ  Docker์— ํ•„์š”ํ•œ ์„ฑ๋Šฅ๊ณผ ์•ˆ์ •์„ฑ์„ ์–ป์„ ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ชจ๋‘ ์ƒˆ๋กœ์šด ๊ฒƒ์„ ์‹œ๋„ํ•˜๊ณ  ์žˆ์ง€๋งŒ ์ด์ „ ๊ตฌ์„ฑ (Ubuntu 12.04์˜ AUFS ๋ฐ Ubuntu 14.04์˜ AUFS)์—์„œ๋Š” ์•ˆ์ •์„ฑ์ด๋‚˜ ์„ฑ๋Šฅ์„ ์–ป์„ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ ์–ด๋„ Overlay๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์„ฑ๋Šฅ๊ณผ ์•ˆ์ •์„ฑ์ด ํ–ฅ์ƒ๋˜์ง€๋งŒ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ฉด๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ AUFS (12.04, 14.04 ๋ฐ 15.04)์—์„œ ์‹คํ–‰์ค‘์ธ ๊ธฐ๋ณธ Ubuntu ์ธ์Šคํ„ด์Šค์™€ ์œ ์‚ฌํ•œ ์ฆ์ƒ์„ ๊ฒฝํ—˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

10355 # 13940

ํ˜„์žฌ Kernel ๋ฐ OverlayFS๋กœ ์ „ํ™˜ ํ•œ ํ›„์ด ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ๋ชจ๋‘ ์‚ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค.

@mjsalinger ์ตœ์‹  ์ปค๋„ 3.13 ํŒจํ‚ค์ง€์™€ ํ•จ๊ป˜ Ubuntu 14.04๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ง์ ‘ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋Š” ์ „ํ˜€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

@unclejack ๊ทธ๊ฒƒ์„ ์‹œ๋„ํ•˜๊ณ  ๋Œ€๋Ÿ‰์˜ ๋Œ€๋Ÿ‰ ์‚ฌ์šฉ (๋งŽ์€ ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ / ํŒŒ๊ดด)์œผ๋กœ ์œ„์— ์ง€์ •๋œ ๋ฌธ์ œ์— ๋ถ€๋”ช ์ณค๊ณ  AUFS๋Š” ์„ฑ๋Šฅ์ด ๋งค์šฐ ๋–จ์–ด์กŒ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ทธ๊ฒƒ์€ ์˜ต์…˜์ด ์•„๋‹™๋‹ˆ๋‹ค.

@mjsalinger ๋„์ปค๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด upstart๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? /etc/init/docker.conf๋Š” ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ์Šต๋‹ˆ๊นŒ?

์˜ˆ, upstart๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

/etc/init/docker.conf

description "Docker daemon"

start on (local-filesystems and net-device-up IFACE!=lo)
stop on runlevel [!2345]
limit nofile 524288 1048576
limit nproc 524288 1048576

respawn

pre-start script
        # see also https://github.com/tianon/cgroupfs-mount/blob/master/cgroupfs-mount
        if grep -v '^#' /etc/fstab | grep -q cgroup \
                || [ ! -e /proc/cgroups ] \
                || [ ! -d /sys/fs/cgroup ]; then
                exit 0
        fi
        if ! mountpoint -q /sys/fs/cgroup; then
                mount -t tmpfs -o uid=0,gid=0,mode=0755 cgroup /sys/fs/cgroup
        fi
        (
                cd /sys/fs/cgroup
                for sys in $(awk '!/^#/ { if ($4 == 1) print $1 }' /proc/cgroups); do
                        mkdir -p $sys
                        if ! mountpoint -q $sys; then
                                if ! mount -n -t cgroup -o $sys cgroup $sys; then
                                        rmdir $sys || true
                                fi
                        fi
                done
        )
end script

script
        # modify these in /etc/default/$UPSTART_JOB (/etc/default/docker)
        DOCKER=/usr/bin/$UPSTART_JOB
        DOCKER_OPTS=
        if [ -f /etc/default/$UPSTART_JOB ]; then
                . /etc/default/$UPSTART_JOB
        fi
        exec "$DOCKER" -d $DOCKER_OPTS
end script

# Don't emit "started" event until docker.sock is ready.
# See https://github.com/docker/docker/issues/6647
post-start script
        DOCKER_OPTS=
        if [ -f /etc/default/$UPSTART_JOB ]; then
                . /etc/default/$UPSTART_JOB
        fi
        if ! printf "%s" "$DOCKER_OPTS" | grep -qE -e '-H|--host'; then
                while ! [ -e /var/run/docker.sock ]; do
                        initctl status $UPSTART_JOB | grep -qE "(stop|respawn)/" && exit 1
                        echo "Waiting for /var/run/docker.sock"
                        sleep 0.1
                done
                echo "/var/run/docker.sock is up"
        fi
end script

์˜ˆ๋ฅผ ๋“ค์–ด ์ผ๋ถ€ ์ธ์Šคํ„ด์Šค์—์„œ Docker ๋ช…๋ น์„ ์‹คํ–‰ํ•  ๋•Œ๋„ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

sudo docker ps

FATA [0000] Get http : ///var/run/docker.sock/v1.18/containers/json? all = 1 : dial unix /var/run/docker.sock : ๋ฆฌ์†Œ์Šค๋ฅผ ์ผ์‹œ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. TLS ์ง€์›์— ์—ฐ๊ฒฐํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๊นŒ
TLS์—†๋Š” ๋ฐ๋ชฌ?

@mjsalinger ๊ทธ๋ƒฅ ์—‰ํ„ฐ๋ฆฌ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๋ฐ๋ชฌ์ด ์ถฉ๋Œํ–ˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

@mjsalinger ์ด ๋™์•ˆ docker ๋ฐ๋ชฌ ๋กœ๊ทธ๋Š” ๋ฌด์—‡์„ ๋งํ•ฉ๋‹ˆ๊นŒ? /var/log/upstart/docker.log ๋Š” ์œ„์น˜ ์—ฌ์•ผํ•ฉ๋‹ˆ๋‹ค.

๊ณ ์ • ๋œ ์ƒˆ ํ•ญ๋ชฉ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ๋กœ๊ทธ์˜ ๋งˆ์ง€๋ง‰ ํ•ญ๋ชฉ์ž…๋‹ˆ๋‹ค.

INFO[46655] -job log(create, 48abb699bb6b8aefe042c010d06268d5e13515d616c5ca61f3a4930a325de26a, kinvey/blrunner:v0.3.8) = OK (0)
INFO[46655] -job create() = OK (0)
INFO[46655] POST /containers/48abb699bb6b8aefe042c010d06268d5e13515d616c5ca61f3a4930a325de26a/start
INFO[46655] +job start(48abb699bb6b8aefe042c010d06268d5e13515d616c5ca61f3a4930a325de26a)
INFO[46655] +job allocate_interface(48abb699bb6b8aefe042c010d06268d5e13515d616c5ca61f3a4930a325de26a)
INFO[46655] -job allocate_interface(48abb699bb6b8aefe042c010d06268d5e13515d616c5ca61f3a4930a325de26a) = OK (0)
INFO[46655] +job allocate_port(48abb699bb6b8aefe042c010d06268d5e13515d616c5ca61f3a4930a325de26a)
INFO[46655] POST /containers/create?Image=kinvey%2Fblrunner%3Av0.3.8&AttachStdout=false&AttachStderr=false&ExposedPorts=&Tty=false&HostConfig=
INFO[46655] +job create()
INFO[46655] DELETE /containers/4d447093f522f1d74f482b2f76c91adfd38b5ad264202b1c8262f05a0edaf187?force=true
INFO[46655] +job rm(4d447093f522f1d74f482b2f76c91adfd38b5ad264202b1c8262f05a0edaf187)
INFO[46656] -job allocate_port(48abb699bb6b8aefe042c010d06268d5e13515d616c5ca61f3a4930a325de26a) = OK (0)
INFO[46656] +job log(start, 48abb699bb6b8aefe042c010d06268d5e13515d616c5ca61f3a4930a325de26a, kinvey/blrunner:v0.3.8)
INFO[46656] -job log(start, 48abb699bb6b8aefe042c010d06268d5e13515d616c5ca61f3a4930a325de26a, kinvey/blrunner:v0.3.8) = OK (0)
INFO[46656] +job log(create, 7ef9e347b762b4fb34a85508e5d259a609392decf9ffc8488730dbe8e731c84f, kinvey/blrunner:v0.3.8)
INFO[46656] -job log(create, 7ef9e347b762b4fb34a85508e5d259a609392decf9ffc8488730dbe8e731c84f, kinvey/blrunner:v0.3.8) = OK (0)
INFO[46656] -job create() = OK (0)
INFO[46656] +job log(die, 4d447093f522f1d74f482b2f76c91adfd38b5ad264202b1c8262f05a0edaf187, kinvey/blrunner:v0.3.8)
INFO[46656] -job log(die, 4d447093f522f1d74f482b2f76c91adfd38b5ad264202b1c8262f05a0edaf187, kinvey/blrunner:v0.3.8) = OK (0)
INFO[46656] +job release_interface(4d447093f522f1d74f482b2f76c91adfd38b5ad264202b1c8262f05a0edaf187)
INFO[46656] POST /containers/7ef9e347b762b4fb34a85508e5d259a609392decf9ffc8488730dbe8e731c84f/start
INFO[46656] +job start(7ef9e347b762b4fb34a85508e5d259a609392decf9ffc8488730dbe8e731c84f)
INFO[46656] +job allocate_interface(7ef9e347b762b4fb34a85508e5d259a609392decf9ffc8488730dbe8e731c84f)
INFO[46656] -job allocate_interface(7ef9e347b762b4fb34a85508e5d259a609392decf9ffc8488730dbe8e731c84f) = OK (0)
INFO[46656] +job allocate_port(7ef9e347b762b4fb34a85508e5d259a609392decf9ffc8488730dbe8e731c84f)
INFO[46656] -job release_interface(4d447093f522f1d74f482b2f76c91adfd38b5ad264202b1c8262f05a0edaf187) = OK (0)
INFO[46656] DELETE /containers/cb03fc14e5eab2acf01d1d42dec2fc1990cccca69149de2dc97873f87474db9b?force=true
INFO[46656] +job rm(cb03fc14e5eab2acf01d1d42dec2fc1990cccca69149de2dc97873f87474db9b)
INFO[46656] +job log(destroy, 4d447093f522f1d74f482b2f76c91adfd38b5ad264202b1c8262f05a0edaf187, kinvey/blrunner:v0.3.8)
INFO[46656] -job log(destroy, 4d447093f522f1d74f482b2f76c91adfd38b5ad264202b1c8262f05a0edaf187, kinvey/blrunner:v0.3.8) = OK (0)
INFO[46656] -job rm(4d447093f522f1d74f482b2f76c91adfd38b5ad264202b1c8262f05a0edaf187) = OK (0)
INFO[46656] +job log(die, cb03fc14e5eab2acf01d1d42dec2fc1990cccca69149de2dc97873f87474db9b, kinvey/blrunner:v0.3.8)
INFO[46656] -job log(die, cb03fc14e5eab2acf01d1d42dec2fc1990cccca69149de2dc97873f87474db9b, kinvey/blrunner:v0.3.8) = OK (0)
INFO[46656] +job release_interface(cb03fc14e5eab2acf01d1d42dec2fc1990cccca69149de2dc97873f87474db9b)
INFO[46656] DELETE /containers/1e8ddec281bd9b5bfe239d0e955874f83d51ffec95c499f88c158639f7445d20?force=true
INFO[46656] +job rm(1e8ddec281bd9b5bfe239d0e955874f83d51ffec95c499f88c158639f7445d20)
INFO[46656] -job allocate_port(7ef9e347b762b4fb34a85508e5d259a609392decf9ffc8488730dbe8e731c84f) = OK (0)
INFO[46656] +job log(start, 7ef9e347b762b4fb34a85508e5d259a609392decf9ffc8488730dbe8e731c84f, kinvey/blrunner:v0.3.8)
INFO[46656] -job log(start, 7ef9e347b762b4fb34a85508e5d259a609392decf9ffc8488730dbe8e731c84f, kinvey/blrunner:v0.3.8) = OK (0)
INFO[46656] -job start(48abb699bb6b8aefe042c010d06268d5e13515d616c5ca61f3a4930a325de26a) = OK (0)
INFO[46656] POST /containers/create?Image=kinvey%2Fblrunner%3Av0.3.8&AttachStdout=false&AttachStderr=false&ExposedPorts=&Tty=false&HostConfig=
INFO[46656] +job create()
INFO[46656] +job log(create, 1ae5798d7aeec4857944b40a27f1a69789323bbe8edb8d67a250150241484830, kinvey/blrunner:v0.3.8)
INFO[46656] -job log(create, 1ae5798d7aeec4857944b40a27f1a69789323bbe8edb8d67a250150241484830, kinvey/blrunner:v0.3.8) = OK (0)
INFO[46656] -job create() = OK (0)
INFO[46656] +job log(die, 1e8ddec281bd9b5bfe239d0e955874f83d51ffec95c499f88c158639f7445d20, kinvey/blrunner:v0.3.8)
INFO[46656] -job log(die, 1e8ddec281bd9b5bfe239d0e955874f83d51ffec95c499f88c158639f7445d20, kinvey/blrunner:v0.3.8) = OK (0)
INFO[46656] +job release_interface(1e8ddec281bd9b5bfe239d0e955874f83d51ffec95c499f88c158639f7445d20)
INFO[46656] GET /containers/48abb699bb6b8aefe042c010d06268d5e13515d616c5ca61f3a4930a325de26a/json
INFO[46656] +job container_inspect(48abb699bb6b8aefe042c010d06268d5e13515d616c5ca61f3a4930a325de26a)
INFO[46656] -job container_inspect(48abb699bb6b8aefe042c010d06268d5e13515d616c5ca61f3a4930a325de26a) = OK (0)
INFO[46656] POST /containers/1ae5798d7aeec4857944b40a27f1a69789323bbe8edb8d67a250150241484830/start
INFO[46656] +job start(1ae5798d7aeec4857944b40a27f1a69789323bbe8edb8d67a250150241484830)
INFO[46656] +job allocate_interface(1ae5798d7aeec4857944b40a27f1a69789323bbe8edb8d67a250150241484830)
INFO[46656] -job allocate_interface(1ae5798d7aeec4857944b40a27f1a69789323bbe8edb8d67a250150241484830) = OK (0)
INFO[46656] +job allocate_port(1ae5798d7aeec4857944b40a27f1a69789323bbe8edb8d67a250150241484830)
INFO[46656] -job release_interface(cb03fc14e5eab2acf01d1d42dec2fc1990cccca69149de2dc97873f87474db9b) = OK (0)
INFO[46656] -job start(7ef9e347b762b4fb34a85508e5d259a609392decf9ffc8488730dbe8e731c84f) = OK (0)
INFO[46656] GET /containers/7ef9e347b762b4fb34a85508e5d259a609392decf9ffc8488730dbe8e731c84f/json
INFO[46656] +job container_inspect(7ef9e347b762b4fb34a85508e5d259a609392decf9ffc8488730dbe8e731c84f)
INFO[46656] -job release_interface(1e8ddec281bd9b5bfe239d0e955874f83d51ffec95c499f88c158639f7445d20) = OK (0)
INFO[46656] -job container_inspect(7ef9e347b762b4fb34a85508e5d259a609392decf9ffc8488730dbe8e731c84f) = OK (0)
INFO[46656] +job log(destroy, cb03fc14e5eab2acf01d1d42dec2fc1990cccca69149de2dc97873f87474db9b, kinvey/blrunner:v0.3.8)
INFO[46656] -job log(destroy, cb03fc14e5eab2acf01d1d42dec2fc1990cccca69149de2dc97873f87474db9b, kinvey/blrunner:v0.3.8) = OK (0)
INFO[46656] -job rm(cb03fc14e5eab2acf01d1d42dec2fc1990cccca69149de2dc97873f87474db9b) = OK (0)
INFO[46656] +job log(destroy, 1e8ddec281bd9b5bfe239d0e955874f83d51ffec95c499f88c158639f7445d20, kinvey/blrunner:v0.3.8)
INFO[46656] -job log(destroy, 1e8ddec281bd9b5bfe239d0e955874f83d51ffec95c499f88c158639f7445d20, kinvey/blrunner:v0.3.8) = OK (0)
INFO[46656] -job rm(1e8ddec281bd9b5bfe239d0e955874f83d51ffec95c499f88c158639f7445d20) = OK (0)
INFO[46656] DELETE /containers/4cfeb48701f194cfd40f71d7883d82906d54a538084fa7be6680345e4651aa60?force=true
INFO[46656] +job rm(4cfeb48701f194cfd40f71d7883d82906d54a538084fa7be6680345e4651aa60)
INFO[46656] -job allocate_port(1ae5798d7aeec4857944b40a27f1a69789323bbe8edb8d67a250150241484830) = OK (0)
INFO[46656] +job log(start, 1ae5798d7aeec4857944b40a27f1a69789323bbe8edb8d67a250150241484830, kinvey/blrunner:v0.3.8)
INFO[46656] -job log(start, 1ae5798d7aeec4857944b40a27f1a69789323bbe8edb8d67a250150241484830, kinvey/blrunner:v0.3.8) = OK (0)

@ cpuguy83 ๋กœ๊ทธ๊ฐ€ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๊นŒ?

@mjsalinger ๋ฌธ์ œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋‹ค๋ฅธ ๊ฒƒ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋”˜๊ฐ€์— ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

@ cpuguy83 ์ฆ์ƒ์„ ๊ฐ์•ˆํ•  ๋•Œ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ์™€ ๊ทธ ์›์ธ์„ ์ถ”์ ํ•˜๊ธฐ ์œ„ํ•ด ๋‚ด๊ฐ€ ํ•  ์ˆ˜์žˆ๋Š” ์ผ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์•„๋งˆ๋„ ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์ด ์‹ค์ œ๋กœ ์ž๋ฌผ์‡ ์— ๋งค๋‹ฌ๋ ค ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด strace๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ™•์ธ. ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๊ฒƒ์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” 1.7์„ ๋จผ์ € ์‹œ๋„ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒํ–ˆ์ง€๋งŒ ์–ด๋–ค ๊ฐœ์„ ๋„ ๋ˆˆ์น˜ ์ฑ„์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

@ cpuguy83 ์˜ํ–ฅ์„๋ฐ›๋Š” ํ˜ธ์ŠคํŠธ ์ค‘ ํ•˜๋‚˜์—์„œ :

root@<host>:~# strace -q -y -v -p 899
futex(0x134f1b8, FUTEX_WAIT, 0, NULL^C <detached ...>

@ cpuguy83 ์–ด๋–ค ์•„์ด๋””์–ด?

์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ฃฝ๊ฑฐ๋‚˜ ์‹œ์ž‘๋˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ 1.7์—์„œ ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ์ด๊ฒƒ์€ ๋ฌธ์ œ์˜ ์„ ๊ตฌ์ž ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค (์ฐธ๊ณ ๋กœ 1.6์—์„œ๋Š” ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๋ฅผ ๋ณด์ง€ ๋ชปํ–ˆ์ง€๋งŒ ์ฃฝ์ด๊ธฐ / ์ œ๊ฑฐํ•˜๋ผ๋Š” ๋ช…๋ น์ด ์‹คํ–‰ ๋˜์—ˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ฃฝ์€ ์ปจํ…Œ์ด๋„ˆ์˜ ์–‘์ด ์Œ“์ด๊ธฐ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค)

Error spawning container: Error: HTTP code is 404 which indicates error: no such container - Cannot start container 09c12c9f72d461342447e822857566923d5532280f9ce25659d1ef3e54794484: Link not found

Error spawning container: Error: HTTP code is 404 which indicates error: no such container - Cannot start container 5e29407bb3154d6f5778676905d112a44596a23fd4a1b047336c3efaca6ada18: Link not found

Error spawning container: Error: HTTP code is 404 which indicates error: no such container - Cannot start container be22e8b24b70e24e5269b860055423236e4a2fca08969862c3ae3541c4ba4966: Link not found

Error spawning container: Error: HTTP code is 404 which indicates error: no such container - Cannot start container c067d14b67be8fb81922b87b66c0025ae5ae1ebed3d35dcb4052155afc4cafb4: Link not found

Error spawning container: Error: HTTP code is 404 which indicates error: no such container - Cannot start container 7f21c4fd8b6620eba81475351e8417b245f86b6014fd7125ba0e37c6684e3e42: Link not found

Error spawning container: Error: HTTP code is 404 which indicates error: no such container - Cannot start container b31531492ab7e767158601c438031c8e9ef0b50b9e84b0b274d733ed4fbe03a0: Link not found

Error spawning container: Error: HTTP code is 500 which indicates error: server error - Cannot start container 477dc3c691a12f74ea3f07af0af732082094418f6825f7c3d320bda0495504a1: iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 32822 -j DNAT --to-destination 172.17.0.44:7000 ! -i docker0: iptables: No chain/target/match by that name.
 (exit status 1)

Error spawning container: Error: HTTP code is 404 which indicates error: no such container - Cannot start container 6965eec076db173f4e3b9a05f06e1c87c02cfe849821bea4008ac7bd0f1e083a: Link not found

Error spawning container: Error: HTTP code is 404 which indicates error: no such container - Cannot start container 7c721dd2b8d31b51427762ac1d0fe86ffbb6e1d7462314fdac3afe1f46863ff1: Link not found

Error spawning container: Error: HTTP code is 500 which indicates error: server error - Cannot start container c908d059631e66883ee1a7302c16ad16df3298ebfec06bba95232d5f204c9c75: iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 32837 -j DNAT --to-destination 172.17.0.47:7000 ! -i docker0: iptables: No chain/target/match by that name.
 (exit status 1)

Error spawning container: Error: HTTP code is 500 which indicates error: server error - Cannot start container c3e11ffb82fe08b8a029ce0a94e678ad46e3d2f3d76bed7350544c6c48789369: iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 32847 -j DNAT --to-destination 172.17.0.48:7000 ! -i docker0: iptables: No chain/target/match by that name.
 (exit status 1)

์ตœ๊ทผ ์‚ฌ๊ฑด์˜ docker.log ๊ผฌ๋ฆฌ :

INFO[44089] DELETE /containers/4e455d01da8453688dd27cad41fea158757311c0c89f27619a728f272591ef25?force=true
INFO[44089] +job rm(4e455d01da8453688dd27cad41fea158757311c0c89f27619a728f272591ef25)
INFO[44089] DELETE /containers/a608bc1014317b083ac2f32a4c6c85dda65445420775e21d6406ca9146723c96?force=true
INFO[44089] +job rm(a608bc1014317b083ac2f32a4c6c85dda65445420775e21d6406ca9146723c96)
INFO[44089] +job log(die, 4e455d01da8453688dd27cad41fea158757311c0c89f27619a728f272591ef25, kinvey/blrunner:v0.3.8)
INFO[44089] -job log(die, 4e455d01da8453688dd27cad41fea158757311c0c89f27619a728f272591ef25, kinvey/blrunner:v0.3.8) = OK (0)
INFO[44089] +job release_interface(4e455d01da8453688dd27cad41fea158757311c0c89f27619a728f272591ef25)
INFO[44089] -job release_interface(4e455d01da8453688dd27cad41fea158757311c0c89f27619a728f272591ef25) = OK (0)
INFO[44089] +job log(die, a608bc1014317b083ac2f32a4c6c85dda65445420775e21d6406ca9146723c96, kinvey/blrunner:v0.3.8)
INFO[44089] -job log(die, a608bc1014317b083ac2f32a4c6c85dda65445420775e21d6406ca9146723c96, kinvey/blrunner:v0.3.8) = OK (0)
INFO[44089] +job release_interface(a608bc1014317b083ac2f32a4c6c85dda65445420775e21d6406ca9146723c96)
INFO[44089] -job release_interface(a608bc1014317b083ac2f32a4c6c85dda65445420775e21d6406ca9146723c96) = OK (0)
INFO[44092] +job log(destroy, 285274ee9c5b3bfa9fcea4d93b75e7e51949752b8d0eb101a31ea4f9aec5dad6, kinvey/blrunner:v0.3.8)
INFO[44092] -job log(destroy, 285274ee9c5b3bfa9fcea4d93b75e7e51949752b8d0eb101a31ea4f9aec5dad6, kinvey/blrunner:v0.3.8) = OK (0)
INFO[44092] -job rm(285274ee9c5b3bfa9fcea4d93b75e7e51949752b8d0eb101a31ea4f9aec5dad6) = OK (0)
INFO[44092] POST /containers/create?Image=kinvey%2Fblrunner%3Av0.3.8&AttachStdout=false&AttachStderr=false&ExposedPorts=&Tty=false&HostConfig=
INFO[44092] +job create()
INFO[44097] +job log(destroy, 4e455d01da8453688dd27cad41fea158757311c0c89f27619a728f272591ef25, kinvey/blrunner:v0.3.8)
INFO[44097] -job log(destroy, 4e455d01da8453688dd27cad41fea158757311c0c89f27619a728f272591ef25, kinvey/blrunner:v0.3.8) = OK (0)
INFO[44097] -job rm(4e455d01da8453688dd27cad41fea158757311c0c89f27619a728f272591ef25) = OK (0)
INFO[44097] POST /containers/create?Image=kinvey%2Fblrunner%3Av0.3.8&AttachStdout=false&AttachStderr=false&ExposedPorts=&Tty=false&HostConfig=
INFO[44097] +job create()
INFO[44098] +job log(destroy, c80a39f060f200f1aff8ae52538779542437745e4184ed02793f8873adcb9cd4, kinvey/blrunner:v0.3.8)
INFO[44098] -job log(destroy, c80a39f060f200f1aff8ae52538779542437745e4184ed02793f8873adcb9cd4, kinvey/blrunner:v0.3.8) = OK (0)
INFO[44098] -job rm(c80a39f060f200f1aff8ae52538779542437745e4184ed02793f8873adcb9cd4) = OK (0)
INFO[44098] POST /containers/create?Image=kinvey%2Fblrunner%3Av0.3.8&AttachStdout=false&AttachStderr=false&ExposedPorts=&Tty=false&HostConfig=
INFO[44098] +job create()
INFO[44098] +job log(create, 3b9a4635c068989ddb1983aa12460083e874d50fd42c743033ed3a08000eb7e9, kinvey/blrunner:v0.3.8)
INFO[44098] -job log(create, 3b9a4635c068989ddb1983aa12460083e874d50fd42c743033ed3a08000eb7e9, kinvey/blrunner:v0.3.8) = OK (0)
INFO[44098] -job create() = OK (0)
INFO[44098] POST /containers/3b9a4635c068989ddb1983aa12460083e874d50fd42c743033ed3a08000eb7e9/start
INFO[44098] +job start(3b9a4635c068989ddb1983aa12460083e874d50fd42c743033ed3a08000eb7e9)
INFO[44102] +job log(destroy, a608bc1014317b083ac2f32a4c6c85dda65445420775e21d6406ca9146723c96, kinvey/blrunner:v0.3.8)
INFO[44102] -job log(destroy, a608bc1014317b083ac2f32a4c6c85dda65445420775e21d6406ca9146723c96, kinvey/blrunner:v0.3.8) = OK (0)
INFO[44102] -job rm(a608bc1014317b083ac2f32a4c6c85dda65445420775e21d6406ca9146723c96) = OK (0)
INFO[44102] POST /containers/create?Image=kinvey%2Fblrunner%3Av0.3.8&AttachStdout=false&AttachStderr=false&ExposedPorts=&Tty=false&HostConfig=
INFO[44102] +job create()

@ cpuguy83 @ LK4D4 ์–ด๋–ค ์•„์ด๋””์–ด / ์—…๋ฐ์ดํŠธ?

๋ฌด์—‡์„ ์ƒ๊ฐํ•ด์•ผํ• ์ง€ ๋ชฐ๋ผ. ๋„์ปค ์ •๋ณด๋„ ์ค‘๋‹จ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์†Œํ”„ํŠธ์›จ์–ด ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

PID USER PR NI VIRT RES SHR S % CPU % MEM TIME + COMMAND
๋ฃจํŠธ 20 0 1314832 89688 11568 S 0.3 2.3 65 : 47.56 ๋„์ปค

์ด๊ฒƒ์ด Docker ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜์—๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜์ฒ˜๋Ÿผ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค ...

๋‚˜๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด "์šฐ๋ฆฌ๋„"๋ผ๊ณ  ๋งํ•  ๊ฒƒ์ด๋‹ค. ์šฐ๋ฆฌ๋Š” ํ…Œ์ŠคํŠธ ์ธํ”„๋ผ์— Docker๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๋™์ผํ•œ ์กฐ๊ฑด / ์‹œ๋‚˜๋ฆฌ์˜ค ๋‚ด์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ Docker๊ฐ€ ๋ถ€ํ•˜ ์ƒํƒœ์—์„œ ์ž ๊ธด ๊ฒฝ์šฐ ์˜๋ฏธ์žˆ๋Š” ๋ฐฉ์‹์œผ๋กœ Docker๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Šฅ๋ ฅ์— ์˜ํ–ฅ์„ ๋ฏธ์น  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ •๋ณด๋กœ ํ•„์š”ํ•œ ๊ฒƒ์„ ์•Œ๋ ค ์ฃผ์‹œ๋ฉด ๋ฌธ์ œ ํ•ด๊ฒฐ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๊บผ์ด ๊ธฐ๊บผ์ด ์ œ๊ณตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

CentOS7 ํ˜ธ์ŠคํŠธ์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

$ docker version
Client version: 1.6.2
Client API version: 1.18
Go version (client): go1.4.2
Git commit (client): ba1f6c3/1.6.2
OS/Arch (client): linux/amd64
Server version: 1.6.2
Server API version: 1.18
Go version (server): go1.4.2
Git commit (server): ba1f6c3/1.6.2
OS/Arch (server): linux/amd64
$ docker info
Containers: 7
Images: 672
Storage Driver: devicemapper
 Pool Name: docker-253:2-67171716-pool
 Pool Blocksize: 65.54 kB
 Backing Filesystem: xfs
 Data file: /dev/mapper/vg01-docker--data
 Metadata file: /dev/mapper/vg01-docker--metadata
 Data Space Used: 54.16 GB
 Data Space Total: 59.06 GB
 Data Space Available: 4.894 GB
 Metadata Space Used: 53.88 MB
 Metadata Space Total: 5.369 GB
 Metadata Space Available: 5.315 GB
 Udev Sync Supported: true
 Library Version: 1.02.93-RHEL7 (2015-01-28)
Execution Driver: native-0.2
Kernel Version: 3.10.0-229.7.2.el7.x86_64
Operating System: CentOS Linux 7 (Core)
CPUs: 8
Total Memory: 31.25 GiB

์ด๊ฒƒ์€ ์šฐ๋ฆฌ CI ์‹œ์Šคํ…œ์—์„œ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ณ‘๋ ฌ ์ž‘์—… ์ˆ˜๋ฅผ ๋ณ€๊ฒฝ ํ•œ ๋‹ค์Œ 4 ๊ฐœ์˜ ์ž‘์—…์„ ๋ณ‘๋ ฌ๋กœ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 4-6 ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋กœ๋“œ๋Š” ์•ฝ 10 ๊ฐœ์˜€์Šต๋‹ˆ๋‹ค (8 ๊ฐœ ์ฝ”์–ด ์ค‘ ์ผ๋ถ€๋Š” ์—ฌ์ „ํžˆ ์œ ํœด ์ƒํƒœ ์ž„).

๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ๋™์•ˆ dockerd ์ž์ฒด๊ฐ€ ๋ฉˆ์ท„์Šต๋‹ˆ๋‹ค. docker images ์€ (๋Š”) ์—ฌ์ „ํžˆ ์ด๋ฏธ์ง€๋ฅผ ํ‘œ์‹œํ•˜์ง€๋งŒ docker ps ๋˜๋Š” docker info ์™€ ๊ฐ™์€ ๋ชจ๋“  ๋ฐ๋ชฌ ๋ช…๋ น์ด ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด strace๋Š” ์œ„์˜ ๊ฒƒ๊ณผ ์œ ์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค.

strace -p 1194
Process 1194 attached
futex(0x11d2838, FUTEX_WAIT, 0, NULL

์ž ์‹œ ํ›„ ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ž‘์—… (์ปดํŒŒ์ผ, ํ…Œ์ŠคํŠธ ..)์„ ์™„๋ฃŒํ–ˆ์ง€๋งŒ ๋‘˜ ๋‹ค "๋ฐ˜ํ™˜"๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋งˆ์น˜ ๊ทธ๋“ค์ด๋„ ์ปค๋“œ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

๋งˆ์นจ๋‚ด dockerd๋ฅผ ์ฃฝ์˜€์„ ๋•Œ ์ปจํ…Œ์ด๋„ˆ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฉ”์‹œ์ง€๋กœ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

time="2015-08-05T15:59:32+02:00" level=fatal msg="Post http:///var/run/docker.sock/v1.18/containers/9117731bd16a451b89fd938f569c39761b5f8d6df505256e172738e0593ba125/wait: EOF. Are you trying to connect to a TLS-enabled daemon without TLS?" 

CI ํ™˜๊ฒฝ์—์„œ Centos 7์˜ @filex ์™€ ๋™์ผํ•œ ๊ฒƒ์„๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Containers: 1
Images: 19
Storage Driver: devicemapper
 Pool Name: docker--vg-docker--pool
 Pool Blocksize: 524.3 kB
 Backing Filesystem: xfs
 Data file:
 Metadata file:
 Data Space Used: 2.611 GB
 Data Space Total: 32.17 GB
 Data Space Available: 29.56 GB
 Metadata Space Used: 507.9 kB
 Metadata Space Total: 54.53 MB
 Metadata Space Available: 54.02 MB
 Udev Sync Supported: true
 Deferred Removal Enabled: true
 Library Version: 1.02.93-RHEL7 (2015-01-28)
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.10.0-229.11.1.el7.x86_64
Operating System: CentOS Linux 7 (Core)
CPUs: 2
Total Memory: 7.389 GiB
Name: ip-10-1-2-234
ID: 5YVL:O32X:4NNA:ICSJ:RSYS:CNCI:6QVC:C5YR:XGR4:NQTW:PUSE:YFTA
Client version: 1.7.1
Client API version: 1.19
Package Version (client): docker-1.7.1-108.el7.centos.x86_64
Go version (client): go1.4.2
Git commit (client): 3043001/1.7.1
OS/Arch (client): linux/amd64
Server version: 1.7.1
Server API version: 1.19
Package Version (server): docker-1.7.1-108.el7.centos.x86_64
Go version (server): go1.4.2
Git commit (server): 3043001/1.7.1
OS/Arch (server): linux/amd64

์—ฌ๊ธฐ์—์„œ๋„ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. docker๊ฐ€ ps, rm, stop, run, info ๋“ฑ์— ์‘๋‹ตํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋ช‡ ๋ฒˆ ์žฌ๋ถ€ํŒ…ํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์œผ๋กœ ๋Œ์•„ ์™”์Šต๋‹ˆ๋‹ค.

 ๋„์ปค ์ •๋ณด
 ์ปจํ…Œ์ด๋„ˆ : 25
 ์ด๋ฏธ์ง€ : 1739
 ์Šคํ† ๋ฆฌ์ง€ ๋“œ๋ผ์ด๋ฒ„ : devicemapper
 ํ’€ ์ด๋ฆ„ : docker-9 : 2-62521632-pool
 ํ’€ ๋ธ”๋ก ํฌ๊ธฐ : 65.54 kB
 ๋ฐฑ์—… ํŒŒ์ผ ์‹œ์Šคํ…œ : extfs
 ๋ฐ์ดํ„ฐ ํŒŒ์ผ : / dev / loop0
 ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ ํŒŒ์ผ : / dev / loop1
 ์‚ฌ์šฉ ๋œ ๋ฐ์ดํ„ฐ ๊ณต๊ฐ„ : 96.01GB
 ์ด ๋ฐ์ดํ„ฐ ๊ณต๊ฐ„ : 107.4GB
 ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ ๊ณต๊ฐ„ : 11.36GB
 ์‚ฌ์šฉ ๋œ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ ๊ณต๊ฐ„ : 110.5MB
 ์ด ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ ๊ณต๊ฐ„ : 2.147GB
 ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ ๊ณต๊ฐ„ : 2.037GB
 Udev ๋™๊ธฐํ™” ์ง€์› : true
 ์ง€์—ฐ ์ œ๊ฑฐ ํ™œ์„ฑํ™” : false
 ๋ฐ์ดํ„ฐ ๋ฃจํ”„ ํŒŒ์ผ : / var / lib / docker / devicemapper / devicemapper / data
 ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ ๋ฃจํ”„ ํŒŒ์ผ : / var / lib / docker / devicemapper / devicemapper / metadata
 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „ : 1.02.93-RHEL7 (2015-01-28)
 ์‹คํ–‰ ๋“œ๋ผ์ด๋ฒ„ : native-0.2
 ๋กœ๊น… ๋“œ๋ผ์ด๋ฒ„ : json-file
 ์ปค๋„ ๋ฒ„์ „ : 3.10.0-229.11.1.el7.x86_64
 ์šด์˜ ์ฒด์ œ : CentOS Linux 7 (์ฝ”์–ด)
 CPU : 8
 ์ด ๋ฉ”๋ชจ๋ฆฌ : 31.2GiB
 ์ด๋ฆ„ : CentOS-70-64-minimal
 ID : EM3I : PELO : SBH6 : JRVL : AM6C : UM7W : XJWJ : FI5N : JO77 : 7PMF : S57A : PLAT
 ๋„์ปค ๋ฒ„์ „
 ํด๋ผ์ด์–ธํŠธ ๋ฒ„์ „ : 1.7.1
 ํด๋ผ์ด์–ธํŠธ API ๋ฒ„์ „ : 1.19
 ํŒจํ‚ค์ง€ ๋ฒ„์ „ (ํด๋ผ์ด์–ธํŠธ) : docker-1.7.1-108.el7.centos.x86_64
 Go ๋ฒ„์ „ (ํด๋ผ์ด์–ธํŠธ) : go1.4.2
 Git ์ปค๋ฐ‹ (ํด๋ผ์ด์–ธํŠธ) : 3043001 / 1.7.1
 OS / Arch (ํด๋ผ์ด์–ธํŠธ) : linux / amd64
 ์„œ๋ฒ„ ๋ฒ„์ „ : 1.7.1
 ์„œ๋ฒ„ API ๋ฒ„์ „ : 1.19
 ํŒจํ‚ค์ง€ ๋ฒ„์ „ (์„œ๋ฒ„) : docker-1.7.1-108.el7.centos.x86_64
 Go ๋ฒ„์ „ (์„œ๋ฒ„) : go1.4.2
 Git ์ปค๋ฐ‹ (์„œ๋ฒ„) : 3043001 / 1.7.1
 OS / Arch (์„œ๋ฒ„) : linux / amd64

๋‚˜๋Š” 1.6.2์™€ 1.8.2๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๋„์ปค ์„ค์ •๋„ ๋ถ€ํ•˜๋กœ ์ธํ•ด ๋…น๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Docker ์ž‘์—… ๋Œ€๊ธฐ์—ด์ด ์ƒˆ๋กœ์šด ํ˜ธ์ถœ์ด ๋ช‡ ๋ถ„ ๊ฑธ๋ฆฌ๋Š” ์ง€์ ๊นŒ์ง€ ์ฒœ์ฒœํžˆ ์ฑ„์›Œ์ง€๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์กฐ์ •ํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ ์ˆ˜๋ฅผ ์ ๊ฒŒ ์œ ์ง€ํ•˜๋ฉด ์ƒํ™ฉ์ด ์ข€ ๋” ๋‚˜์•„์ง‘๋‹ˆ๋‹ค. ๋‚˜๋Š” ์—ฌ์ „ํžˆ ๋ช‡ ๊ฐ€์ง€ ํŒจํ„ด์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

$ docker version
Client:
 Version:      1.8.2
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   44b3b67
 Built:        Mon Sep 14 23:56:40 UTC 2015
 OS/Arch:      linux/amd64

Server:
 Version:      1.8.2
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   44b3b67
 Built:        Mon Sep 14 23:56:40 UTC 2015
 OS/Arch:      linux/amd64

์—ฌ๊ธฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ฒŒ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค. ์ง€๋‚œ 2 ์ฃผ ๋™์•ˆ ๋ฌธ์ œ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ํ™•์ธํ•˜๋ ค๊ณ  ๋งˆ์Œ์„ ์žƒ์—ˆ์Šต๋‹ˆ๋‹ค.
๋™์‹œ์— ์‹œ์ž‘๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ์˜ ์–‘์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ณ ์ „์ ์ธ ๊ต์ฐฉ ์ƒํƒœ์˜ ๊ฒฝ์šฐ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

์ œ ๊ฒฝ์šฐ์—๋Š” ๋™์‹œ์— ์‹œ์ž‘๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋กœ ๊ฐ€๋“ ์ฐฌ ์†์— ๋ถˆ๊ณผํ–ˆ์Šต๋‹ˆ๋‹ค (์•„๋งˆ๋„ 3-5). ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋“ค ๋ชจ๋‘๋Š” ๋ฐ๋ชฌ์— ์ถ”๊ฐ€ ์ŠคํŠธ๋ ˆ์Šค๋ฅผ ์ค„ ์ˆ˜์žˆ๋Š” STDIN (๋„์ปค ์‹คํ–‰์˜)์„ ํ†ตํ•ด ํฐ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์„ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค.

@filex ๋Š” ๋น„์Šทํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 1.8.2๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๊ธฐ ์ „์—๋Š” ์ด๋Ÿฌํ•œ ๋™๊ฒฐ์— ์ง๋ฉดํ•˜์ง€ ์•Š์•˜์ง€๋งŒ

์˜ค๋Š˜ ๋‚˜๋Š” ์ด์™€ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๋งŒ๋‚œ๋‹ค-docker ps frozen, docker๋Š” 100 % cpu๋ฅผ ๋จน์Šต๋‹ˆ๋‹ค.
์ด์ œ ๋‚ด datadog-agent๊ฐ€์ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•ด ๋ฃจํ”„์—์„œ docker๋ฅผ ์š”์ฒญํ•œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

collect_container_size: true

๊ทธ๋ž˜์„œ ๋‚˜๋Š” ๋งค์šฐ ์–ด๋ ค์šด ์ž‘์—…์œผ๋กœ ๋ฌดํ•œ ๋ฃจํ”„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค (10k ์ด์ƒ์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค). ๋‚ด๊ฐ€ datadog docker ํ†ตํ•ฉ์„ ์ค‘์ง€ ํ•œ ํ›„ ์‹œ์Šคํ…œ runnig ok-docker ps๊ฐ€ ์ž‘๋™ํ•˜๊ณ  docker๋Š” 0 % cpu๋ฅผ ๋จน์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” cadvisor๋กœ ์‹คํ—˜ํ•˜๊ณ  ์žˆ๊ณ  ๊ทธ๊ฒƒ์€ ๋˜ํ•œ ๋„์ปค๋ฅผ ๋…น์ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹น์‹ ์˜ ๋ฐœ๊ฒฌ์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

2015 ๋…„ 10 ์›” 1 ์ผ ๋ชฉ์š”์ผ 00:23 Alexander Vagin [email protected] ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

์˜ค๋Š˜ ๋‚˜๋Š” ์ด์™€ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๋งŒ๋‚œ๋‹ค-docker ps frozen, docker๋Š” 100 % cpu๋ฅผ ๋จน์Šต๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์ด์ œ ๋‚ด datadog-agent๊ฐ€ ๋ฃจํ”„์—์„œ ๋„์ปค์—๊ฒŒ ๋ฌผ์–ด ๋ดค์Šต๋‹ˆ๋‹ค.
์ด ์˜ต์…˜์ด์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ :

collect_container_size : true

๊ทธ๋ž˜์„œ ๋‚˜๋Š” ๋งค์šฐ ์–ด๋ ค์šด ์ž‘์—…์œผ๋กœ ๋ฌดํ•œ ๋ฃจํ”„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค (๋‚˜๋Š” 10k ์ด์ƒ
์šฉ๊ธฐ). ๋ฐ์ดํ„ฐ ๋… ๋„์ปค ํ†ตํ•ฉ์„ ์ค‘์ง€ ํ•œ ํ›„ ์‹œ์Šคํ…œ ์‹คํ–‰ ํ™•์ธ-
docker ps๊ฐ€ ์ž‘๋™ํ•˜๊ณ  docker๋Š” 0 % cpu๋ฅผ ๋จน์Šต๋‹ˆ๋‹ค.

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/docker/docker/issues/13885#issuecomment -144546581.

@ohade ๋‚ด ๋„์ปค๋Š” ์—ฐ์ค‘ ๋ฌดํœด๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋งค๋ฒˆ 60-80 ๊ฐœ์˜ ์‹œ์ž‘๋œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋ฃจ์— ์•ฝ 1500 ๊ฐœ์˜ ์ƒˆ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ์ด ๋ถ€ํ•˜๋กœ ์ธํ•ด ๊ณ ์ •๋˜๊ณ  ๋„์ปค์—์„œ๋งŒ (์‹œ์Šคํ…œ์— ์—ฌ์œ  ๋ฉ”๋ชจ๋ฆฌ, io, cpu๊ฐ€ ๋งŽ์Œ) ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.
๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋กœ๊ทธ (/var/log/upstart/docker.logs)์—์„œ ๋‚ด ๋„์ปค์— ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋ˆ„๊ตฌ์ธ์ง€ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค :)
๋ฌด์—‡์„ ๋” ๋งํ•ฉ๋‹ˆ๊นŒ?

:) ์ €๋Š” ๊ทธ ์—์ด์ „ํŠธ๊ฐ€ ๋„์ปค์˜ ์ผ๋ถ€์ด๋ฉฐ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋„ˆ๋ฌด ํ™•์ธํ•˜๊ฑฐ๋‚˜ ์™ธ๋ถ€ ์—์ด์ „ํŠธ์ž…๋‹ˆ๊นŒ?

2015 ๋…„ 10 ์›” 1 ์ผ ๋ชฉ์š”์ผ 14:03 Alexander Vagin [email protected] ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

@ohade https://github.com/ohade ๋‚ด๋„ ์ปค๊ฐ€ ๋ฉˆ์ถ”์ง€ ์•Š๊ณ  ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
24/7. ๋งค๋ฒˆ 60-80 ๊ฐœ์˜ ์‹œ์ž‘๋œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์•ฝ 1500 ๊ฐœ์˜ ์ƒˆ๋กœ์šด
ํ•˜๋ฃจ์— ์šฉ๊ธฐ. ๊ทธ๋ž˜์„œ์ด ๋ถ€ํ•˜๋กœ๋ดค์„ ๋•Œ ์–ผ์–ด ๋ถ™๊ณ 
๋„์ปค์—์„œ๋งŒ (์‹œ์Šคํ…œ์— ๋งŽ์€ ์—ฌ์œ  ๋ฉ”๋ชจ๋ฆฌ, io, cpu๊ฐ€ ์žˆ์Œ), ๋‚˜๋Š”
์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.
๋ˆ„๊ตฐ๊ฐ€ ๋กœ๊ทธ์—์„œ ๋‚ด ๋„์ปค์— ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.
(/var/log/upstart/docker.logs). ๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋ˆ„๊ตฌ์ธ์ง€ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค :)
๋ฌด์—‡์„ ๋” ๋งํ•ฉ๋‹ˆ๊นŒ?

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/docker/docker/issues/13885#issuecomment -144697619.

@ohade ์•„๋‹ˆ, ๋„์ปค์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋„์ปค ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. Docker์— ๋Œ€ํ•œ ๊ณผ๋„ํ•œ ์š”์ฒญ์ด ์žˆ๋Š”์ง€ ํ™˜๊ฒฝ์„ ํ™•์ธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋„์ปค 1.8.2๋กœ ์—…๋ฐ์ดํŠธ ํ•œ ์ดํ›„์—๋„์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์— ๋Œ€ํ•œ ์ง„์ „์ด ์žˆ์Šต๋‹ˆ๊นŒ? ํ…Œ์ŠคํŠธ ์ธํ”„๋ผ์—์„œ ๋งŽ์€ ์ˆ˜ ๋˜๋Š” ์ˆ˜๋ช…์ด ์งง์€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํšŒ์ „ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ํ•˜๋ฃจ์— ํ•œ ๋ฒˆ ์ด์ƒ์ด ๋ฌธ์ œ๋ฅผ ๊ฒช๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

docker version
Client:
 Version:      1.8.2
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   0a8c2e3
 Built:        Thu Sep 10 19:12:52 UTC 2015
 OS/Arch:      linux/amd64
Server:
 Version:      1.8.2
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   0a8c2e3
 Built:        Thu Sep 10 19:12:52 UTC 2015
 OS/Arch:      linux/amd64

Linux ๋ฒ„์ „ :

$ uname -a
Linux grpc-interop1 3.16.0-0.bpo.4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u3~bpo70+1 (2015-08-08) x86_64 GNU/Linux

1.8.3์œผ๋กœ ์ด๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

# docker version 
Client:
 Version:      1.8.3
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   f4bf5c7
 Built:        Mon Oct 12 06:06:01 UTC 2015
 OS/Arch:      linux/amd64

Server:
 Version:      1.8.3
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   f4bf5c7
 Built:        Mon Oct 12 06:06:01 UTC 2015
 OS/Arch:      linux/amd64

๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ฒ˜์Œ์—๋Š” ๋ฉฐ์น ์— ํ•œ ๋ฒˆ, ๋‚˜์ค‘์—๋Š” ํ•˜๋ฃจ์— 10 ๋ฒˆ๊นŒ์ง€ ๊ณ„์† ์ถฉ๋Œํ–ˆ์Šต๋‹ˆ๋‹ค. ์žฅ์น˜ ๋งคํผ / ๋ฃจํ”„๋ฐฑ์ด์žˆ๋Š” CentOS 7์—์„œ AUFS๊ฐ€ ์ •๋ ฌ ๋œ Ubuntu 14.04 LTS๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. https://github.com/docker/docker/issues/12606#issuecomment -149659953

์ด kubernetes์˜ e2e ํ…Œ์ŠคํŠธ๋ฅผ ๋ฃจํ”„์—์„œ ์‹คํ–‰ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ์žฌํ˜„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ๋ชฌ์˜ ์ถ”์  ๋กœ๊ทธ๋ฅผ ์žก์•˜์Šต๋‹ˆ๋‹ค. ๊ต์ฐฉ ์ƒํƒœ๊ฐ€์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ๊ณ  ๋ฃจํ‹ด์ด semacquire ์— ๊ฑธ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.

goroutine 8956 [semacquire, 8 minutes]:
sync.(*Mutex).Lock(0xc208961650)
/usr/lib/go/src/sync/mutex.go:66 +0xd3
github.com/docker/docker/daemon.funcยท028(0xc20861c1e0, 0x0, 0x0)
/build/amd64-usr/var/tmp/portage/app-emulation/docker-1.7.1-r4/work/docker-1.7.1/.gopath/src/github.com/docker/docker/daemon/list.go:84 +0xfc
github.com/docker/docker/daemon.(*Daemon).Containers(0xc2080a50a0, 0xc209ec4820, 0x0, 0x0, 0x0, 0x0, 0x0)
/build/amd64-usr/var/tmp/portage/app-emulation/docker-1.7.1-r4/work/docker-1.7.1/.gopath/src/github.com/docker/docker/daemon/list.go:187 +0x917
github.com/docker/docker/api/server.(*Server).getContainersJSON(0xc208032540, 0xc3f700, 0x4, 0x7f214584f110, 0xc20a306d20, 0xc209d4a9c0, 0xc20a09fa10, 0x0, 0x0)
/build/amd64-usr/var/tmp/portage/app-emulation/docker-1.7.1-r4/work/docker-1.7.1/.gopath/src/github.com/docker/docker/api/server/server.go:562 +0x3ba
github.com/docker/docker/api/server.*Server.(github.com/docker/docker/api/server.getContainersJSON)ยทfm(0xc3f700, 0x4, 0x7f214584f110, 0xc20a306d20, 0xc209d4a9c0, 0xc20a09fa10, 0x0, 0x0)
/build/amd64-usr/var/tmp/portage/app-emulation/docker-1.7.1-r4/work/docker-1.7.1/.gopath/src/github.com/docker/docker/api/server/server.go:1526 +0x7b
github.com/docker/docker/api/server.funcยท008(0x7f214584f110, 0xc20a306d20, 0xc209d4a9c0)
/build/amd64-usr/var/tmp/portage/app-emulation/docker-1.7.1-r4/work/docker-1.7.1/.gopath/src/github.com/docker/docker/api/server/server.go:1501 +0xacd
net/http.HandlerFunc.ServeHTTP(0xc208033380, 0x7f214584f110, 0xc20a306d20, 0xc209d4a9c0)
/usr/lib/go/src/net/http/server.go:1265 +0x41
github.com/gorilla/mux.(*Router).ServeHTTP(0xc2080b1090, 0x7f214584f110, 0xc20a306d20, 0xc209d4a9c0)
/build/amd64-usr/var/tmp/portage/app-emulation/docker-1.7.1-r4/work/docker-1.7.1/vendor/src/github.com/gorilla/mux/mux.go:98 +0x297
net/http.serverHandler.ServeHTTP(0xc20804f080, 0x7f214584f110, 0xc20a306d20, 0xc209d4a9c0)
/usr/lib/go/src/net/http/server.go:1703 +0x19a
net/http.(*conn).serve(0xc208743680)
/usr/lib/go/src/net/http/server.go:1204 +0xb57
created by net/http.(*Server).Serve
/usr/lib/go/src/net/http/server.go:1751 +0x35e

์—ฌ๊ธฐ์— ์ „์ฒด ์ถ”์  :
https://gist.github.com/yifan-gu/ac0cbc2a59a7b8c3fe2d

์ตœ์‹  ๋ฒ„์ „์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ์ „ํžˆ 1.7.1๋กœ ๋‹ค๋ฅธ ์‹คํ–‰์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์ด๋ฒˆ์—๋Š” ๋” ํฅ๋ฏธ๋กœ์šด ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

goroutine 114 [syscall, 50 minutes]:
syscall.Syscall6(0x3d, 0x514, 0xc2084e74fc, 0x0, 0xc208499950, 0x0, 0x0, 0x44199c, 0x441e22, 0xb28140)
/usr/lib/go/src/syscall/asm_linux_amd64.s:46 +0x5
syscall.wait4(0x514, 0xc2084e74fc, 0x0, 0xc208499950, 0x90, 0x0, 0x0)
/usr/lib/go/src/syscall/zsyscall_linux_amd64.go:124 +0x79
syscall.Wait4(0x514, 0xc2084e7544, 0x0, 0xc208499950, 0x41a768, 0x0, 0x0)
/usr/lib/go/src/syscall/syscall_linux.go:224 +0x60
os.(*Process).wait(0xc2083e2b20, 0xc20848a860, 0x0, 0x0)
/usr/lib/go/src/os/exec_unix.go:22 +0x103
os.(*Process).Wait(0xc2083e2b20, 0xc2084e7608, 0x0, 0x0)
/usr/lib/go/src/os/doc.go:45 +0x3a
os/exec.(*Cmd).Wait(0xc2083c9a40, 0x0, 0x0)
/usr/lib/go/src/os/exec/exec.go:364 +0x23c
github.com/docker/libcontainer.(*initProcess).wait(0xc20822cf30, 0x1b6, 0x0, 0x0)
/build/amd64-usr/var/tmp/portage/app-emulation/docker-1.7.1-r4/work/docker-1.7.1/vendor/src/github.com/docker/libcontainer/process_linux.go:194 +0x3d
github.com/docker/libcontainer.Process.Wait(0xc208374a30, 0x1, 0x1, 0xc20839b000, 0x47, 0x80, 0x127e348, 0x0, 0x127e348, 0x0, ...)
/build/amd64-usr/var/tmp/portage/app-emulation/docker-1.7.1-r4/work/docker-1.7.1/vendor/src/github.com/docker/libcontainer/process.go:60 +0x11d
github.com/docker/libcontainer.Process.Waitยทfm(0xc2084e7ac8, 0x0, 0x0)
/build/amd64-usr/var/tmp/portage/app-emulation/docker-1.7.1-r4/work/docker-1.7.1/.gopath/src/github.com/docker/docker/daemon/execdriver/native/driver.go:164 +0x58
github.com/docker/docker/daemon/execdriver/native.(*driver).Run(0xc20813c230, 0xc20832a900, 0xc20822cc00, 0xc208374900, 0x0, 0x41a900, 0x0, 0x0)
/build/amd64-usr/var/tmp/portage/app-emulation/docker-1.7.1-r4/work/docker-1.7.1/.gopath/src/github.com/docker/docker/daemon/execdriver/native/driver.go:170 +0xa0a
github.com/docker/docker/daemon.(*Daemon).Run(0xc2080a5880, 0xc2080a21e0, 0xc20822cc00, 0xc208374900, 0x0, 0xc2084b6000, 0x0, 0x0)
/build/amd64-usr/var/tmp/portage/app-emulation/docker-1.7.1-r4/work/docker-1.7.1/.gopath/src/github.com/docker/docker/daemon/daemon.go:1068 +0x95
github.com/docker/docker/daemon.(*containerMonitor).Start(0xc20853d180, 0x0, 0x0)
/build/amd64-usr/var/tmp/portage/app-emulation/docker-1.7.1-r4/work/docker-1.7.1/.gopath/src/github.com/docker/docker/daemon/monitor.go:138 +0x457
github.com/docker/docker/daemon.*containerMonitor.Startยทfm(0x0, 0x0)
/build/amd64-usr/var/tmp/portage/app-emulation/docker-1.7.1-r4/work/docker-1.7.1/.gopath/src/github.com/docker/docker/daemon/container.go:732 +0x39
github.com/docker/docker/pkg/promise.funcยท001()
/build/amd64-usr/var/tmp/portage/app-emulation/docker-1.7.1-r4/work/docker-1.7.1/.gopath/src/github.com/docker/docker/pkg/promise/promise.go:8 +0x2f
created by github.com/docker/docker/pkg/promise.Go
/build/amd64-usr/var/tmp/portage/app-emulation/docker-1.7.1-r4/work/docker-1.7.1/.gopath/src/github.com/docker/docker/pkg/promise/promise.go:9 +0xfb

๋‚˜๋Š” ์—ฌ๊ธฐ์— ๊ทธ๋Ÿฐ ๊ณ  ๋ฃจํ‹ด์ด ๋งค๋‹ฌ๋ ค์žˆ๋Š” ๊ฒƒ์„ ๋ณด์•˜๋‹ค. Container.Start() ๊ฐ€ ์ค‘๋‹จ๋˜๋ฉด ์ปจํ…Œ์ด๋„ˆ ์ž ๊ธˆ์ด ํ•ด์ œ๋˜์ง€ ์•Š๊ณ  ๋‹ค์Œ docker ps ์ด ๋ชจ๋‘ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค. (์ด๊ฒƒ์€ v.1.9.0-rc1์—์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค)

๋‚˜๋Š” ํ™•์‹คํ•˜์ง€ ์™œ ๋‚˜๋Š” ๋น„๋ก Container.Start() ์ด ์ค‘๋‹จ์ด๊ฐ€ ์œ ์ผํ•œ ์›์ธ์ธ์ง€ docker ps ๋Š์Šต๋‹ˆ๋‹ค.

https://github.com/docker/docker/blob/v1.9.0-rc1/daemon/container.go#L243
https://github.com/docker/docker/blob/v1.9.0-rc1/daemon/container.go#L304
https://github.com/docker/docker/blob/v1.9.0-rc1/daemon/list.go#L113

์–ด์จŒ๋“  ๊ทธ๋Ÿฌํ•œ syscall ์ „์— ๋ฎคํ…์Šค๋ฅผ ๋ณด์œ ํ•˜์ง€ ์•Š๋„๋ก ๋…ธ๋ ฅํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ๋‚˜์—๊ฒŒ ์ค‘์š”ํ•œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. Docker์˜ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ด๊ฒƒ์„ ์กฐ์‚ฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

ํ•‘ @ LK4D4 @tiborvass ^^ https://github.com/docker/docker/issues/13885#issuecomment -149767470

docker 1.8.2์—์„œ ๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ๋ชฌ์— ์ผ์ƒ์ ์ธ ๋ˆ„์ถœ์ด๋‚˜ ๊ธฐํƒ€ ๋ˆ„์ถœ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋น ๋ฅธ ์ƒ์„ฑ / ์‚ญ์ œ ์ŠคํŠธ๋ ˆ์Šค๋ฅผ ๋ฐ›์œผ๋ฉด docker ps ์€ (๋Š”) ์™„๋ฃŒํ•˜๋Š” ๋ฐ ์˜์›ํžˆ ๊ฑธ๋ฆฌ๊ณ  ๊ฒฐ๊ตญ docker ๋ฐ๋ชฌ์€ ํœด์‹์„ ์žƒ๊ฒŒ๋ฉ๋‹ˆ๋‹ค.

1.8.2์™€ ๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” 1.9 rc2๋ฅผ ์‹œ๋„ํ–ˆ๊ณ  ๋น„์Šทํ•œ ๋ฌธ์ œ, ๋งŽ์€ ์ค‘๋‹จ ๋ฐ docker ๋ฐ๋ชฌ์„ ๋‹ค์‹œ ์‹œ์ž‘ํ–ˆ๋Š”๋ฐ ๋•Œ๋กœ๋Š” ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์ง€๋งŒ ๋” ์ž์ฃผ ๊ทธ๋ ‡์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋ฌด์–ธ๊ฐ€๊ฐ€ ์–ธ์ œ ๋ฉˆ์ถ”๋Š” ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ์ฃฝ๊ธฐ๊นŒ์ง€ ์–ผ๋งˆ๋‚˜ ๊ฑธ๋ฆฌ๋‚˜์š”?
๊ทธ๋ƒฅ ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ๋†”๋‘๋ฉด ๋‹ค์‹œ ๋Œ์•„ ์˜ค๋‚˜์š”?

์‹œ๊ฐ„์„ ์ •ํ•˜์ง€๋Š” ์•Š์•˜์ง€๋งŒ ์ ์–ด๋„ 20 ๋ถ„์ด ๋„˜์—ˆ๋‹ค ๊ณ  ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” docker-compose kill vs. stop์„ ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์œผ๋ฉฐ ๋” ์ข‹์•„ ๋ณด์ด์ง€๋งŒ ์‹œ๊ฐ„์ด ์•Œ๋ ค์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋กœ๊ทธ์—์„œ๋„ ๋ถ„๋ช…ํ•œ ๊ฒƒ์ด ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

centos 7.1, docker 1.8.2์—์„œ๋„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์ง๊ฐ์€ ๊ทธ๊ฒƒ์ด ๋ฐ์ดํ„ฐ ๋งคํผ / ๋ฃจํ”„๋ฐฑ ๋ฌธ์ œ๋ผ๊ณ  ๋งํ•ด์ค๋‹ˆ๋‹ค.

๋‹ค์Œ ๋ชฉ๋ก์€ ์ด๊ฒƒ์„ ์‹œ๋„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค : https://github.com/projectatomic/docker-storage-setup (h / t @ibuildthecloud )

๋˜ํ•œ ์ด๊ฒƒ์„ ๊ฒฝํ—˜ํ•˜๊ณ  ๋ฌด๊ฑฐ์šด ๋ถ€ํ•˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

Centos 7

Docker ๋ฒ„์ „

Client:
 Version:      1.8.2
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   0a8c2e3
 Built:        Thu Sep 10 19:08:45 UTC 2015
 OS/Arch:      linux/amd64

Server:
 Version:      1.8.2
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   0a8c2e3
 Built:        Thu Sep 10 19:08:45 UTC 2015
 OS/Arch:      linux/amd64


Docker ์ •๋ณด

Containers: 4
Images: 40
Storage Driver: devicemapper
 Pool Name: docker-202:1-25190844-pool
 Pool Blocksize: 65.54 kB
 Backing Filesystem: xfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 2.914 GB
 Data Space Total: 107.4 GB
 Data Space Available: 81.05 GB
 Metadata Space Used: 4.03 MB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.143 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.93-RHEL7 (2015-01-28)
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.10.0-123.8.1.el7.x86_64
Operating System: CentOS Linux 7 (Core)
CPUs: 4
Total Memory: 6.898 GiB
Name: ip-10-50-185-203
ID: EOMR:4G7Y:7H6O:QOXE:WW4Z:3R2G:HLI4:ZMXY:GKF3:YKSK:TIHC:MHZF
[centos@ip-10-50-185-203 ~]$ uname -a
Linux ip-10-50-185-203 3.10.0-123.8.1.el7.x86_64 #1 SMP Mon Sep 22 19:06:58 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

docker ์ด๋ฏธ์ง€๋Š” ์ž‘๋™ํ•˜์ง€๋งŒ docker ps๊ฐ€ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.

strace ์ถœ๋ ฅ์˜ ๋งˆ์ง€๋ง‰ ๋ช‡ ์ค„ :

clock_gettime(CLOCK_MONOTONIC, {2393432, 541406232}) = 0
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
socket(PF_LOCAL, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3
setsockopt(3, SOL_SOCKET, SO_BROADCAST, [1], 4) = 0
connect(3, {sa_family=AF_LOCAL, sun_path="/run/systemd/journal/socket"}, 30) = 0
epoll_create1(EPOLL_CLOEXEC)            = 4
epoll_ctl(4, EPOLL_CTL_ADD, 3, {EPOLLIN|EPOLLOUT|EPOLLRDHUP|EPOLLET, {u32=2856433208, u64=139812631852600}}) = 0
getsockname(3, {sa_family=AF_LOCAL, NULL}, [2]) = 0
getpeername(3, {sa_family=AF_LOCAL, sun_path="/run/systemd/journal/socket"}, [30]) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 542834304}) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 542897330}) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 543010460}) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 543090332}) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 543157219}) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 543208557}) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 543306537}) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 543364486}) = 0
clock_gettime(CLOCK_REALTIME, {1446718224, 108316907}) = 0
mmap(0xc208100000, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xc208100000
mmap(0xc207fe0000, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xc207fe0000
clock_gettime(CLOCK_MONOTONIC, {2393432, 543814528}) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 543864338}) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 543956865}) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 544018495}) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 544402150}) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 544559595}) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 544607443}) = 0
clock_gettime(CLOCK_REALTIME, {1446718224, 109474379}) = 0
epoll_wait(4, {{EPOLLOUT, {u32=2856433208, u64=139812631852600}}}, 128, 0) = 1
clock_gettime(CLOCK_MONOTONIC, {2393432, 544968692}) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 545036728}) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 545095771}) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 545147947}) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 545199057}) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 545251039}) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 545308858}) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 545756723}) = 0
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
clock_gettime(CLOCK_REALTIME, {1446718224, 112187655}) = 0
clock_gettime(CLOCK_REALTIME, {1446718224, 112265169}) = 0
clock_gettime(CLOCK_REALTIME, {1446718224, 112345304}) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 547677486}) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 547743669}) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 547801800}) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 547864215}) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 547934364}) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 548042167}) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 548133574}) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 548209405}) = 0
clock_gettime(CLOCK_REALTIME, {1446718224, 113124453}) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 548493023}) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 548566472}) = 0
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
futex(0xc208020ed8, FUTEX_WAKE, 1)      = 1
clock_gettime(CLOCK_MONOTONIC, {2393432, 549410983}) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 549531015}) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 549644468}) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 549713961}) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 549800266}) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 549864335}) = 0
ioctl(0, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
stat("/root/.docker/config.json", 0xc208052900) = -1 ENOENT (No such file or directory)
stat("/root/.dockercfg", 0xc208052990)  = -1 ENOENT (No such file or directory)
clock_gettime(CLOCK_REALTIME, {1446718224, 115099477}) = 0
clock_gettime(CLOCK_REALTIME, {1446718224, 115153125}) = 0
socket(PF_LOCAL, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 5
setsockopt(5, SOL_SOCKET, SO_BROADCAST, [1], 4) = 0
connect(5, {sa_family=AF_LOCAL, sun_path="/var/run/docker.sock"}, 23) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 550603891}) = 0
clock_gettime(CLOCK_REALTIME, {1446718224, 115517051}) = 0
epoll_ctl(4, EPOLL_CTL_ADD, 5, {EPOLLIN|EPOLLOUT|EPOLLRDHUP|EPOLLET, {u32=2856433016, u64=139812631852408}}) = 0
getsockname(5, {sa_family=AF_LOCAL, NULL}, [2]) = 0
getpeername(5, {sa_family=AF_LOCAL, sun_path="/var/run/docker.sock"}, [23]) = 0
clock_gettime(CLOCK_MONOTONIC, {2393432, 550961223}) = 0
read(5, 0xc208131000, 4096)             = -1 EAGAIN (Resource temporarily unavailable)
clock_gettime(CLOCK_MONOTONIC, {2393432, 551138398}) = 0
write(5, "GET /v1.20/containers/json HTTP/"..., 108) = 108
epoll_wait(4, {{EPOLLOUT, {u32=2856433016, u64=139812631852408}}}, 128, 0) = 1
epoll_wait(4, 

@chbatey ๋Œ“๊ธ€์„ ํŽธ์ง‘ํ•˜๊ณ  docker version ์ถœ๋ ฅ์„ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜์™€ ๋‚ด ์–ผ๊ตด์€ ๋นจ๊ฐ›๊ฒŒ ์น ํ•ด. ๋””๋ฒ„๊ทธ์—์„œ ๋ฐ๋ชฌ์„ ์‹คํ–‰ํ•˜๊ณ  cifs ๋งˆ์šดํŠธ๊ฐ€ ์ค‘๋‹จ ๋œ ๊ณต์œ  ๋ณผ๋ฅจ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ผ๋‹จ ๋‚ด๊ฐ€ ๊ทธ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•˜๋ฉด ์ด์ œ๋Š” ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

@pspierce ๋ฌธ์ œ ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ์‹ ๊ณ  ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๋‚˜๋Š” ์ด๊ฒƒ์ด 1.9์—์„œ ์—ฌ์ „ํžˆ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”์ง€ ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ centos 7.1์—์„œ 1.8.2๋กœ์ด ํ˜„์ƒ์ด ์ž์ฃผ ๋ฐœ์ƒํ•˜์ง€๋งŒ ์ดํƒˆ๋ฅ ์ด ๋†’์€ ํ˜ธ์ŠคํŠธ์—์„œ๋งŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค (~ 2,100 ์ปจํ…Œ์ด๋„ˆ / ์‹œ๊ฐ„). ๋™์ผํ•˜๊ฒŒ ๊ตฌ์„ฑ๋œ ํ˜ธ์ŠคํŠธ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ ๋ณผ๋ฅจ (์‹œ๊ฐ„๋‹น ์ตœ๋Œ€ 300 ๊ฐœ ์ปจํ…Œ์ด๋„ˆ)์˜ ํ˜ธ์ŠคํŠธ์— ์˜ํ–ฅ์„์ฃผ์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋งŽ์€ ๋™์‹œ ์ž‘์—…์— ์˜ํ•ด ํŠธ๋ฆฌ๊ฑฐ๋˜๋Š” ์ผ์ข…์˜ ๊ต์ฐฉ ์ƒํƒœ ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ~ / 6 ์‹œ๊ฐ„์˜ ๋†’์€ ์ดํƒˆ ํ™œ๋™์„ ๋ด…๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ์šฐ๋ฆฌ๊ฐ€ ์ฐพ์€ ์œ ์ผํ•œ ํ•ด๊ฒฐ์ฑ…์€ '/ var / lib / docker / containers'๋ฅผ ์‹คํ–‰ํ•˜๊ณ  '/ var / lib / docker / containers'

์šฐ๋ฆฌ๋Š” ์ด๋ฒˆ ์ฃผ์— 1.9๋ฅผ ์‹œ๋„ํ•˜๊ณ  ๊ทธ๊ฒƒ์ด ์ „ํ˜€ ๋„์›€์ด๋˜๋Š”์ง€ ๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค (์†๊ฐ€๋ฝ์ด ๊ต์ฐจํ–ˆ์Šต๋‹ˆ๋‹ค!). fwiw, ์šฐ๋ฆฌ๋Š” 1.6.2์—์„œ ์ด๋Ÿฌํ•œ ์ ์ง„์ ์ธ ์‘๋‹ต ์„ฑ ์ €ํ•˜ (๋ฐ ์ตœ์ข… ๊ต์ฐฉ ์ƒํƒœ)๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์„ค์ • :

PRODUCTION [[email protected] ~]$ docker -D info
Containers: 8
Images: 41
Storage Driver: overlay
 Backing Filesystem: xfs
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 4.3.0-1.el7.elrepo.x86_64
Operating System: CentOS Linux 7 (Core)
CPUs: 4
Total Memory: 7.796 GiB
Name: cc-docker01.prod.iad01.treehouse
ID: AB4S:SO4Z:AEOS:MC3H:XPRV:SIH4:VE2N:ELYX:TA5S:QQWP:WDAP:DUKE
Username: xxxxxxxxxxxxxx
Registry: https://index.docker.io/v1/
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled

PRODUCTION [[email protected] ~]$ docker -D version
Client:
 Version:      1.8.2
 API version:  1.20
 Package Version: docker-1.8.2-7.el7.centos.x86_64
 Go version:   go1.4.2
 Git commit:   bb472f0/1.8.2
 Built:        
 OS/Arch:      linux/amd64

Server:
 Version:      1.8.2
 API version:  1.20
 Package Version: 
 Go version:   go1.4.2
 Git commit:   bb472f0/1.8.2
 Built:        
 OS/Arch:      linux/amd64

๋˜ํ•œ ์šฐ๋ถ„ํˆฌ 14.04์—์„œ 8 ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ ๋งŒ ์‹คํ–‰๋˜์ง€๋งŒ ๋””์Šคํฌ ๋ฐ CPU ๋ถ€ํ•˜๊ฐ€ ๋†’์Šต๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋Š” ์™„๋ฃŒ๋˜๋ฉด ๋‹ค์‹œ ์‹œ์ž‘๋˜๋ฏ€๋กœ ํ•ญ์ƒ 8 ๊ฐœ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๋ฐ๋ชฌ์€ ์ˆ˜๋ฐฑ์—์„œ ์ˆ˜์ฒœ ๊ฐœ์˜ ๋ˆ„์  ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ํ›„์— ์ฃฝ์–ด ๊ฐ€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฃจํ”„๋ฐฑ์„ ์‹คํ–‰ํ•  ๋•Œ ๋ฐ๋ชฌ์ด ๋ฉˆ์ถ”๋Š” ๊ฒƒ์„ ๋ณด์ง€ ๋ชปํ–ˆ์ง€๋งŒ ์”ฌํ’€์„ ์‚ฌ์šฉํ•˜์—ฌ ์ง€๋‚œ ๋ฉฐ์น  ๋™์•ˆ ๋‘ ๋ฒˆ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ 64GB RAM์ด์žˆ๋Š” 40 ์ฝ”์–ด ์›Œํฌ ์Šคํ…Œ์ด์…˜์— ์žˆ์Šต๋‹ˆ๋‹ค.

Docker ๋ฒ„์ „ :
~ $ ๋„์ปค ๋ฒ„์ „
๊ณ ๊ฐ:
๋ฒ„์ „ : 1.9.1
API ๋ฒ„์ „ : 1.21
Go ๋ฒ„์ „ : go1.4.2
ํž˜๋‚ด ์ปค๋ฐ‹ : a34a1d5
๊ฑด์ถ• : 2015 ๋…„ 11 ์›” 20 ์ผ ๊ธˆ์š”์ผ 13:12:04 UTC
OS / ์•„์น˜ : linux / amd64

์„ฌ๊ธฐ๋Š” ์‚ฌ๋žŒ:
๋ฒ„์ „ : 1.9.1
API ๋ฒ„์ „ : 1.21
Go ๋ฒ„์ „ : go1.4.2
ํž˜๋‚ด ์ปค๋ฐ‹ : a34a1d5
๊ฑด์ถ• : 2015 ๋…„ 11 ์›” 20 ์ผ ๊ธˆ์š”์ผ 13:12:04 UTC
OS / ์•„์น˜ : linux / amd64

--- Docker ์ด๋ฏธ์ง€๊ฐ€ ์ž‘๋™ํ•˜์ง€๋งŒ docker ps๊ฐ€ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค. ๋„์ปค ์ •๋ณด๋„ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ docker ps์— ๋Œ€ํ•œ strace์˜ ๋์ž…๋‹ˆ๋‹ค.
์†Œ์ผ“ (PF_LOCAL, SOCK_STREAM | SOCK_CLOEXEC | SOCK_NONBLOCK, 0) = 3
setsockopt (3, SOL_SOCKET, SO_BROADCAST, [1], 4) = 0
connect (3, {sa_family = AF_LOCAL, sun_path = "/ var / run / docker.sock"}, 23) = 0
epoll_create1 (EPOLL_CLOEXEC) = 4
epoll_ctl (4, EPOLL_CTL_ADD, 3, {EPOLLIN | EPOLLOUT | EPOLLRDHUP | EPOLLET, {u32 = 3565442144, u64 = 140517715498080}}) = 0
getsockname (3, {sa_family = AF_LOCAL, NULL}, [2]) = 0
getpeername (3, {sa_family = AF_LOCAL, sun_path = "/ var / run / docker.sock"}, [23]) = 0
read (3, 0xc208506000, 4096) = -1 EAGAIN (์ผ์‹œ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜์—†๋Š” ๋ฆฌ์†Œ์Šค)
write (3, "GET /v1.21/containers/json HTTP /"..., 108) = 108
epoll_wait (4, {{EPOLLOUT, {u32 = 3565442144, u64 = 140517715498080}}}, 128, 0) = 1
epoll_wait (4,

1.7.1 ๋ฏธ๋งŒ์ด์—ˆ๊ณ  ๋งค์šฐ ํšจ๊ณผ์ ์œผ๋กœ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค (1.7.1 ๋ฏธ๋งŒ์—์„œ ๋ช‡ ์‹œ๊ฐ„๋งˆ๋‹ค ํ™•์ธํ–ˆ์ง€๋งŒ 1 ๊ฐœ์›” ์ด์ƒ์˜ ์‚ฌํ›„ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค).

udevadm control --timeout=300

RHEL7.1์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋‹ค๋ฅธ ๋ณ€๊ฒฝ์—†์ด Docker 1.8.2๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ–ˆ๊ณ  ๋ช‡ ์‹œ๊ฐ„ ๋‚ด์— ์•ฑ์ด ์ž ๊ฒผ์Šต๋‹ˆ๋‹ค. Strace :

``
[pid 4200] open ( "/ sys / fs / cgroup / freezer / system.slice / docker-bcb29dad6848d250df7508f85e78ca9b83d40f0e22011869d89a176e27b7ef87.scope / freezer.state", O_RDONLY | O_CLOEXEC) = 36
[pid 4200] fstat (36, {st_mode = S_IFREG | 0644, st_size = 0, ...}) = 0
[pid 4239] <... ์žฌ๊ฐœ ์„ ํƒ>) = 0 (์‹œ๊ฐ„ ์ดˆ๊ณผ)
[pid 4200] ์ฝ๊ธฐ (36, [pid 4239] select (0, NULL, NULL, NULL, {0, 20} [pid 4200] <... ์ฝ๊ธฐ ์žฌ๊ฐœ ๋จ> "FREEZINGn", 512) = 9
[pid 4200] read (36, "", 1527) = 0
[pid 4200] close (36) = 0
[pid 4200] futex (0x1778e78, FUTEX_WAKE, 1 [pid 4239] <... ์žฌ๊ฐœ ์„ ํƒ>) = 0 (์‹œ๊ฐ„ ์ดˆ๊ณผ)
[pid 5252] <... ํ“จ ํ…์Šค ์žฌ๊ฐœ ๋จ>) = 0
[pid 4200] <... futex ์žฌ๊ฐœ ๋จ>) = 1
[pid 5252] futex (0xc2085daed8, FUTEX_WAIT, 0, NULL [pid 4239] select (0, NULL, NULL, NULL, {0, 20} [pid 4200] futex (0xc2085daed8, FUTEX_WAKE, 1 [pid 5252] <... futex๊ฐ€ ์žฌ๊ฐœ ๋จ>) = -1 EAGAIN (์ผ์‹œ์ ์œผ๋กœ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ)
[pid 4200] <... futex ์žฌ๊ฐœ ๋จ>) = 0
[pid 5252] epoll_wait (4, [pid 4200] futex (0x1778e78, FUTEX_WAIT, 0, {0, 958625} [pid 5252] <... epoll_wait resumed> {}, 128, 0) = 0
[pid 5252] futex (0xc2085daed8, FUTEX_WAIT, 0, NULL [pid 4239] <... ์žฌ๊ฐœ ์„ ํƒ>) = 0 (์‹œ๊ฐ„ ์ดˆ๊ณผ)


์šฐ๋ฆฌ๋Š” ๋™์ผํ•œ ๋ฌธ์ œ์— ์ง๋ฉดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค https://github.com/giantswarm/giantswarm/issues/289

์—…๋ฐ์ดํŠธ : ์ธํ„ฐ๋ฆฌ๋ธŒ ๋œ docker run / docker rm ์— ๋Œ€ํ•œ ๋‚ด ๊ฐ€์„ค์ด ๋ถˆ๊ฑด์ „ ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋™์‹œ์— ๋งŽ์€ docker run ์‹œ๋„ํ–ˆ์ง€๋งŒ ๋™์ž‘์„ ํŠธ๋ฆฌ๊ฑฐํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ dm thinpool๋กœ ์ „ํ™˜ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ๋„์›€์ด๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‚ด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๋‹จ์ˆœํžˆ ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ "๋™์ผ"์‹œ๊ฐ„์— ์‹œ์ž‘๋˜์ง€ ์•Š๋„๋กํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์‹œ์ž‘ ์‚ฌ์ด์— ์ตœ์†Œ ~ 10-30 ์ดˆ ๊ฐ„๊ฒฉ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ๋ฐ๋ชฌ์€ 2 ์ฃผ ์ด์ƒ ๋ฌธ์ œ์—†์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ ์ข…๋ฃŒ.

ํ™•์ธ์„ ํ•˜๋‚˜ ๋” ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด 1.9.0์—์„œ์ด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ•œ ๋ฒˆ์— ์ตœ๋Œ€ 8 ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ (์ฝ”์–ด ๋‹น 1 ๊ฐœ)๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ์‹œ๊ฐ„๋‹น 40 ๊ฐœ๋ฅผ ๋„˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์›๋ณธ ๋ณด๊ณ ์„œ์˜ ๊ณตํ†ต์  ์ค‘ ํ•˜๋‚˜๋Š” docker run ๋ฐ docker rm -f ์ธํ„ฐ๋ฆฌ๋ธŒ ํ˜ธ์ถœ๋„ ๋ช‡ ๋ฒˆ ์ˆ˜ํ–‰ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚ด ์ง๊ฐ์€ ๊ต์ฐฉ ์ƒํƒœ๋ฅผ ์œ ๋ฐœํ•˜๋Š” ๋™์‹œ ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ ๋ฐ ์‚ญ์ œ์˜ ์กฐํ•ฉ์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

$ docker version
Client:
 Version:      1.9.0
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   76d6bc9
 Built:        Tue Nov  3 18:00:05 UTC 2015
 OS/Arch:      linux/amd64

Server:
 Version:      1.9.0
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   76d6bc9
 Built:        Tue Nov  3 18:00:05 UTC 2015
 OS/Arch:      linux/amd64
$ docker -D info
Containers: 10
Images: 119
Server Version: 1.9.0
Storage Driver: devicemapper
 Pool Name: docker-253:1-2114818-pool
 Pool Blocksize: 65.54 kB
 Base Device Size: 107.4 GB
 Backing Filesystem: xfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 7.234 GB
 Data Space Total: 107.4 GB
 Data Space Available: 42.64 GB
 Metadata Space Used: 10.82 MB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.137 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Deferred Deletion Enabled: false
 Deferred Deleted Device Count: 0
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.93-RHEL7 (2015-01-28)
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.10.0-229.20.1.el7.x86_64
Operating System: CentOS Linux 7 (Core)
CPUs: 8
Total Memory: 15.51 GiB

@mjsalinger ์šฐ๋ฆฌ๋Š” ๋‹น์‹ ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ, ๊ฐ™์€ ์„ค์ •์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ ํ–ˆ์Šต๋‹ˆ๊นŒ?

์—ฌ๊ธฐ์— ๊ฐ™์€ ๋ฌธ์ œ

~ # docker info
Containers: 118
Images: 2239
Storage Driver: overlay
 Backing Filesystem: extfs
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 4.2.2-coreos-r1
Operating System: CoreOS 835.8.0
CPUs: 16
Total Memory: 29.44 GiB
Username: util-user
Registry: https://index.docker.io/v1/
Client:
 Version:      1.8.3
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   cedd534-dirty
 Built:        Tue Dec  1 02:00:58 UTC 2015
 OS/Arch:      linux/amd64

Server:
 Version:      1.8.3
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   cedd534-dirty
 Built:        Tue Dec  1 02:00:58 UTC 2015
 OS/Arch:      linux/amd64

์šฐ๋ฆฌ์˜ ๋กœ๊ทธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ๋“ค๋กœ ๊ฐ€๋“ ์ฐจ ์žˆ์Šต๋‹ˆ๋‹ค.

time="2016-01-08T21:38:34.735146159Z" level=error msg="Failed to compute size of container rootfs e4565ff148266389cbf70af9f22f9c62aa255bacaec0925a72eab5d0dca9da5f: Error getting container e4565ff148266389cbf70af9f22f9c62aa255bacaec0925a72eab5d0dca9da5f from driver overlay: stat /var/lib/docker/overlay/e4565ff148266389cbf70af9f22f9c62aa255bacaec0925a72eab5d0dca9da5f: no such file or directory"

๊ณผ

time="2016-01-08T21:42:34.846701169Z" level=error msg="Handler for GET /containers/json returned error: write unix @: broken pipe"
time="2016-01-08T21:42:34.846717812Z" level=error msg="HTTP Error" err="write unix @: broken pipe" statusCode=500

๊ทธ๋Ÿฌ๋‚˜ ์–ด๋–ค ๊ฒƒ์ด ๊ต์ˆ˜ํ˜• ๋ฌธ์ œ์™€ ๊ด€๋ จ์ด ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

SIGUSR1์„ ๋ฐ๋ชฌ์— ์ „์†กํ•˜์—ฌ ๋ชจ๋“  ๋„์ปค ๊ณ  ๋ฃจํ‹ด ์Šคํƒ์˜ ๋คํ”„๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฒƒ์ด ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ..

@whosthatknocking ์€ ๋‚ด๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ชฐ๋ž์Šต๋‹ˆ๋‹ค.

time="2016-01-08T22:20:16.181468178Z" level=info msg="=== BEGIN goroutine stack dump ===
goroutine 11 [running]:
github.com/docker/docker/pkg/signal.DumpStacks()
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/.gopath/src/github.com/docker/docker/pkg/signal/trap.go:60 +0x7a
github.com/docker/docker/daemon.funcยท025()
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/.gopath/src/github.com/docker/docker/daemon/debugtrap_unix.go:18 +0x6d
created by github.com/docker/docker/daemon.setupDumpStackTrap
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/.gopath/src/github.com/docker/docker/daemon/debugtrap_unix.go:20 +0x18e

goroutine 1 [chan receive, 33262 minutes]:
main.(*DaemonCli).CmdDaemon(0xc20807d1a0, 0xc20800a020, 0x1, 0x1, 0x0, 0x0)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/docker/daemon.go:289 +0x1781
reflect.callMethod(0xc208142060, 0xc20842fce0)
    /usr/lib/go/src/reflect/value.go:605 +0x179
reflect.methodValueCall(0xc20800a020, 0x1, 0x1, 0x1, 0xc208142060, 0x0, 0x0, 0xc208142060, 0x0, 0x452ecf, ...)
    /usr/lib/go/src/reflect/asm_amd64.s:29 +0x36
github.com/docker/docker/cli.(*Cli).Run(0xc20810df80, 0xc20800a010, 0x2, 0x2, 0x0, 0x0)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/.gopath/src/github.com/docker/docker/cli/cli.go:89 +0x38e
main.main()
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/docker/docker.go:69 +0x428

goroutine 5 [syscall]:
os/signal.loop()
    /usr/lib/go/src/os/signal/signal_unix.go:21 +0x1f
created by os/signal.initยท1
    /usr/lib/go/src/os/signal/signal_unix.go:27 +0x35

goroutine 17 [syscall, 33262 minutes, locked to thread]:
runtime.goexit()
    /usr/lib/go/src/runtime/asm_amd64.s:2232 +0x1

goroutine 13 [IO wait, 33262 minutes]:
net.(*pollDesc).Wait(0xc2081eb100, 0x72, 0x0, 0x0)
    /usr/lib/go/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc2081eb1
00, 0x0, 0x0)
    /usr/lib/go/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).readMsg(0xc2081eb0a0, 0xc2081bd9a0, 0x10, 0x10, 0xc208440020, 0x1000, 0x1000, 0xffffffffffffffff, 0x0, 0x0, ...)
    /usr/lib/go/src/net/fd_unix.go:296 +0x54e
net.(*UnixConn).ReadMsgUnix(0xc2080384b8, 0xc2081bd9a0, 0x10, 0x10, 0xc208440020, 0x1000, 0x1000, 0x51, 0xc2081bd6d4, 0x4, ...)
    /usr/lib/go/src/net/unixsock_posix.go:147 +0x167
github.com/godbus/dbus.(*oobReader).Read(0xc208440000, 0xc2081bd9a0, 0x10, 0x10, 0xc208440000, 0x0, 0x0)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/vendor/src/github.com/godbus/dbus/transport_unix.go:21 +0xc5
io.ReadAtLeast(0x7f9ad52e9310, 0xc208440000, 0xc2081bd9a0, 0x10, 0x10, 0x10, 0x0, 0x0, 0x0)
    /usr/lib/go/src/io/io.go:298 +0xf1
io.ReadFull(0x7f9ad52e9310, 0xc208440000, 0xc2081bd9a0, 0x10, 0x10, 0x51, 0x0, 0x0)
    /usr/lib/go/src/io/io.go:316 +0x6d
github.com/godbus/dbus.(*unixTransport).ReadMessage(0xc2081df900, 0xc208115170, 0x0, 0x0)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/vendor/src/github.com/godbus/dbus/transport_unix.go:85 +0x1bf
github.com/godbus/dbus.(*Conn).inWorker(0xc208418480)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/vendor/src/github.com/godbus/dbus/conn.go:248 +0x58
created by github.com/godbus/dbus.(*Conn).Auth
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/vendor/src/github.com/godbus/dbus/auth.go:118 +0xe84

goroutine 10 [chan receive, 33262 minutes]:
github.com/docker/docker/api/server.(*Server).ServeApi(0xc208037800, 0xc20807d3d0, 0x1, 0x1, 0x0, 0x0)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/.gopath/src/github.com/docker/docker/api/server/server.go:111 +0x74f
main.funcยท007()
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/docker/daemon.go:239 +0x5b
created by main.(*DaemonCli).CmdDaemon
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-
1.8.3/work/docker-1.8.3/docker/daemon.go:245 +0xce9

goroutine 14 [chan receive, 33262 minutes]:
github.com/godbus/dbus.(*Conn).outWorker(0xc208418480)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/vendor/src/github.com/godbus/dbus/conn.go:370 +0x58
created by github.com/godbus/dbus.(*Conn).Auth
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/vendor/src/github.com/godbus/dbus/auth.go:119 +0xea1

goroutine 15 [chan receive, 33262 minutes]:
github.com/docker/libnetwork/iptables.signalHandler()
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/vendor/src/github.com/docker/libnetwork/iptables/firewalld.go:92 +0x57
created by github.com/docker/libnetwork/iptables.FirewalldInit
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/vendor/src/github.com/docker/libnetwork/iptables/firewalld.go:48 +0x185

goroutine 50 [chan receive, 33262 minutes]:
database/sql.(*DB).connectionOpener(0xc2081aa0a0)
    /usr/lib/go/src/database/sql/sql.go:589 +0x4c
created by database/sql.Open
    /usr/lib/go/src/database/sql/sql.go:452 +0x31c

goroutine 51 [IO wait]:
net.(*pollDesc).Wait(0xc2081dcd10, 0x72, 0x0, 0x0)
    /usr/lib/go/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc2081dcd10, 0x0, 0x0)
    /usr/lib/go/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).readMsg(0xc2081dccb0, 0xc20b38c970, 0x10, 0x10, 0xc20bf3b220, 0x1000, 0x1000, 0xffffffffffffffff, 0x0, 0x0, ...)
    /usr/lib/go/src/net/fd_unix.go:296 +0x54e
net.(*UnixConn).ReadMsgUnix(0xc208038618, 0xc20b38c970, 0x10, 0x10, 0xc20bf3b220, 0x1000, 0x1000, 0x35, 0xc20b38c784, 0x4, ...)
    /usr/lib/go/src/net/unixsock_posix.go:147 +0x167
github.com/godbus/dbus.(*oobReader).Read(0xc20bf3b200, 0xc20b38c970, 0x10, 0x10, 0xc20bf3b200, 0x0, 0x0)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/vendor/src/github.com/godbus/dbus/transport_unix.go:21 +0xc5
io.ReadAtLeast(0x7f9ad52e9310, 0xc20bf3b200, 0x
c20b38c970, 0x10, 0x10, 0x10, 0x0, 0x0, 0x0)
    /usr/lib/go/src/io/io.go:298 +0xf1
io.ReadFull(0x7f9ad52e9310, 0xc20bf3b200, 0xc20b38c970, 0x10, 0x10, 0x35, 0x0, 0x0)
    /usr/lib/go/src/io/io.go:316 +0x6d
github.com/godbus/dbus.(*unixTransport).ReadMessage(0xc208176950, 0xc208471470, 0x0, 0x0)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/vendor/src/github.com/godbus/dbus/transport_unix.go:85 +0x1bf
github.com/godbus/dbus.(*Conn).inWorker(0xc2080b0fc0)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/vendor/src/github.com/godbus/dbus/conn.go:248 +0x58
created by github.com/godbus/dbus.(*Conn).Auth
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/vendor/src/github.com/godbus/dbus/auth.go:118 +0xe84

goroutine 52 [chan receive]:
github.com/godbus/dbus.(*Conn).outWorker(0xc2080b0fc0)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/vendor/src/github.com/godbus/dbus/conn.go:370 +0x58
created by github.com/godbus/dbus.(*Conn).Auth
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/vendor/src/github.com/godbus/dbus/auth.go:119 +0xea1

goroutine 53 [chan receive]:
github.com/coreos/go-systemd/dbus.funcยท001()
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/vendor/src/github.com/coreos/go-systemd/dbus/subscription.go:70 +0x64
created by github.com/coreos/go-systemd/dbus.(*Conn).initDispatch
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/vendor/src/github.com/coreos/go-systemd/dbus/subscription.go:94 +0x11c

goroutine 54 [chan receive]:
github.com/docker/docker/daemon.(*statsCollector).run(0xc20844dad0)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/.gopath/src/github.com/docker/docker/daemon/stats_collector_unix.go:91 +0xb2
created by github.com/docker/docker/daemon.newStatsCollector
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/wo
rk/docker-1.8.3/.gopath/src/github.com/docker/docker/daemon/stats_collector_unix.go:31 +0x116

goroutine 55 [chan receive, 2 minutes]:
github.com/docker/docker/daemon.(*Daemon).execCommandGC(0xc2080908c0)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/.gopath/src/github.com/docker/docker/daemon/exec.go:256 +0x8c
created by github.com/docker/docker/daemon.NewDaemon
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/.gopath/src/github.com/docker/docker/daemon/daemon.go:736 +0x2358

goroutine 774 [semacquire, 33261 minutes]:
sync.(*Cond).Wait(0xc208460030)
    /usr/lib/go/src/sync/cond.go:62 +0x9e
io.(*pipe).read(0xc208460000, 0xc208c0bc00, 0x400, 0x400, 0x0, 0x0, 0x0)
    /usr/lib/go/src/io/pipe.go:52 +0x303
io.(*PipeReader).Read(0xc208b52750, 0xc208c0bc00, 0x400, 0x400, 0x1f, 0x0, 0x0)
    /usr/lib/go/src/io/pipe.go:134 +0x5b
github.com/docker/docker/pkg/ioutils.(*bufReader).drain(0xc2084600c0)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/.gopath/src/github.com/docker/docker/pkg/ioutils/readers.go:116 +0x10e
created by github.com/docker/docker/pkg/ioutils.NewBufReader
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/.gopath/src/github.com/docker/docker/pkg/ioutils/readers.go:86 +0x2f3

goroutine 784 [semacquire, 33261 minutes]:
sync.(*Cond).Wait(0xc208460570)
    /usr/lib/go/src/sync/cond.go:62 +0x9e
io.(*pipe).read(0xc208460540, 0xc208963000, 0x400, 0x400, 0x0, 0x0, 0x0)
    /usr/lib/go/src/io/pipe.go:52 +0x303
io.(*PipeReader).Read(0xc208b529d8, 0xc208963000, 0x400, 0x400, 0x1f, 0x0, 0x0)
    /usr/lib/go/src/io/pipe.go:134 +0x5b
github.com/docker/docker/pkg/ioutils.(*bufReader).drain(0xc208460600)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/.gopath/src/github.com/docker/docker/pkg/ioutils/readers.go:116 +0x10e
created by github.com/docker/docker/pkg/ioutils.NewBufReader
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/wo
rk/docker-1.8.3/.gopath/src/github.com/docker/docker/pkg/ioutils/readers.go:86 +0x2f3

goroutine 757 [semacquire, 33261 minutes]:
sync.(*Cond).Wait(0xc208141cb0)
    /usr/lib/go/src/sync/cond.go:62 +0x9e
github.com/docker/docker/pkg/ioutils.(*bufReader).Read(0xc208141c80, 0xc2089f2000, 0x1000, 0x1000, 0x0, 0x7f9ad52d4080, 0xc20802a0d0)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/.gopath/src/github.com/docker/docker/pkg/ioutils/readers.go:210 +0x158
bufio.(*Reader).fill(0xc208956ae0)
    /usr/lib/go/src/bufio/bufio.go:97 +0x1ce
bufio.(*Reader).ReadSlice(0xc208956ae0, 0x41d50a, 0x0, 0x0, 0x0, 0x0, 0x0)
    /usr/lib/go/src/bufio/bufio.go:295 +0x257
bufio.(*Reader).ReadBytes(0xc208956ae0, 0xc208141c0a, 0x0, 0x0, 0x0, 0x0, 0x0)
    /usr/lib/go/src/bufio/bufio.go:374 +0xd2
github.com/docker/docker/daemon/logger.(*Copier).copySrc(0xc2084def40, 0xf8ac00, 0x6, 0x7f9ad003e420, 0xc208141c80)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/.gopath/src/github.com/docker/docker/daemon/logger/copier.go:47 +0x96
created by github.com/docker/docker/daemon/logger.(*Copier).Run
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/.gopath/src/github.com/docker/docker/daemon/logger/copier.go:38 +0x11c

goroutine 842 [chan receive, 33261 minutes]:
github.com/docker/docker/daemon.(*Container).AttachWithLogs(0xc208cc90e0, 0x0, 0x0, 0x7f9ad003e398, 0xc208471e30, 0x7f9ad003e398, 0xc208471e00, 0x100, 0x0, 0x0)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/.gopath/src/github.com/docker/docker/daemon/container.go:934 +0x40d
github.com/docker/docker/daemon.(*Daemon).ContainerAttachWithLogs(0xc2080908c0, 0xc208cc90e0, 0xc208471dd0, 0x0, 0x0)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/.gopath/src/github.com/docker/docker/daemon/attach.go:39 +0x42c
github.com/docker/docker/api/server.(*Server).postContainersAttach(0xc208037800, 0xc208b36007, 0x4, 0x7f9ad52f2870, 0xc20
87fde00, 0xc2087d4410, 0xc208471b90, 0x0, 0x0)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/.gopath/src/github.com/docker/docker/api/server/server.go:1169 +0x5d1
github.com/docker/docker/api/server.*Server.(github.com/docker/docker/api/server.postContainersAttach)ยทfm(0xc208b36007, 0x4, 0x7f9ad52f2870, 0xc2087fde00, 0xc2087d4410, 0xc208471b90, 0x0, 0x0)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/.gopath/src/github.com/docker/docker/api/server/server.go:1671 +0x7b
github.com/docker/docker/api/server.funcยท008(0x7f9ad52f2870, 0xc2087fde00, 0xc2087d4410)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/.gopath/src/github.com/docker/docker/api/server/server.go:1614 +0xc8f
net/http.HandlerFunc.ServeHTTP(0xc2081cc580, 0x7f9ad52f2870, 0xc2087fde00, 0xc2087d4410)
    /usr/lib/go/src/net/http/server.go:1265 +0x41
github.com/gorilla/mux.(*Router).ServeHTTP(0xc20813cd70, 0x7f9ad52f2870, 0xc2087fde00, 0xc2087d4410)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/vendor/src/github.com/gorilla/mux/mux.go:98 +0x297
net/http.serverHandler.ServeHTTP(0xc2082375c0, 0x7f9ad52f2870, 0xc2087fde00, 0xc2087d4410)
    /usr/lib/go/src/net/http/server.go:1703 +0x19a
net/http.(*conn).serve(0xc2087fdd60)
    /usr/lib/go/src/net/http/server.go:1204 +0xb57
created by net/http.(*Server).Serve
    /usr/lib/go/src/net/http/server.go:1751 +0x35e

goroutine 789 [semacquire, 33261 minutes]:
sync.(*WaitGroup).Wait(0xc20882de60)
    /usr/lib/go/src/sync/waitgroup.go:132 +0x169
github.com/docker/docker/daemon.funcยท017(0x0, 0x0)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/.gopath/src/github.com/docker/docker/daemon/container.go:1035 +0x42
github.com/docker/docker/pkg/promise.funcยท001()
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/.gopath/src/github.com/docker/docker/pkg/promise/promise.go:8 +0x2f
created by github.com/docker/docker/pkg
/promise.Go
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/.gopath/src/github.com/docker/docker/pkg/promise/promise.go:9 +0xfb

goroutine 788 [semacquire, 33261 minutes]:
sync.(*Cond).Wait(0xc2084607b0)
    /usr/lib/go/src/sync/cond.go:62 +0x9e
github.com/docker/docker/pkg/ioutils.(*bufReader).Read(0xc208460780, 0xc208a70000, 0x8000, 0x8000, 0x0, 0x7f9ad52d4080, 0xc20802a0d0)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/.gopath/src/github.com/docker/docker/pkg/ioutils/readers.go:210 +0x158
io.Copy(0x7f9ad003e398, 0xc208845860, 0x7f9ad003e420, 0xc208460780, 0x0, 0x0, 0x0)
    /usr/lib/go/src/io/io.go:362 +0x1f6
github.com/docker/docker/daemon.funcยท016(0xf8abc0, 0x6, 0x7f9ad003e398, 0xc208845860, 0x7f9ad003e3f0, 0xc208460780)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/.gopath/src/github.com/docker/docker/daemon/container.go:1021 +0x245
created by github.com/docker/docker/daemon.attach
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.8.3/work/docker-1.8.3/.gopath/src/github.com/docker/docker/daemon/container.go:1032 +0x597

goroutine 769 [IO wait, 33261 minutes]:
net.(*pollDesc).Wait(0xc20881de20, 0x72, 0x0, 0x0)
    /usr/lib/go/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc20881de20, 0x0, 0x0)
    /usr/lib/go/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc20881ddc0, 0xc2088ac000, 0x1000, 0x1000, 0x0, 0x7f9ad52d8340, 0xc20880d758)
    /usr/lib/go/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208b52360, 0xc2088ac000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
    /usr/lib/go/src/net/net.go:121 +0xdc
net/http.(*liveSwitchReader).Read(0xc208792c28, 0xc2088ac000, 0x1000, 0x1000, 0x2, 0x0, 0x0)
    /usr/lib/go/src/net/http/server.go:214 +0xab
io.(*LimitedReader).Read(0xc20889f960, 0xc2088ac000, 0x1000, 0x1000, 0x2, 0x0, 0x0)
    /usr/lib/go/src/io/io.go:408 +0xce
bufio.(*Reader).fill(0xc2082544e0)
    /usr/lib/go/src/bufio/bufio.go:97 +0x1ce
bufio.(*Reader).ReadSlice(0xc208254
4e0, 0xc20889db0a, 0x0, 0x0, 0x0, 0x0, 0x0)
    /usr/lib/go/src/bufio/bufio.go:295 +0x257
bufio.(*Reader).ReadLine(0xc2082544e0, 0x0, 0x0, 0x0, 0xc208bc2700, 0x0, 0x0)
    /usr/lib/go/src/bufio/bufio.go:324 +0x62
net/textproto.(*Reader).readLineSlice(0xc208845560, 0x0, 0x0, 0x0, 0x0, 0x0)
    /usr/lib/go/src/net/textproto/reader.go:55 +0x9e
net/textproto.(*Reader).ReadLine(0xc208845560, 0x0, 0x0, 0x0, 0x0)
    /u
=== END goroutine stack dump ==="

๋‚˜๋Š” ๋ฐฉ๊ธˆ ๊ฑธ๋ ธ๊ณ  , docker go ๋ฃจํ‹ด์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ •์ง€ ํ›„ ๋กœ๊ทธ์—๋„ ๋ฐ˜๋ณต์ ์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
kernel: unregister_netdevice: waiting for veth2fb10a9 to become free. Usage count = 1

@rwky๋Š” ์•„๋งˆ๋„ https://github.com/docker/docker/issues/5618 ๊ณผ ๊ด€๋ จ์ด

@thaJeztah ์•„๋งˆ๋„ # 5618์€ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋ฐ”์ธ๋”ฉ ๋œ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์•„๋‹Œ lo ๋ฐ eth0์—๋งŒ ์ ์šฉ๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ณผ๋„ํ•œ Kubernetes ์ž‘์—…๋กœ๋“œ๊ฐ€ ์˜ˆ์•ฝ ๋œ ๊ฒฝ์šฐ์—๋„ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. docker ps ๋Š” ๋ฐ˜ํ™˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ curl --unix-socket /var/run/docker.sock http:/containers/json ์ด ์ •์ง€๋ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ๋ณต๊ตฌํ•˜๋ ค๋ฉด ๋„์ปค ๋ฐ๋ชฌ์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋” ๋‚˜์œ ๊ฒƒ์€ ๋„์ปค ๋ฐ๋ชฌ์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ๋ช‡ ๋ถ„์ด ๊ฑธ๋ฆฐ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค!

$ docker version
Client:
 Version:      1.8.3
 API version:  1.20
 Go version:   go1.4.3
 Git commit:   cedd534-dirty
 Built:        Thu Nov 19 23:12:57 UTC 2015
 OS/Arch:      linux/amd64

Server:
 Version:      1.8.3
 API version:  1.20
 Go version:   go1.4.3
 Git commit:   cedd534-dirty
 Built:        Thu Nov 19 23:12:57 UTC 2015
 OS/Arch:      linux/amd64
$ docker info
Containers: 57
Images: 100
Storage Driver: overlay
 Backing Filesystem: extfs
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 4.2.2-coreos-r2
Operating System: CoreOS 870.2.0
CPUs: 32
Total Memory: 251.9 GiB
Name: CNPVG50853311
ID: TV5P:6OHQ:QTSN:IF6K:5LPX:TSHS:DEAW:TQSF:QTOT:45NO:JH2X:DMSE
Http Proxy: http://proxy.wdf.sap.corp:8080
Https Proxy: http://proxy.wdf.sap.corp:8080
No Proxy: hyper.cd,anywhere.cd

๋‚ด ํ™˜๊ฒฝ์—์„œ ๋น„์Šทํ•œ ๊ฒƒ์„๋ณด๊ณ  ๋””๋ฒ„๊น…์„ ๋•๊ธฐ ์œ„ํ•ด ์•„๋ž˜ ์ •๋ณด๋ฅผ ๋คํ”„ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ†ต๊ณ„๋Š” ๊ฐ๊ฐ ์•ฝ 70 ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋‘ ๊ฐœ์˜ ๊ณ ์‚ฌ์–‘ ๋ฌผ๋ฆฌ์  rancheros4.2 ํ˜ธ์ŠคํŠธ์—์„œ ๊ฐ€์ ธ์˜จ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋„์ปค์˜ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋˜๊ณ  ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ์ถ”์ ํ•˜์ง€ ๋ชปํ–ˆ์ง€๋งŒ ๋„์ปค ๋ฐ๋ชฌ์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

Docker ๋ฒ„์ „

Client:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.4.3
 Git commit:   994543b
 Built:        Mon Nov 23 06:08:57 UTC 2015
 OS/Arch:      linux/amd64

Server:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.4.3
 Git commit:   994543b
 Built:        Mon Nov 23 06:08:57 UTC 2015
 OS/Arch:      linux/amd64

๋„์ปค ์ •๋ณด

Containers: 35
Images: 1958
Server Version: 1.9.1
Storage Driver: overlay
 Backing Filesystem: extfs
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 4.2.3-rancher
Operating System: RancherOS (containerized)
CPUs: 64
Total Memory: 251.9 GiB
Name: PTL-BCA-07
ID: Q5WF:7MOB:37YR:NRZR:P2FE:DVWV:W7XY:Z6OL:TAVC:4KCM:IUFU:LO4C

Stacktrace :
debug2.txt

์ด๊ฒƒ์— +1ํ•˜์—ฌ centos 6์—์„œ ์‹คํ–‰๋˜๋Š” ๋” ๋†’์€ ๋ถ€ํ•˜์—์„œ ๋” ์ž์ฃผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Docker ๋ฒ„์ „

Client version: 1.7.1
Client API version: 1.19
Go version (client): go1.4.2
Git commit (client): 786b29d
OS/Arch (client): linux/amd64
Server version: 1.7.1
Server API version: 1.19
Go version (server): go1.4.2
Git commit (server): 786b29d
OS/Arch (server): linux/amd64

Docker ์ •๋ณด

Containers: 1
Images: 55
Storage Driver: overlay
 Backing Filesystem: extfs
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.18.23-74.el6.x86_64
Operating System: <unknown>
CPUs: 40
Total Memory: 157.4 GiB
Name: lively-frost
ID: SXAC:IJ45:UY45:FIXS:7MWD:MZAE:XSE5:HV3Z:DU4Z:CYK6:LXPB:A65F

@ssalinas ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ ๋˜๋”๋ผ๋„ ๋” ์ด์ƒ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋ฐฐํฌํŒ (centos 6)๊ณผ ์‚ฌ์šฉ์ž ์ง€์ • ์ปค๋„ (CentOS 6์€ 2.6.x์™€ ํ•จ๊ป˜ ์ œ๊ณต)์—์„œ ์‹คํ–‰

@theJeztah , ๋ถ„๋ช…ํžˆ ๋ฌด๊ฑฐ์šด ๋ถ€ํ•˜์—์„œ ๋ง‰ํž˜์„ ์ผ์œผํ‚ค๋Š” ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Docker ํŒ€์˜ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€์ด ๋ฌธ์ œ๋ฅผ ํ™•์ธํ–ˆ์œผ๋ฉฐ ๋ฒ„์ „ 1.9์—์„œ ํ•ด๊ฒฐ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

์ด ์™ธ์—๋„ Docker๊ฐ€ ์ค‘๋‹จ๋˜๊ณ  ๋” ์ด์ƒ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ์ตœ์†Œํ•œ ๋ฐ๋ชฌ์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ณ  ์ž‘์—…์„ ๊ณ„์†ํ•˜๋„๋ก ์ž๋™ํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ๊ตฌ์„ฑ์—์„œ๋„ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

docker 1.8.3 ๋ฐ coreos 835.10

docker ps๋Š” ๋†’์€ ์ดํƒˆ๋ฅ ์— ๋ฉˆ ์ถฅ๋‹ˆ ๋‹ค. ๊ฐ€๋Šฅํ•œ ํ•œ ๋นจ๋ฆฌ 200 ๊ฐœ ์ด์ƒ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ 100 % ํŠธ๋ฆฌ๊ฑฐ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (Kubernetes๊ฐ€ ์ˆ˜ํ–‰ํ•จ).

์—ฌ๊ธฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€
์žฌํ˜„ :

A_LOT=300 # whatever
for i in `seq 1 $A_LOT`; 
  do docker run --rm alpine sh -c "echo $i; sleep 30" & 
done
sleep 5   # give it some time to start spawning containers
docker ps # hangs
core@pph-01 ~ $ docker version
Client:
 Version:      1.8.3
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   cedd534-dirty
 Built:        Tue Feb  2 13:28:10 UTC 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.8.3
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   cedd534-dirty
 Built:        Tue Feb  2 13:28:10 UTC 2016
 OS/Arch:      linux/amd64
Containers: 291
Images: 14
Storage Driver: overlay
 Backing Filesystem: extfs
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 4.2.2-coreos-r2
Operating System: CoreOS 835.12.0
CPUs: 2
Total Memory: 1.958 GiB
Name: pph-01
ID: P4FX:IMCD:KF5R:MG3Y:XECP:JPKO:IRWM:3MGK:IAIW:UG5S:6KCR:IK2J
Username: pmoust
Registry: https://index.docker.io/v1/

๊ธฐ๋ก์„ ์œ„ํ•ด ์œ„์˜ bash ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋žฉํ†ฑ์—์„œ ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ๋‚˜์œ ์ผ์€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. Ubuntu 15.10์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

$ docker version
Client:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   a34a1d5
 Built:        Fri Nov 20 13:20:08 UTC 2015
 OS/Arch:      linux/amd64

Server:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   a34a1d5
 Built:        Fri Nov 20 13:20:08 UTC 2015
 OS/Arch:      linux/amd64

$ docker info
Containers: 1294
Images: 1231
Server Version: 1.9.1
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 3823
 Dirperm1 Supported: true
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 4.2.0-27-generic
Operating System: Ubuntu 15.10
CPUs: 8
Total Memory: 5.809 GiB
Name: pochama
ID: 6VMD:Z57I:QDFF:TBSU:FNSH:Y433:6KDS:2AXU:CVMH:JUKU:TVQQ:7UMR
Username: tomfotherby
Registry: https://index.docker.io/v1/
WARNING: No swap limit support

Docker 1.8.3 / CentOS 7์—์„œ์ด ๋ฌธ์ œ์˜ ์—ฌ๋Ÿฌ ์‚ฌ๋ก€๋ฅผ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋งŽ์€ ์ˆ˜์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑ ํ•  ์ˆ˜์žˆ๋Š” kubernetes๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋•Œ๋•Œ๋กœ ์šฐ๋ฆฌ์˜ ๋„์ปค ๋ฐ๋ชฌ์ด ์‘๋‹ตํ•˜์ง€ ์•Š๊ณ  (docker ps๊ฐ€ 30 ๋ถ„ ์ด์ƒ ์ค‘๋‹จ๋จ) ๋ฐ๋ชฌ์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผ๋งŒ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ @pmoust ์˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Containers: 117
Images: 105
Storage Driver: devicemapper
 Pool Name: docker-docker--pool
 Pool Blocksize: 524.3 kB
 Backing Filesystem: xfs
 Data file: 
 Metadata file: 
 Data Space Used: 5.559 GB
 Data Space Total: 21.45 GB
 Data Space Available: 15.89 GB
 Metadata Space Used: 7.234 MB
 Metadata Space Total: 54.53 MB
 Metadata Space Available: 47.29 MB
 Udev Sync Supported: true
 Deferred Removal Enabled: true
 Library Version: 1.02.107-RHEL7 (2015-10-14)
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.10.0-327.4.5.el7.x86_64
Operating System: CentOS Linux 7 (Core)
CPUs: 2
Total Memory: 3.451 GiB
Name: server
ID: MK35:YN3L:KULL:C4YU:IOWO:6OK2:FHLO:WIYE:CBVE:MZBL:KG3T:OV5T
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
Client:
 Version:      1.8.3
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   f4bf5c7
 Built:        Mon Oct 12 06:06:01 UTC 2015
 OS/Arch:      linux/amd64

Server:
 Version:      1.8.3
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   f4bf5c7
 Built:        Mon Oct 12 06:06:01 UTC 2015
 OS/Arch:      linux/amd64

@tomfotherby ์ผ€์ด์Šค์™€ @andrewmichaelsmith ์—์„œ ์Šคํ† ๋ฆฌ์ง€ ๋“œ๋ผ์ด๋ฒ„๋Š” ๊ฐ๊ฐ aufs / devicemapper-xfs์ž…๋‹ˆ๋‹ค.
์Šคํ† ๋ฆฌ์ง€ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์˜ค๋ฒ„๋ ˆ์ด ์ผ ๋•Œ ์ผ๊ด€๋˜๊ฒŒ ์žฌํ˜„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

CoreOS 835.12 ์—์„œ @pmoust์˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ค‘๋‹จ์„ ๋ณต์ œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Containers: 227
Images: 1
Storage Driver: overlay
 Backing Filesystem: extfs
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 4.2.2-coreos-r2
Operating System: CoreOS 835.12.0
CPUs: 2
Total Memory: 3.864 GiB
Name: core-01
ID: WIYE:CGI3:2C32:LURO:MNHU:YQXU:NEU4:LPZG:YJM5:ZN3S:BBPF:3SXM

FWIW ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ devicemapper ์ปค๋„ ๋ฒ„๊ทธ์— ๊ณ ์ •ํ–ˆ์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค : https://bugzilla.redhat.com/show_bug.cgi?id=1292481

@andrewmichaelsmith ๋Š” ํŒจ์น˜๊ฐ€์žˆ๋Š” AWS AMI์ž…๋‹ˆ๊นŒ?

CentOS 7 AWS ์ƒ์ž์˜ @pmoust yum update ์—์„œ ํ•ด๋‹น ๋ฒ„๊ทธ ๋ณด๊ณ ์„œ (kernel-3.10.0-327.10.1.el7)์—์„œ ์ƒˆ ์ปค๋„์„ ๊ฐ€์ ธ ์™”์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘ : ๋งŒ์•ฝ ๋‹น์‹ ์ด overlayfs๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ์ด๊ฒƒ์ด ๋‹น์‹ ๊ณผ ๊ด€๋ จ์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๊นŒ?

์ด ๋ฌธ์ œ์— +1. CoreOS Alpha์˜ ์ปค๋„ 4.4.1-coreos์—์„œ Docker 1.10.1์—์„œ์ด ๋ฌธ์ œ์— ์ง๋ฉดํ–ˆ์Šต๋‹ˆ๋‹ค.
AWS์˜ 970.1.0. ์ด๋กœ ์ธํ•ด kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— ์‹ฌ๊ฐํ•œ ๋ถˆ์•ˆ์ •์„ฑ์ด ๋ฐœ์ƒํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์šฐ๋ฆฌ ํŒ€์€ ๋„์ปค๋ฅผ ์™„์ „ํžˆ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ ๊ทน์ ์ธ ์กฐ์‚ฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

@gopinatht ์ด ๋ฌธ์ œ์˜ ์‚ฌ๋žŒ๋“ค์€ ๋‹ค์–‘ํ•œ ๋ฌธ์ œ์˜ ์˜ํ–ฅ์„๋ฐ›๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์—๊ฒŒ๋Š” docker ํ”„๋กœ์ ํŠธ์™€ ์ „ํ˜€ ๊ด€๋ จ์ด์—†๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ ํ•œ devicemapper์˜ ๋ฒ„๊ทธ์˜€์Šต๋‹ˆ๋‹ค.

@andrewmichaelsmith ์‘๋‹ต docker ps ํ˜ธ์ถœ์˜ strace๋Š” ๋‹ค์Œ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

read(5, 0xc20807d000, 4096) = -1 EAGAIN (Resource temporarily unavailable) write(5, "GET /v1.22/containers/json HTTP/"..., 109) = 109 futex(0x1fe97a0, FUTEX_WAKE, 1) = 1 futex(0x1fe9720, FUTEX_WAKE, 1) = 1 epoll_wait(4, {}, 128, 0) = 0 futex(0x1fea698, FUTEX_WAIT, 0, NULL

์ด๊ฒƒ์€ ์—ฌ๊ธฐ์—์žˆ๋Š” ์—ฌ๋Ÿฌ ๋‹ค๋ฅธ ๋ณด๊ณ ์„œ์™€ ๋งค์šฐ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋˜ ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@andrewmichaelsmith ๊ฐ€ ํŒจ์น˜ ์ปค๋„๋กœ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค https://github.com/coreos/bugs/issues/1117#issuecomment -191190839

@pmoust ์—…๋ฐ์ดํŠธ

@andrewmichaelsmith @pmoust ์ถ”๊ฐ€ ์กฐ์‚ฌ๋ฅผ ์œ„ํ•ด ๋‹ค์Œ์— ํ•  ์ˆ˜์žˆ๋Š” ์ผ์— ๋Œ€ํ•œ ํ†ต์ฐฐ๋ ฅ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ด์— ๋Œ€ํ•œ ์ˆ˜์ •์€ ์šฐ๋ฆฌ ํŒ€์ด ๋„์ปค ๊ธฐ๋ฐ˜ kubernetes ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋ฐœ์ „์‹œํ‚ค๋Š” ๋ฐ ์ ˆ๋Œ€์ ์œผ๋กœ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

@gopinatht ๋‚˜๋Š” ๋„์ปค / ๊ตฌ๊ธ€์—์„œ ์ผํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ๋„์ปค ๋˜๋Š” ์ฟ  ๋ฒ„๋„ค ํ‹ฐ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ํŠนํžˆ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ค‘์ธ ์Šคํ† ๋ฆฌ์ง€ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ๋ฌด์—‡์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ๋ฐ˜๋ณต : devicemapper ์Šคํ† ๋ฆฌ์ง€ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ docker๊ฐ€ ์™„์ „ํžˆ ๋ฉˆ์ถ”๋Š” ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ปค๋„์„ kernel-3.10.0-327.10.1.el7๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ฉด์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋” ์ด์ƒ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

docker ์Šคํ† ๋ฆฌ์ง€ ๋“œ๋ผ์ด๋ฒ„๋กœ devicemapper๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๋‚ด ๊ฒฐ๊ณผ๋Š” ์•„๋งˆ๋„ ๋‹น์‹ ์—๊ฒŒ ํฐ ์˜๋ฏธ๊ฐ€ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@andrewmichaelsmith ๋‚ด๊ฐ€ ์ด๊ฒƒ์— ๋Œ€ํ•ด ๋ญ”๊ฐ€๋ฅผํ•ด์•ผ ํ•จ์„ ์•”์‹œํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ

๋‚˜๋Š” ๋ถ„๋ช…ํžˆ ์—ฌ๊ธฐ์„œ ๊ธธ์„ ์žƒ์—ˆ ๊ธฐ ๋•Œ๋ฌธ์— ์กฐ์‚ฌ ๋ฐฉํ–ฅ์„ ์ฐพ๊ณ  ์žˆ์—ˆ๋‹ค. ์–ด์จŒ๋“  ์ง€๊ธˆ๊นŒ์ง€ ๋„์›€์„ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

Ubuntu์—์„œ ์ตœ์‹  ๋ฒ„์ „์˜ Kernel 3.13.0-83-generic . ๋‹ค๋ฅธ ๋ชจ๋“  ์ž‘์—…์€ ๊ดœ์ฐฎ์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์œ ์ผํ•œ ๋ฌธ์ œ๋Š” docker ps ๋ฐ ์ž„์˜์˜ docker inspect

Docker ์ •๋ณด :

Containers: 51
 Running: 48
 Paused: 0
 Stopped: 3
Images: 92
Server Version: 1.10.3
Storage Driver: devicemapper
 Pool Name: docker-data-tpool
 Pool Blocksize: 65.54 kB
 Base Device Size: 5.369 GB
 Backing Filesystem: ext4
 Data file:
 Metadata file:
 Data Space Used: 19.14 GB
 Data Space Total: 102 GB
 Data Space Available: 82.86 GB
 Metadata Space Used: 33.28 MB
 Metadata Space Total: 5.369 GB
 Metadata Space Available: 5.335 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Deferred Deletion Enabled: false
 Deferred Deleted Device Count: 0
 Library Version: 1.02.77 (2012-10-15)
Execution Driver: native-0.2
Logging Driver: json-file
Plugins:
 Volume: local
 Network: host bridge null
Kernel Version: 3.13.0-83-generic
Operating System: Ubuntu 14.04.4 LTS
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 29.96 GiB
Name: apocalypse.servers.lair.io
ID: Q444:V3WX:RIQJ:5B3T:SYFQ:H2TR:SPVF:U6YE:XNDX:HV2Z:CS7F:DEJJ
WARNING: No swap limit support

strace ๊ผฌ๋ฆฌ :

futex(0x20844d0, FUTEX_WAIT, 0, NULL)   = 0
futex(0xc82002ea10, FUTEX_WAKE, 1)      = 1
clock_gettime(CLOCK_MONOTONIC, {216144, 494093555}) = 0
clock_gettime(CLOCK_MONOTONIC, {216144, 506740959}) = 0
futex(0xc82002ea10, FUTEX_WAKE, 1)      = 1
clock_gettime(CLOCK_MONOTONIC, {216144, 506835134}) = 0
clock_gettime(CLOCK_MONOTONIC, {216144, 506958105}) = 0
futex(0x20844d0, FUTEX_WAIT, 0

๋˜ํ•œ ๋ช‡ ๋ถ„ ์ •๋„ ์ง€๋‚˜๋ฉด ์ฐจ๋‹จ ๋œ strace์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ถœ๋ ฅ์ด ํ‘œ์‹œ๋˜์ง€๋งŒ ์ข…๋ฃŒ๋˜์ง€๋Š” ์•Š์•˜์Šต๋‹ˆ๋‹ค.

futex(0xc820574110, FUTEX_WAKE, 1)      = 1
futex(0xc820574110, FUTEX_WAKE, 1)      = 1
futex(0xc820574110, FUTEX_WAKE, 1)      = 1
futex(0xc820574110, FUTEX_WAKE, 1)      = 1
futex(0xc820574110, FUTEX_WAKE, 1)      = 1
futex(0xc820574110, FUTEX_WAKE, 1)      = 1
futex(0xc820574110, FUTEX_WAKE, 1)      = 1
futex(0xc820574110, FUTEX_WAKE, 1)      = 1
futex(0xc820574110, FUTEX_WAKE, 1)      = 1
futex(0xc820574110, FUTEX_WAKE, 1)      = 1
futex(0xc820574110, FUTEX_WAKE, 1)      = 1
futex(0xc820574110, FUTEX_WAKE, 1)      = 1
futex(0xc820574110, FUTEX_WAKE, 1)      = 1
futex(0xc820574110, FUTEX_WAKE, 1)      = 1
futex(0xc820574110, FUTEX_WAKE, 1)      = 1
futex(0xc820574110, FUTEX_WAKE, 1)      = 1
futex(0x20844d0, FUTEX_WAIT, 0, NULL

์กฐ๊ธˆ ๋” ๊ธฐ๋‹ค๋ฆฐ ํ›„ ๋™์ผํ•œ futex ๋ธ”๋ก์ด ๋ฐœ์ƒํ•˜์ง€๋งŒ ์ด๋ฒˆ์—๋Š” '๋ฆฌ์†Œ์Šค๋ฅผ ์ผ์‹œ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ ์˜ค๋ฅ˜'๋„ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

futex(0x20844d0, FUTEX_WAIT, 0, NULL)   = 0
futex(0xc820574110, FUTEX_WAKE, 1)      = 1
futex(0xc820574110, FUTEX_WAKE, 1)      = 1
clock_gettime(CLOCK_MONOTONIC, {216624, 607690506}) = 0
clock_gettime(CLOCK_MONOTONIC, {216624, 607853434}) = 0
futex(0x2083970, FUTEX_WAIT, 0, {0, 100000}) = -1 EAGAIN (Resource temporarily unavailable)
epoll_wait(5, {}, 128, 0)               = 0
clock_gettime(CLOCK_MONOTONIC, {216624, 608219882}) = 0
futex(0x2083980, FUTEX_WAKE, 1)         = 1
futex(0xc820574110, FUTEX_WAKE, 1)      = 1
clock_gettime(CLOCK_MONOTONIC, {216624, 608587202}) = 0
clock_gettime(CLOCK_MONOTONIC, {216624, 609140069}) = 0
clock_gettime(CLOCK_MONOTONIC, {216624, 609185048}) = 0
clock_gettime(CLOCK_MONOTONIC, {216624, 609272020}) = 0
futex(0xc82002ea10, FUTEX_WAKE, 1)      = 1
clock_gettime(CLOCK_MONOTONIC, {216624, 616982914}) = 0
sched_yield()                           = 0
clock_gettime(CLOCK_MONOTONIC, {216624, 626726774}) = 0
futex(0x20844d0, FUTEX_WAIT, 0, NULL)   = 0
futex(0x2083970, FUTEX_WAKE, 1)         = 1
futex(0x20838c0, FUTEX_WAKE, 1)         = 1
sched_yield()                           = 0
futex(0x20838c0, FUTEX_WAIT, 2, NULL)   = 0
futex(0x20838c0, FUTEX_WAKE, 1)         = 0
futex(0x20844d0, FUTEX_WAIT, 0, NULL

ํ•ญ์ƒ ๋™์ผํ•œ futex ์—์„œ strace๊ฐ€ ์ฐจ๋‹จ๋ฉ๋‹ˆ๋‹ค.

@akalipetis ํ”„๋กœ์„ธ์Šค์— SIGUSR1 ๋ฅผ ๋ณด๋‚ด๊ณ  ๋ฐ๋ชฌ ๋กœ๊ทธ์—์„œ ์ „์ฒด ์Šคํƒ ์ถ”์ ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@ cpuguy83- ๋ฏธ์•ˆํ•˜์ง€๋งŒ ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ธ์‹ํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค ...

(Un) ๋ถˆํ–‰ํžˆ๋„ ๋‹ค์‹œ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ์ฒจ๋ถ€ ํŒŒ์ผ์—์„œ ์ „์ฒด ์Šคํƒ ์ถ”์ ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

stacktrace.txt

๋‚ด ํŽธ์ด ๋” ํ•„์š”ํ•˜๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”.

/ cc @ cpuguy83

@akalipetis ๋Œ€๋‹จํžˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๋ฌธ์ œ ์—†์Šต๋‹ˆ๋‹ค @ cpuguy83- ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ์›ํ•˜๊ฑฐ๋‚˜ ํ–ฅํ›„

๋ถˆํ–‰ํžˆ๋„ ๋‚˜๋Š” ์ด๊ฒƒ์„ ์žฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์ง€ ๋ชปํ–ˆ๊ฑฐ๋‚˜ ์ค‘๋‹จ ์‚ฌ์ด์˜ ์œ ์‚ฌํ•œ ์ƒํ™ฉ์„ ์‹๋ณ„ํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

rspec ๋„์ปค ์ด๋ฏธ์ง€ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” 1.11.0์œผ๋กœ ์—…๋ฐ์ดํŠธํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— (4 cpu ์‹œ์Šคํ…œ์—์„œ ์ด๋Ÿฌํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ตœ๋Œ€ 10 ๊ฐœ์˜ ๋ณ‘๋ ฌ ์ปจํ…Œ์ด๋„ˆ) ๊ฐ€๋” ๋ฉˆ์ถ”๊ณ  ์‹œ๊ฐ„ ์ดˆ๊ณผ๋กœ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. Docker๊ฐ€ ์™„์ „ํžˆ ์ •์ง€๋˜๊ณ  ์‘๋‹ตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (์˜ˆ : docker ps ). ์ด๊ฒƒ์€ Debian strech (btrfs) ๋ฐ (vagrant) Parallels VM Ubuntu 14.04 (๋ฐฑ ํฌํŠธ ๋œ ์ปค๋„ 3.19.0-31-generic, ext4)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ€์ƒ ์„œ๋ฒ„์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋‘ ์„œ๋ฒ„์˜ /var/lib/docker ์— ๋Œ€ํ•œ ํŒŒ์ผ ์‹œ์Šคํ…œ์ด ์ฒซ ๋ฒˆ์งธ ๊ณ ์ • ํ›„ ์ง€์›Œ์กŒ์Šต๋‹ˆ๋‹ค (btrfs๊ฐ€ ๋‹ค์‹œ ์ƒ์„ฑ๋จ). ์ด๋Ÿฌํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ๋ฉˆ์ถค์ด ๋ฌด์ž‘์œ„๋กœ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์Šคํƒ ์ถ”์ ์€ ๋‘ ์„œ๋ฒ„์—์„œ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.
docker-log.zip

docker-containerd ๋ฐ docker daemons strace :

# strace -p 21979 -p 22536
Process 21979 attached
Process 22536 attached
[pid 22536] futex(0x219bd90, FUTEX_WAIT, 0, NULL <unfinished ...>
[pid 21979] futex(0xf9b170, FUTEX_WAIT, 0, NULL

Docker ์ •๋ณด (Debian strech)

Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 1096
Server Version: 1.11.0
Storage Driver: btrfs
 Build Version: Btrfs v4.4
 Library Version: 101
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: host bridge null
Kernel Version: 4.4.0-1-amd64
Operating System: Debian GNU/Linux stretch/sid
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 11.74 GiB
Name: slave.webdevops.io
ID: WU2P:YOYC:VP2F:N6DE:BINB:B6YO:2HJO:JKZA:HTP3:SIDA:QOJZ:PJ2E
Docker Root Dir: /var/lib/docker
Debug mode (client): false
Debug mode (server): false
Username: webdevopsslave
Registry: https://index.docker.io/v1/
WARNING: No memory limit support
WARNING: No swap limit support
WARNING: No kernel memory limit support
WARNING: No oom kill disable support

Docker ์ •๋ณด (๋ฐฑ ํฌํŠธ ๋œ ์ปค๋„์ด์žˆ๋Š” Ubuntu 14.04)

Client:
 Version:      1.11.0
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   4dc5990
 Built:        Wed Apr 13 18:34:23 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.11.0
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   4dc5990
 Built:        Wed Apr 13 18:34:23 2016
 OS/Arch:      linux/amd64
root@DEV-VM:/var/lib/docker# docker info
Containers: 11
 Running: 1
 Paused: 0
 Stopped: 10
Images: 877
Server Version: 1.11.0
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 400
 Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge null host
Kernel Version: 3.19.0-31-generic
Operating System: Ubuntu 14.04.2 LTS
OSType: linux
Architecture: x86_64
CPUs: 8
Total Memory: 3.282 GiB
Name: DEV-VM
ID: KCQP:OGCT:3MLX:TAQD:2XG6:HBG2:DPOM:GJXY:NDMK:BXCK:QEIT:D6KM
Docker Root Dir: /var/lib/docker
Debug mode (client): false
Debug mode (server): false
Registry: https://index.docker.io/v1/

Docker ๋ฒ„์ „ (Debian strech)

Client:
 Version:      1.11.0
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   4dc5990
 Built:        Wed Apr 13 18:22:26 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.11.0
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   4dc5990
 Built:        Wed Apr 13 18:22:26 2016
 OS/Arch:      linux/amd64

Docker ๋ฒ„์ „ (๋ฐฑ ํฌํŠธ ๋œ ์ปค๋„์ด์žˆ๋Š” Ubuntu 14.04)

Client:
 Version:      1.11.0
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   4dc5990
 Built:        Wed Apr 13 18:34:23 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.11.0
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   4dc5990
 Built:        Wed Apr 13 18:34:23 2016
 OS/Arch:      linux/amd64

@mblaschke golang ํ”„๋กœ๊ทธ๋žจ afaik์˜ strace์— -f ์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

Ubuntu 14.04์—์„œ์ด ๋ฒ„๊ทธ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์ง€๋งŒ์ด ๋ฒ„๊ทธ๊ฐ€ 4.4 ์ปค๋„์„ ์‚ฌ์šฉํ•˜๋Š” Debian stretch์˜ ๋ฌธ์ œ์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ์–ป์œผ๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค.

Docker 1.10.3์—์„œ Debian stretch์˜ ๋ฌธ์ œ๋Š” systemd์˜ ํ”„๋กœ์„ธ์Šค ์ œํ•œ (์ด์ „ 512, 8192๋กœ ์˜ฌ๋ฆผ)์ด์—ˆ์œผ๋ฉฐ Docker ์ปจํ…Œ์ด๋„ˆ ํ…Œ์ŠคํŠธ๋Š” ์ด์ œ ๋ฌธ์ œ์—†์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. 1.11.0์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์ž‘๋™ํ•˜์ง€ ์•Š๊ณ  rspec ํ…Œ์ŠคํŠธ๋Š” ์—ฌ์ „ํžˆ ๋ฉˆ์ถฐ ์žˆ์ง€๋งŒ docker ps ์€ 4.4 ์ปค๋„์„ ์‚ฌ์šฉํ•˜๋Š” Debian Stretch์—์„œ ์—ฌ์ „ํžˆ ์‘๋‹ตํ•˜๋ฏ€๋กœ ๋‹ค๋ฅธ ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด ๋ฌธ์ œ ์ผ ์ˆ˜์žˆ๋Š” @mblaschke ์˜ ๋ณด๊ณ ์„œ๋ฅผ ์ถ”์ ํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ๋กœ์šด ๋ฌธ์ œ # 22124๋ฅผ ์ƒ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์ด๊ฒƒ์— ์‹คํ–‰ ๋‚˜๋Š” ๋ฏฟ๋Š”๋‹ค

$ uname -a
Linux ip-10-15-42-103.ec2.internal 4.4.6-coreos #2 SMP Sat Mar 26 03:25:31 UTC 2016 x86_64 Intel(R) Xeon(R) CPU E5-2676 v3 @ 2.40GHz GenuineIntel GNU/Linux
$ docker version
Client:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.5.3
 Git commit:   9894698
 Built:
 OS/Arch:      linux/amd64

Server:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.5.3
 Git commit:   9894698
 Built:
 OS/Arch:      linux/amd64
$ docker info
Containers: 198
Images: 196
Server Version: 1.9.1
Storage Driver: overlay
 Backing Filesystem: extfs
Execution Driver: native-0.2
Logging Driver: journald
Kernel Version: 4.4.6-coreos
Operating System: CoreOS 991.2.0 (Coeur Rouge)
CPUs: 2
Total Memory: 3.862 GiB
$ sudo strace -q -y -v -f docker ps
<snip>
[pid 26889] connect(5<socket:[18806726]>, {sa_family=AF_LOCAL, sun_path="/var/run/docker.sock"}, 23) = 0
[pid 26889] clock_gettime(CLOCK_REALTIME, {1462217998, 860739240}) = 0
[pid 26889] epoll_ctl(4<anon_inode:[eventpoll]>, EPOLL_CTL_ADD, 5<socket:[18806726]>, {EPOLLIN|EPOLLOUT|EPOLLRDHUP|EPOLLET, {u32=914977888, u64=140334676407392}}) = 0
[pid 26889] getsockname(5<socket:[18806726]>, {sa_family=AF_LOCAL, NULL}, [2]) = 0
[pid 26889] getpeername(5<socket:[18806726]>, {sa_family=AF_LOCAL, sun_path="/var/run/docker.sock"}, [23]) = 0
[pid 26889] read(5<socket:[18806726]>,  <unfinished ...>
[pid 26893] <... futex resumed> )       = 1
[pid 26889] <... read resumed> 0xc820015000, 4096) = -1 EAGAIN (Resource temporarily unavailable)
[pid 26893] futex(0xc8200e9790, FUTEX_WAIT, 0, NULL <unfinished ...>
[pid 26891] futex(0xc820026a10, FUTEX_WAIT, 0, NULL) = -1 EAGAIN (Resource temporarily unavailable)
[pid 26891] epoll_wait(4<anon_inode:[eventpoll]>, {{EPOLLOUT, {u32=914978080, u64=140334676407584}}, {EPOLLOUT, {u32=914977888, u64=140334676407392}}}, 128, 0) = 2
[pid 26891] epoll_wait(4<anon_inode:[eventpoll]>,  <unfinished ...>
[pid 26889] write(5<socket:[18806726]>, "GET /v1.21/containers/json HTTP/"..., 88 <unfinished ...>
[pid 26890] <... select resumed> )      = 0 (Timeout)
[pid 26889] <... write resumed> )       = 88
[pid 26891] <... epoll_wait resumed> {{EPOLLOUT, {u32=914977888, u64=140334676407392}}}, 128, -1) = 1
[pid 26891] epoll_wait(4<anon_inode:[eventpoll]>,  <unfinished ...>
[pid 26890] clock_gettime(CLOCK_MONOTONIC, {1194110, 935071149}) = 0
[pid 26890] clock_gettime(CLOCK_REALTIME, {1462217998, 861179188}) = 0
[pid 26890] select(0, NULL, NULL, NULL, {0, 20}) = 0 (Timeout)
[pid 26890] clock_gettime(CLOCK_MONOTONIC, {1194110, 935216184}) = 0
[pid 26890] clock_gettime(CLOCK_REALTIME, {1462217998, 861327424}) = 0
[pid 26890] select(0, NULL, NULL, NULL, {0, 20}) = 0 (Timeout)
[pid 26890] clock_gettime(CLOCK_MONOTONIC, {1194110, 935376601}) = 0
[pid 26890] clock_gettime(CLOCK_REALTIME, {1462217998, 861479813}) = 0
[pid 26890] select(0, NULL, NULL, NULL, {0, 20}) = 0 (Timeout)
[pid 26890] clock_gettime(CLOCK_MONOTONIC, {1194110, 935543531}) = 0
[pid 26890] clock_gettime(CLOCK_REALTIME, {1462217998, 861646718}) = 0
[pid 26890] select(0, NULL, NULL, NULL, {0, 20}) = 0 (Timeout)
[pid 26890] clock_gettime(CLOCK_MONOTONIC, {1194110, 935709999}) = 0
[pid 26890] clock_gettime(CLOCK_REALTIME, {1462217998, 861817062}) = 0
[pid 26890] select(0, NULL, NULL, NULL, {0, 20}) = 0 (Timeout)
[pid 26890] clock_gettime(CLOCK_MONOTONIC, {1194110, 935872149}) = 0
[pid 26890] clock_gettime(CLOCK_REALTIME, {1462217998, 861975102}) = 0
[pid 26890] select(0, NULL, NULL, NULL, {0, 20}) = 0 (Timeout)
[pid 26890] clock_gettime(CLOCK_MONOTONIC, {1194110, 936046201}) = 0
[pid 26890] clock_gettime(CLOCK_REALTIME, {1462217998, 862149543}) = 0
[pid 26890] select(0, NULL, NULL, NULL, {0, 20}) = 0 (Timeout)
[pid 26890] clock_gettime(CLOCK_MONOTONIC, {1194110, 936215534}) = 0
[pid 26890] clock_gettime(CLOCK_REALTIME, {1462217998, 862318597}) = 0
[pid 26890] select(0, NULL, NULL, NULL, {0, 20}) = 0 (Timeout)
[pid 26890] clock_gettime(CLOCK_MONOTONIC, {1194110, 936384887}) = 0
[pid 26890] clock_gettime(CLOCK_REALTIME, {1462217998, 862488231}) = 0
[pid 26890] select(0, NULL, NULL, NULL, {0, 20}) = 0 (Timeout)
[pid 26890] clock_gettime(CLOCK_MONOTONIC, {1194110, 936547503}) = 0
[pid 26890] clock_gettime(CLOCK_REALTIME, {1462217998, 862650775}) = 0
[pid 26890] select(0, NULL, NULL, NULL, {0, 20}) = 0 (Timeout)
[pid 26890] clock_gettime(CLOCK_MONOTONIC, {1194110, 936708047}) = 0
[pid 26890] clock_gettime(CLOCK_REALTIME, {1462217998, 862810981}) = 0
[pid 26890] select(0, NULL, NULL, NULL, {0, 20}) = 0 (Timeout)
[pid 26890] clock_gettime(CLOCK_MONOTONIC, {1194110, 936875834}) = 0
[pid 26890] clock_gettime(CLOCK_REALTIME, {1462217998, 862978790}) = 0
[pid 26890] select(0, NULL, NULL, NULL, {0, 20}) = 0 (Timeout)
[pid 26890] clock_gettime(CLOCK_MONOTONIC, {1194110, 937049520}) = 0
[pid 26890] clock_gettime(CLOCK_REALTIME, {1462217998, 863161620}) = 0
[pid 26890] select(0, NULL, NULL, NULL, {0, 20}) = 0 (Timeout)
[pid 26890] clock_gettime(CLOCK_MONOTONIC, {1194110, 937216897}) = 0
[pid 26890] clock_gettime(CLOCK_REALTIME, {1462217998, 863319694}) = 0
[pid 26890] select(0, NULL, NULL, NULL, {0, 20}) = 0 (Timeout)
[pid 26890] clock_gettime(CLOCK_MONOTONIC, {1194110, 937382999}) = 0
[pid 26890] clock_gettime(CLOCK_REALTIME, {1462217998, 863485851}) = 0
[pid 26890] select(0, NULL, NULL, NULL, {0, 20}) = 0 (Timeout)
[pid 26890] clock_gettime(CLOCK_MONOTONIC, {1194110, 937549477}) = 0
[pid 26890] clock_gettime(CLOCK_REALTIME, {1462217998, 863652283}) = 0
[pid 26890] select(0, NULL, NULL, NULL, {0, 20}) = 0 (Timeout)
[pid 26890] clock_gettime(CLOCK_MONOTONIC, {1194110, 937722463}) = 0
[pid 26890] clock_gettime(CLOCK_REALTIME, {1462217998, 863833602}) = 0
[pid 26890] select(0, NULL, NULL, NULL, {0, 20}) = 0 (Timeout)
[pid 26890] clock_gettime(CLOCK_MONOTONIC, {1194110, 937888537}) = 0
[pid 26889] futex(0xc8200e9790, FUTEX_WAKE, 1 <unfinished ...>
[pid 26890] clock_gettime(CLOCK_REALTIME,  <unfinished ...>
[pid 26889] <... futex resumed> )       = 1
[pid 26893] <... futex resumed> )       = 0
[pid 26890] <... clock_gettime resumed> {1462217998, 864010029}) = 0
[pid 26890] select(0, NULL, NULL, NULL, {0, 20} <unfinished ...>
[pid 26889] futex(0x1df2f50, FUTEX_WAIT, 0, NULL <unfinished ...>
[pid 26893] futex(0xc8200e9790, FUTEX_WAIT, 0, NULL <unfinished ...>
[pid 26890] <... select resumed> )      = 0 (Timeout)
[pid 26890] clock_gettime(CLOCK_MONOTONIC, {1194110, 938059687}) = 0
[pid 26890] futex(0x1df2400, FUTEX_WAIT, 0, {60, 0}

@mwhooker ๋ถˆํ–‰ํžˆ๋„ ๋„์ปค ํด๋ผ์ด์–ธํŠธ์˜ strace๋Š” ๋ฐ๋ชฌ์—์„œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ๋ณผ ํ•„์š”๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ๋กœ๋ณ„๋กœ ๋„์›€์ด๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฉˆ์ถ˜ ๋ฐ๋ชฌ์—์„œ SIGUSR1์„ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๊ทธ์— ์Šคํƒ ์ถ”์ ์„ ๋ฑ‰์–ด ๋‚ด์‹ญ์‹œ์˜ค.

์—ฌ๊ธฐ ๋‚ด sigusr1 ์ถœ๋ ฅ https://gist.github.com/mwhooker/6858c0d0c123e214ef69d0a4bff2d7cc (cc @ cpuguy83)

์—ฌ๊ธฐ์— ๊ณ ์ • ๋œ ๋„์ปค ๋ฐ๋ชฌ์˜ ๋˜ ๋‹ค๋ฅธ sigusr1 ๋คํ”„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

https://gist.github.com/mwhooker/e837f08370145d183e661c03a5b9d07e

strace ๋‹ค์‹œ FUTEX_WAIT ์—์„œ ๋ฐ๋ชฌ์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ์—๋Š” ์‹ค์ œ๋กœ ํ˜ธ์ŠคํŠธ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ถ”๊ฐ€ ๋””๋ฒ„๊น…์„ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ณง ๋ฐ๋ชฌ์„ ์ฃฝ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•‘ @ cpuguy83 ^^

1.11.1 (4.2.5-300.fc23), Overlay / EXT4์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Celery ์ž‘์—…์ž๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์ž‘์—…์„๋กœ๋“œ ํ•œ ๋‹ค์Œ stop ์‹œ๋„ ํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ทธ ์•ˆ์—์žˆ๋Š” ์–ด๋–ค ๊ฒƒ๋„ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
rpc error: code = 2 desc = "oci runtime error: exec failed: exit status 1"

๊ทธ๋ž˜์„œ ์ปจํ…Œ์ด๋„ˆ ์ค‘ ์ผ๋ถ€๊ฐ€ ํŒŒ๊ดด ๋œ ๊ฒƒ ๊ฐ™์ง€๋งŒ ์ž‘์—…์„ ์™„๋ฃŒ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์…€๋Ÿฌ๋ฆฌ๊ฐ€ ์šฉ๊ธฐ ์•ˆ์—์„œ ์ฃฝ์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฌด์—‡์ด ๊ทธ๊ฒƒ์„ ๋‹ด๊ณ  ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š๋‹ค.

ํŽธ์ง‘ํ•˜๋‹ค:
์…€๋Ÿฌ๋ฆฌ๋Š” ์™„์ „ํžˆ ์ฃฝ์ง€ ์•Š์•˜๊ณ  D์— ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉˆ์ถฐ์žˆ์–ด์„œ ์žฌ๋ถ€ํŒ…์ด ์œ ์ผํ•œ ์˜ต์…˜์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

https://github.com/docker/docker/issues/20401#issuecomment -231337800์„ ์ฐธ์กฐ

๋†’์€๋กœ๋“œ (๋†’์€ ๋น„์œจ๋กœ ์ƒ์„ฑ / ์‚ญ์ œํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ)์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

  • CoreOS 1068.8.0
  • Docker 1.10.3
  • uname -a :
Linux coreos_k8s_28 4.6.3-coreos #2 SMP Mon Jul 18 06:10:39 UTC 2016 x86_64 Intel(R) Xeon(R) CPU E5-2630 0 @ 2.30GHz GenuineIntel GNU/Linux
  • kubernetes 1.2.0

๋‹ค์Œ์€ ๋„์ปค ๋””๋ฒ„๊ทธ ๋กœ๊ทธ์˜ ์š”์ ์ž…๋‹ˆ๋‹ค (SIGUSR1์„ ๋„์ปค ๋ฐ๋ชฌ์œผ๋กœ ๋ณด๋ƒ„) : https://gist.github.com/ntquyen/409376bc0d8418a31023c1546241e190

@ntquyen์œผ๋กœ . ๋™์ผํ•œ os / kernel / docker ๋ฒ„์ „.

Repro๋Š” ์—ฌ์ „ํžˆ ์„œ ์žˆ์Šต๋‹ˆ๋‹ค https://github.com/docker/docker/issues/13885#issuecomment -181811082

์ œ ๊ฒฝ์šฐ์—๋Š” ๋จธ์‹ ์ด 90 % ์ด์ƒ์˜ ๋””์Šคํฌ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋“ค์—๊ฒŒ ๋” ๋งŽ์€ ๋””์Šคํฌ ๊ณต๊ฐ„์„ ํ• ๋‹นํ–ˆ๊ณ  ๊ทธ๋“ค์€ ๋†’์€ ๋ถ€ํ•˜ ์ƒํƒœ์—์„œ๋„ ์ง€๊ธˆ ๊ฝค ์•ˆ์ •์ ์œผ๋กœ ์‹คํ–‰๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@mwhooker ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ๋ชฌ์ด netlink ํ˜ธ์ถœ์— ์ค‘๋‹จ ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์–ด๋–ค ๋ฐ๋ชฌ ์˜ต์…˜์„ ์„ค์ • ํ–ˆ์Šต๋‹ˆ๊นŒ?

๋‚ด๊ฐ€ "์ค‘๋‹จ"์ด๋ผ๊ณ  ๋งํ•˜๋ฉด ์‹ค์ œ๋กœ ์ „์ฒด ๋ฐ๋ชฌ์ด ๋™๊ฒฐ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ ๊ฐ์ฒด์— ์•ก์„ธ์Šคํ•ด์•ผํ•˜๋Š” API ํ˜ธ์ถœ๋„ ๋„ท ๋งํฌ ํ˜ธ์ถœ์— ๋ฉˆ์ถฐ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ ๋ฎคํ…์Šค๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ๋ฌธ์ œ๋ฅผ ์™„ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ํ•  ์ˆ˜์žˆ๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์„ ์‚ดํŽด ๋ด…๋‹ˆ๋‹ค.

@pmoust ๋ฐ๋ชฌ์—์„œ ์Šคํƒ ์ถ”์ ์„ ์ œ๊ณต ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? (๊ณ ์ฐฉ ๋œ ๋ฐ๋ชฌ์— SIGUSR1 ๋ณด๋‚ด๊ธฐ ๋ฐ ๋ฐ๋ชฌ ๋กœ๊ทธ์—์„œ ์ถ”์  ์ˆ˜์ง‘)
๋˜ํ•œ ๋ฐ๋ชฌ์„ ์‹œ์ž‘ํ•œ ์˜ต์…˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌ!

@ntquyen ๋‚˜๋Š” ๋‹น์‹ ์ด ๋งž์€ ๋ฌธ์ œ๊ฐ€ 1.11.2์—์„œ ์ˆ˜์ • ๋œ # 22732์™€ ๊ด€๋ จ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
๋ฌธ์ œ๋ฅผ ํ•œ ๋ฒˆ๋งŒ ์–ธ๊ธ‰ ํ–ˆ์Šต๋‹ˆ๊นŒ?

@ cpuguy83 ๋‚˜์—๊ฒŒ ๋Œ์•„์™€ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ฐ๋ชฌ์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

/usr/bin/docker daemon --icc=false --storage-driver=overlay --log-driver=journald --host=fd://

๊ด€๋ จ์ด ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ๋กœ๊ทธ์—์„œ ์ด๋Ÿฌํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ๋งŽ์ด ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

Jul 19 10:22:55 ip-10-0-37-191.ec2.internal systemd-networkd[852]: veth0adae8a: Removing non-existent address: fe80::e855:98ff:fe3f:8b2c/64 (valid forever)

(ํŽธ์ง‘ : ์ด๊ฒƒ๋“ค๋„)

[19409.536106] unregister_netdevice: waiting for veth2304bd1 to become free. Usage count = 1

@mwhooker ํ•˜๋‹จ ๋ฉ”์‹œ์ง€๋Š” ์•„๋งˆ๋„ ์—ฌ๊ธฐ์— docker๊ฐ€ ๋ถ™์–ด ์žˆ์ง€๋งŒ --userland-proxy=false ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ด๊ฒƒ์„ ์–ป๋Š” ๊ฒƒ์— ๋†€๋ž์Šต๋‹ˆ๋‹ค.

@ cpuguy83 ํฅ๋ฏธ๋กœ์šด ์ ์€ --proxy-mode=userspace hyperkube๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ ์›์ธ์ด ๊ฐ€๋Šฅํ•œ๊ฐ€์š”?

@mwhooker ๋Š” ํ”Œ๋ž˜๊ทธ ์„ค๋ช…์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๊ธฐ๋ณธ์ ์œผ๋กœ --userland-proxy=false ์€ ์ปจํ…Œ์ด๋„ˆ์˜ ๋ธŒ๋ฆฌ์ง€ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ํ—ค์–ดํ•€ ๋ชจ๋“œ๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ปค๋„์—์„œ ๋งŽ์€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ถ”๊ฐ€ / ์ œ๊ฑฐ ํ•  ๋•Œ (๋˜๋Š” ๋ณ‘๋ ฌ๋กœ ์—ฌ๋Ÿฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ ํ•  ๋•Œ) ๊ฝค ๋‚˜์œ ๋™๊ฒฐ์„ ์œ ๋ฐœํ•˜๋Š” ์ผ๋ถ€ ์กฐ๊ฑด์„ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. (๋ฐ ํ‘œ์‹œ๋˜๋Š” ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€).

๋ธŒ๋ฆฌ์ง€ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ํ—ค์–ดํ•€ ๋ชจ๋“œ์ธ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@ cpuguy83 ์ด๊ฒƒ์€์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋ณ„๋„์˜ ์„œ๋ฒ„ ์ง‘ํ•ฉ์˜ docker ๋ช…๋ น์ž…๋‹ˆ๋‹ค.

docker daemon --host=fd:// --icc=false --storage-driver=overlay --log-driver=journald --exec-opt native.cgroupdriver=systemd --bip=10.2.122.1/24 --mtu=8951 --ip-masq=true --selinux-enable

์ด veth ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ํ—ค์–ดํ•€ ๋ชจ๋“œ์— ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

cat /sys/devices/virtual/net/docker0/brif/veth*/hairpin_mode
1
1

์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€๋ณด๊ณ ์žˆ๋Š” ๋„์ปค ์ค‘๋‹จ ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜ ์ด์ƒ์˜ ์›์ธ์ธ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

(fwiw ์šฐ๋ฆฌ๋Š” flannel https://github.com/kubernetes/kubernetes/issues/20391๊ณผ์˜ ์ƒํ˜ธ ์ž‘์šฉ ๋•Œ๋ฌธ์— kube-proxy์—์„œ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„ ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค)

@ cpuguy83 ๋ถˆํ–‰ํžˆ๋„ ์ตœ์‹  ์•ˆ์ •๋œ coreos์—์„œ docker 1.10์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ docker 1.12๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋””์Šคํฌ ๊ณต๊ฐ„์„ ๋Š˜๋ฆฐ ํ›„์—๋„ ๋ฌธ์ œ๊ฐ€ ์™„์ „ํžˆ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

  • Docker : 1.12
  • ์ปค๋„ : 4.4.3
  • ๋ฐฐํฌํŒ : ์šฐ๋ถ„ํˆฌ

์•…๋งˆ:

    # strace -q -y -v -p `pidof dockerd`
    futex(0x2a69be8, FUTEX_WAIT, 0, NULL
    futex(0xc820e1b508, FUTEX_WAKE, 1)      = 1
    futex(0x2a69be8, FUTEX_WAIT, 0, NULL)   = 0
    futex(0xc8224b0508, FUTEX_WAKE, 1)      = 1
    futex(0x2a69be8, FUTEX_WAIT, 0, NULL)   = 0
    futex(0x2a69be8, FUTEX_WAIT, 0, NULL

๊ณ ๊ฐ:

    # strace docker ps
    execve("/usr/bin/docker", ["docker", "ps"], [/* 24 vars */]) = 0
    brk(0)                                  = 0x2584000
    ...
    stat("/root/.docker/config.json", {st_mode=S_IFREG|0600, st_size=91, ...}) = 0
    openat(AT_FDCWD, "/root/.docker/config.json", O_RDONLY|O_CLOEXEC) = 3
    read(3, "{\n\t\"auths\": {\n\t\t\"https://quay.io"..., 512) = 91
    close(3)                                = 0
    ioctl(0, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
    ioctl(1, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
    futex(0xc820068108, FUTEX_WAKE, 1)      = 1
    futex(0xc820068108, FUTEX_WAKE, 1)      = 1
    socket(PF_LOCAL, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3
    setsockopt(3, SOL_SOCKET, SO_BROADCAST, [1], 4) = 0
    connect(3, {sa_family=AF_LOCAL, sun_path="/var/run/docker.sock"}, 23) = 0
    epoll_create1(EPOLL_CLOEXEC)            = 4
    epoll_ctl(4, EPOLL_CTL_ADD, 3, {EPOLLIN|EPOLLOUT|EPOLLRDHUP|EPOLLET, {u32=3136698616, u64=140182279305464}}) = 0
    getsockname(3, {sa_family=AF_LOCAL, NULL}, [2]) = 0
    getpeername(3, {sa_family=AF_LOCAL, sun_path="/var/run/docker.sock"}, [23]) = 0
    futex(0xc820032d08, FUTEX_WAKE, 1)      = 1
    read(3, 0xc820356000, 4096)             = -1 EAGAIN (Resource temporarily unavailable)
    write(3, "GET /v1.24/containers/json HTTP/"..., 95) = 95
    futex(0x132aca8, FUTEX_WAIT, 0, NULL

rspec ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ Debian์—์„œ ์—ฌ์ „ํžˆ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ปค๋„ : 4.4.0-28- ์ผ๋ฐ˜
Docker : 1.12.2-0 ~ xenial

ํ˜„์žฌ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๋งˆ์ง€๋ง‰ ์•ˆ์ • ๋ฒ„์ „ ์ธ Docker 1.10.3-0 ~ wily๋กœ ๋Œ์•„๊ฐ€๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@mblaschke @Bregor stacktrace๋ฅผ ๊ฒŒ์‹œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ ์šฐ๋ฆฌ ํ™˜๊ฒฝ์—์„œ ํ•œ๋™์•ˆ ์ผ์–ด๋‚˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค : [

$ docker info
Containers: 20
 Running: 6
 Paused: 0
 Stopped: 14
Images: 57
Server Version: 1.11.1
Storage Driver: overlay
 Backing Filesystem: extfs
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins: 
 Volume: local
 Network: bridge null host
Kernel Version: 3.18.27
Operating System: Debian GNU/Linux 8 (jessie)
OSType: linux
Architecture: x86_64
CPUs: 24
Total Memory: 125.8 GiB
Name: appdocker414-sjc1
ID: ZTWC:53NH:VKUZ:5FZK:SLZN:YPI4:ICK2:W7NF:UIGD:P2NQ:RHUD:PS6Y
Docker Root Dir: /var/lib/docker
Debug mode (client): false
Debug mode (server): false
Registry: https://index.docker.io/v1/
WARNING: No swap limit support

์ปค๋„ : 3.18.27

Stackstrace : https://gist.github.com/dmyerscough/6948218a228ff69dd6e309f8de0f0261

@dmyerscough ์ด๊ฒƒ์€ https://github.com/docker/docker/issues/22732 ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. 1.11.2 ๋ฐ 1.12์—์„œ ์ˆ˜์ • ๋จ

๋งค๋ถ„ docker run --rm ๋กœ ๊ฐ„๋‹จํ•œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  Docker ์„œ๋น„์Šค๋Š” ๋•Œ๋•Œ๋กœ ๋‹ค์‹œ ์‹œ์ž‘๋  ๋•Œ๊นŒ์ง€ ๊ต์ฐฉ ์ƒํƒœ๊ฐ€๋ฉ๋‹ˆ๋‹ค.

docker -D info
Containers: 6
 Running: 2
 Paused: 0
 Stopped: 4
Images: 6
Server Version: 1.11.2
Storage Driver: overlay
 Backing Filesystem: extfs
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: host bridge null
Kernel Version: 4.7.3-coreos-r2
Operating System: CoreOS 1185.3.0 (MoreOS)
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 7.8 GiB
Name: <hostname>
ID: GFHQ:Y6IV:XCQI:Y2NA:PCQN:DEII:OSPZ:LENL:OCFU:6CBI:MDFV:EMD7
Docker Root Dir: /var/lib/docker
Debug mode (client): true
Debug mode (server): false
Username: <username>
Registry: https://index.docker.io/v1/

์ค‘๋‹จ๋˜๊ธฐ ์ „ ๋งˆ์ง€๋ง‰ ๋ฉ”์‹œ์ง€ :

Nov 04 16:42:01 dockerd[1447]: time="2016-11-04T16:42:01Z" level=error msg="containerd: deleting container" error="wait: no child processes"

@ liquid-sky ๋” ๋งŽ์€ ์ •๋ณด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๋ฐ๋ชฌ ๋กœ๊ทธ์— ์œ ์šฉํ•œ ์ •๋ณด ๋˜๋Š” ์Šคํƒ ์ถ”์ ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๊นŒ? ๋˜ํ•œ CoreOS ์šฉ ๊ณต์‹ ํŒจํ‚ค์ง€๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ˆ˜์ • ๋œ ํŒจํ‚ค์ง€ / ๊ตฌ์„ฑ์„ ๋ฐฐํฌํ•˜๋Š” ๊ฒฝ์šฐ๋ณด๊ณ  ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

@thaJeztah ๋ถˆํ–‰ํžˆ๋„ ์ €๋„ ๋กœ๊ทธ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ธฐ๋ก ๋œ ์ดํ›„๋กœ ํšŒ์ „ํ–ˆ์Šต๋‹ˆ๋‹ค.

$ ps -ef | grep -w 148[9] | head -1
root      1489     1  0 Nov02 ?        00:20:35 docker daemon --host=fd:// --insecure-registry=<registry_address> --selinux-enabled
sudo strace -e verbose=all -v -p 1489
Process 1489 attached
futex(0x22509c8, FUTEX_WAIT, 0, NULL
$ sudo strace docker ps
.....
clock_gettime(CLOCK_REALTIME, {1478601605, 8732879}) = 0
clock_gettime(CLOCK_REALTIME, {1478601605, 9085011}) = 0
clock_gettime(CLOCK_REALTIME, {1478601605, 9242006}) = 0
socket(PF_LOCAL, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3
setsockopt(3, SOL_SOCKET, SO_BROADCAST, [1], 4) = 0
connect(3, {sa_family=AF_LOCAL, sun_path="/run/systemd/journal/socket"}, 30) = 0
epoll_create1(EPOLL_CLOEXEC)            = 4
epoll_ctl(4, EPOLL_CTL_ADD, 3, {EPOLLIN|EPOLLOUT|EPOLLRDHUP|EPOLLET, {u32=3317119944, u64=140066495609800}}) = 0
getsockname(3, {sa_family=AF_LOCAL, NULL}, [2]) = 0
getpeername(3, {sa_family=AF_LOCAL, sun_path="/run/systemd/journal/socket"}, [30]) = 0
stat("/root/.docker/config.json", 0xc8203b6fa8) = -1 ENOENT (No such file or directory)
stat("/root/.dockercfg", 0xc8203b7078)  = -1 ENOENT (No such file or directory)
stat("/bin/docker-credential-secretservice", 0xc8203b7148) = -1 ENOENT (No such file or directory)
stat("/sbin/docker-credential-secretservice", 0xc8203b7218) = -1 ENOENT (No such file or directory)
stat("/usr/bin/docker-credential-secretservice", 0xc8203b72e8) = -1 ENOENT (No such file or directory)
stat("/usr/sbin/docker-credential-secretservice", 0xc8203b73b8) = -1 ENOENT (No such file or directory)
stat("/usr/local/bin/docker-credential-secretservice", 0xc8203b7488) = -1 ENOENT (No such file or directory)
stat("/usr/local/sbin/docker-credential-secretservice", 0xc8203b7558) = -1 ENOENT (No such file or directory)
stat("/opt/bin/docker-credential-secretservice", 0xc8203b7628) = -1 ENOENT (No such file or directory)
ioctl(0, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
futex(0xc8202c9108, FUTEX_WAKE, 1)      = 1
clock_gettime(CLOCK_REALTIME, {1478601605, 11810493}) = 0
clock_gettime(CLOCK_REALTIME, {1478601605, 11888495}) = 0
socket(PF_LOCAL, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 5
setsockopt(5, SOL_SOCKET, SO_BROADCAST, [1], 4) = 0
connect(5, {sa_family=AF_LOCAL, sun_path="/var/run/docker.sock"}, 23) = 0
clock_gettime(CLOCK_REALTIME, {1478601605, 12378242}) = 0
epoll_ctl(4, EPOLL_CTL_ADD, 5, {EPOLLIN|EPOLLOUT|EPOLLRDHUP|EPOLLET, {u32=3317119752, u64=140066495609608}}) = 0
getsockname(5, {sa_family=AF_LOCAL, NULL}, [2]) = 0
getpeername(5, {sa_family=AF_LOCAL, sun_path="/var/run/docker.sock"}, [23]) = 0
futex(0xc820026d08, FUTEX_WAKE, 1)      = 1
read(5, 0xc8203d6000, 4096)             = -1 EAGAIN (Resource temporarily unavailable)
write(5, "GET /v1.23/containers/json HTTP/"..., 89) = 89
futex(0xc820026d08, FUTEX_WAKE, 1)      = 1
futex(0x22509c8, FUTEX_WAIT, 0, NULL

๋ชจ๋“  containerd ์„œ๋น„์Šค๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

ps -ef | grep container[d]
root      1513  1489  0 Nov02 ?        00:00:53 containerd -l /var/run/docker/libcontainerd/docker-containerd.sock --runtime runc --start-timeout 2m
root      2774  1513  0 Nov02 ?        00:00:00 containerd-shim a90d4642fd88ab38c66a733e2cef8f427533e736d14d48743d42f55dec62447f /var/run/docker/libcontainerd/a90d4642fd88ab38c66a733e2cef8f427533e736d14d48743d42f55dec62447f runc
root      3946  1513  0 Nov02 ?        00:00:00 containerd-shim c8903c4a137fbb297efc3fcf2c69d746e94431f22c7fdf1a46ff7c69d04ffb0d /var/run/docker/libcontainerd/c8903c4a137fbb297efc3fcf2c69d746e94431f22c7fdf1a46ff7c69d04ffb0d runc
root      4783  1513  0 Nov02 ?        00:03:36 containerd-shim d8c2203adfc26f7d11a62d9d90ddf97f04c458f72855ee1987ed1af911a2ab55 /var/run/docker/libcontainerd/d8c2203adfc26f7d11a62d9d90ddf97f04c458f72855ee1987ed1af911a2ab55 runc
root     16684  1513  0 Nov02 ?        00:00:00 containerd-shim 4d62424ca8cceb29c877bf129cd46341a53e191c9858b93aca3d5cbcfaaa1876 /var/run/docker/libcontainerd/4d62424ca8cceb29c877bf129cd46341a53e191c9858b93aca3d5cbcfaaa1876 runc
root     16732  1513  0 Nov02 ?        00:03:24 containerd-shim 2f8e2a858306322c10aa7823c92f22133f1c5e5f267ce61e542c1d8bd537b121 /var/run/docker/libcontainerd/2f8e2a858306322c10aa7823c92f22133f1c5e5f267ce61e542c1d8bd537b121 runc
root     20902  1513  0 Nov02 ?        00:00:05 containerd-shim 58572e7fab122d593bdb096b0dd33551c22ce50a0c51d6662bc0c7b3d3bf9248 /var/run/docker/libcontainerd/58572e7fab122d593bdb096b0dd33551c22ce50a0c51d6662bc0c7b3d3bf9248 runc
$ sudo strace -T -e verbose=all -v -p 1513
Process 1513 attached
futex(0x1028dc8, FUTEX_WAIT, 0, NULL

@ liquid-sky strace ์ผ๋ฐ˜ dockerd์˜ futex(0x22509c8, FUTEX_WAIT, 0, NULL ๋„ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์˜๋ฏธ์žˆ๋Š” ๋‚ด์šฉ์ด ์—†์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๋ชจ๋“  ์Šค๋ ˆ๋“œ๋ฅผ ์ถ”์ ํ•˜๋ ค๋ฉด -f ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. .

๋‚˜๋Š” ์ด๊ฒƒ์ด์ด ๋ฌธ์ œ ์™€ ๊ด€๋ จ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ --rm ๋งค๋ถ„ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  Docker๊ฐ€ ํ•ด๋‹น ํŠน์ • ์ปจํ…Œ์ด๋„ˆ์— ๋ฉˆ์ถ˜๋‹ค๋Š” ์˜๋ฏธ์—์„œ docker ps ๊ฐ€ ๋งค๋‹ฌ๋ฆฐ ์ผ๋ถ€ ๋…ธ๋“œ์—๋Š” unregistered loopback device ๋ฉ”์‹œ์ง€.

๊ฒฝ์šฐ์— ๋”ฐ๋ผ Docker ๋ฐ๋ชฌ์˜ strace -f ์Šค ๋‹ˆํŽซ :

[pid  1507] select(0, NULL, NULL, NULL, {0, 20} <unfinished ...>
[pid  1766] write(23, "\2\0\0\0\0\0\0\321I1108 10:48:12.429657   "..., 217) = 217
[pid  1507] <... select resumed> )      = 0 (Timeout)
[pid  1766] futex(0xc822075d08, FUTEX_WAIT, 0, NULL <unfinished ...>
[pid  1507] clock_gettime(CLOCK_MONOTONIC, {514752, 140621361}) = 0
[pid  1875] <... epoll_wait resumed> {{EPOLLIN|EPOLLOUT|EPOLLRDHUP, {u32=1298424080, u64=140528333381904}}}, 128, -1) = 1
[pid  1507] clock_gettime(CLOCK_REALTIME,  <unfinished ...>
[pid  1875] epoll_wait(6,  <unfinished ...>
[pid  1507] <... clock_gettime resumed> {1478602092, 431376727}) = 0
[pid  1507] select(0, NULL, NULL, NULL, {0, 20} <unfinished ...>
[pid  1514] <... read resumed> "I1108 10:48:12.431656    12 mast"..., 32768) = 1674
[pid  1507] <... select resumed> )      = 0 (Timeout)
[pid  1514] futex(0xc822075d08, FUTEX_WAKE, 1 <unfinished ...>
[pid  1507] clock_gettime(CLOCK_MONOTONIC,  <unfinished ...>
[pid  1766] <... futex resumed> )       = 0
[pid  1514] <... futex resumed> )       = 1
[pid  1766] select(0, NULL, NULL, NULL, {0, 100} <unfinished ...>
[pid  1514] clock_gettime(CLOCK_REALTIME,  <unfinished ...>
[pid  1507] <... clock_gettime resumed> {514752, 142476308}) = 0
[pid  1514] <... clock_gettime resumed> {1478602092, 432632124}) = 0
[pid  1507] clock_gettime(CLOCK_REALTIME,  <unfinished ...>
[pid  1514] write(45, "{\"log\":\"I1108 10:48:12.431656   "..., 349 <unfinished ...>
[pid  1507] <... clock_gettime resumed> {1478602092, 432677401}) = 0
[pid  1514] <... write resumed> )       = 349
[pid  1507] select(0, NULL, NULL, NULL, {0, 20} <unfinished ...>
[pid  1514] clock_gettime(CLOCK_REALTIME, {1478602092, 432812895}) = 0
[pid  1766] <... select resumed> )      = 0 (Timeout)
[pid  1514] write(45, "{\"log\":\"I1108 10:48:12.431763   "..., 349 <unfinished ...>
[pid  1507] <... select resumed> )      = 0 (Timeout)
[pid  1514] <... write resumed> )       = 349
[pid  1507] clock_gettime(CLOCK_MONOTONIC,  <unfinished ...>
[pid  1514] clock_gettime(CLOCK_REALTIME,  <unfinished ...>
[pid  1507] <... clock_gettime resumed> {514752, 142831922}) = 0
[pid  1514] <... clock_gettime resumed> {1478602092, 432948135}) = 0
[pid  1507] clock_gettime(CLOCK_REALTIME,  <unfinished ...>
[pid  1514] write(45, "{\"log\":\"I1108 10:48:12.431874   "..., 349 <unfinished ...>
[pid  1507] <... clock_gettime resumed> {1478602092, 432989394}) = 0
[pid  1514] <... write resumed> )       = 349
[pid  1507] select(0, NULL, NULL, NULL, {0, 20} <unfinished ...>
[pid  1766] read(44, "I1108 10:48:12.432255    12 mast"..., 32768) = 837
[pid  1514] clock_gettime(CLOCK_REALTIME, {1478602092, 433114452}) = 0
[pid  1766] read(44,  <unfinished ...>
[pid  1514] write(45, "{\"log\":\"I1108 10:48:12.431958   "..., 349) = 349
[pid  1507] <... select resumed> )      = 0 (Timeout)
[pid  1514] clock_gettime(CLOCK_REALTIME,  <unfinished ...>
[pid  1507] clock_gettime(CLOCK_MONOTONIC,  <unfinished ...>
[pid  1514] <... clock_gettime resumed> {1478602092, 433272783}) = 0
[pid  1507] <... clock_gettime resumed> {514752, 143176397}) = 0
[pid  1514] write(45, "{\"log\":\"I1108 10:48:12.432035   "..., 349 <unfinished ...>
[pid  1507] clock_gettime(CLOCK_REALTIME,  <unfinished ...>
[pid  1514] <... write resumed> )       = 349
[pid  1507] <... clock_gettime resumed> {1478602092, 433350170}) = 0
[pid  1514] clock_gettime(CLOCK_REALTIME,  <unfinished ...>
[pid  1507] select(0, NULL, NULL, NULL, {0, 20} <unfinished ...>
[pid  1514] <... clock_gettime resumed> {1478602092, 433416138}) = 0
[pid  1514] write(45, "{\"log\":\"I1108 10:48:12.432126   "..., 349) = 349
[pid  1514] clock_gettime(CLOCK_REALTIME,  <unfinished ...>
[pid  1507] <... select resumed> )      = 0 (Timeout)
[pid  1514] <... clock_gettime resumed> {1478602092, 433605782}) = 0
[pid  1507] clock_gettime(CLOCK_MONOTONIC,  <unfinished ...>
[pid  1514] write(45, "{\"log\":\"I1108 10:48:12.432255   "..., 349 <unfinished ...>
[pid  1507] <... clock_gettime resumed> {514752, 143537029}) = 0
[pid  1514] <... write resumed> )       = 349
[pid  1507] clock_gettime(CLOCK_REALTIME,  <unfinished ...>
[pid  1514] clock_gettime(CLOCK_REALTIME, {1478602092, 433748730}) = 0
[pid  1507] <... clock_gettime resumed> {1478602092, 433752245}) = 0
[pid  1514] write(45, "{\"log\":\"I1108 10:48:12.432343   "..., 348 <unfinished ...>
[pid  1507] futex(0xc8211b2d08, FUTEX_WAKE, 1 <unfinished ...>
[pid  1514] <... write resumed> )       = 348
[pid  1507] <... futex resumed> )       = 1
[pid 10488] <... futex resumed> )       = 0
[pid 10488] write(23, "\2\0\0\0\0\0\t\317I1108 10:48:12.431656   "..., 2519 <unfinished ...>
[pid  1514] clock_gettime(CLOCK_REALTIME,  <unfinished ...>
[pid  1507] select(0, NULL, NULL, NULL, {0, 20} <unfinished ...>
[pid 10488] <... write resumed> )       = 2519
[pid 10488] futex(0xc8211b2d08, FUTEX_WAIT, 0, NULL <unfinished ...>
[pid  1875] <... epoll_wait resumed> {{EPOLLIN|EPOLLOUT|EPOLLRDHUP, {u32=1298424080, u64=140528333381904}}}, 128, -1) = 1
[pid  1514] <... clock_gettime resumed> {1478602092, 434094221}) = 0
[pid  1514] write(45, "{\"log\":\"I1108 10:48:12.432445   "..., 349) = 349
[pid  1514] futex(0xc820209908, FUTEX_WAIT, 0, NULL <unfinished ...>
[pid  1507] <... select resumed> )      = 0 (Timeout)
[pid  1507] clock_gettime(CLOCK_MONOTONIC, {514752, 144370753}) = 0
[pid  1507] futex(0x224fe10, FUTEX_WAIT, 0, {60, 0} <unfinished ...>
[pid  1875] epoll_wait(6,  <unfinished ...>
[pid  1683] <... futex resumed> )       = -1 ETIMEDOUT (Connection timed out)
[pid  1683] clock_gettime(CLOCK_MONOTONIC, {514752, 292709791}) = 0
[pid  1683] futex(0x224fe10, FUTEX_WAKE, 1) = 1
[pid  1507] <... futex resumed> )       = 0

centos 7์—์„œ ๋ฃจํ”„๋ฐฑ๊ณผ ํ•จ๊ป˜ devicemapper๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌด์Šจ ์ผ์ด ์žˆ์—ˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ dmsetup udevcookies & dmsetup udevcomplete <cookie> ๊ฐ€ ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค.

@thaJeztah ๋‹น์‹ ์€ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด ๋‚ฌ๋Š”์ง€ ์„ค๋ช… ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ์—ฌ๊ธฐ์—์„œ ์ด์ „์— ์—ฌ๋Ÿฌ ๋ฒˆ ์–ธ๊ธ‰ ๋œ ๊ฒƒ์„ ๋ฐ˜๋ณตํ•˜๊ณ ์žˆ๋‹ค. ์ค‘๋‹จ์ด ๋ฐœ์ƒํ•˜๋ฉด SIGUSR1 ์‹ ํ˜ธ๋ฅผ ๋ฐ๋ชฌ ํ”„๋กœ์„ธ์Šค๋กœ ๋ณด๋‚ด๊ณ  ๋กœ๊ทธ์— ๊ธฐ๋ก ๋œ ์ถ”์ ์„ ๋ณต์‚ฌํ•˜์‹ญ์‹œ์˜ค. Strace ์ถœ๋ ฅ์€ ์ •์ง€ ๋””๋ฒ„๊น…์— ์œ ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ์„ธ์Šค์—์„œ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์œผ๋ฉฐ ์ผ๋ฐ˜์ ์œผ๋กœ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉˆ์ท„๊ฑฐ๋‚˜ ์ž ์ž๊ธฐ ์ƒํƒœ์ธ์ง€ ํ‘œ์‹œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@tonistiigi ๊ฐ€ Hang-under-load๋กœ

$ docker info
Containers: 18
 Running: 15
 Paused: 0
 Stopped: 3
Images: 232
Server Version: 1.12.3
Storage Driver: devicemapper
 Pool Name: vg_ex-docker--pool
 Pool Blocksize: 65.54 kB
 Base Device Size: 107.4 GB
 Backing Filesystem: xfs
 Data file: 
 Metadata file: 
 Data Space Used: 132.8 GB
 Data Space Total: 805.3 GB
 Data Space Available: 672.5 GB
 Metadata Space Used: 98.46 MB
 Metadata Space Total: 4.001 GB
 Metadata Space Available: 3.903 GB
 Thin Pool Minimum Free Space: 80.53 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: true
 Deferred Deletion Enabled: false
 Deferred Deleted Device Count: 0
 Library Version: 1.02.107-RHEL7 (2016-06-09)
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: null bridge host overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options: seccomp
Kernel Version: 3.10.0-327.36.2.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 56
Total Memory: 251.6 GiB
Name: server.masked.example.com
ID: Z7J7:CLEG:KZPK:TNEI:QLYL:JBTO:XNM4:NX2X:KPQC:VHPC:6SFS:G4GR
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Insecure Registries:
 127.0.0.0/8

docker.txt

์ œ๊ณต๋œ ๋กœ๊ทธ์—์„œ dm_udev_wait ์— ๋ฉˆ์ถ˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

goroutine 2747 [syscall, 12 minutes, locked to thread]:
github.com/docker/docker/pkg/devicemapper._Cfunc_dm_udev_wait(0xc80d4d887c, 0xc800000000)
\t??:0 +0x41
github.com/docker/docker/pkg/devicemapper.dmUdevWaitFct(0xd4d887c, 0x44288e)
\t/root/rpmbuild/BUILD/docker-engine/.gopath/src/github.com/docker/docker/pkg/devicemapper/devmapper_wrapper.go:222 +0x22
github.com/docker/docker/pkg/devicemapper.UdevWait(0xc821c7e8f8, 0x0, 0x0)
\t/root/rpmbuild/BUILD/docker-engine/.gopath/src
Nov 17 06:50:13 server docker: /github.com/docker/docker/pkg/devicemapper/devmapper.go:259 +0x3b
github.com/docker/docker/pkg/devicemapper.activateDevice(0xc82021a880, 0x1e, 0xc8202f0cc0, 0x57, 0x9608, 0x1900000000, 0x0, 0x0, 0x0, 0x0)
\t/root/rpmbuild/BUILD/docker-engine/.gopath/src/github.com/docker/docker/pkg/devicemapper/devmapper.go:771 +0x8b8
github.com/docker/docker/pkg/devicemapper.ActivateDevice(0xc82021a880, 0x1e, 0xc8202f0cc0, 0x57, 0x9608, 0x1900000000, 0x0, 0x0)
\t/root/rpmbuild/BUILD/docker-engine/.gopath/src/github.com/docker/docker/pkg/devicemapper/devmapper.go:732 +0x78
github.com/docker/docker/daemon/graphdriver/devmapper.(*DeviceSet).activateDeviceIfNeeded(0xc8200b6340, 0xc8208e0a40, 0xc8200b6300, 0x0, 0x0)
\t/root/rpmbuild/BUILD/docker-engine/.gopath/src/github.com/docker/docker/daemon/graphdriver/devmapper/deviceset.go:539 +0x58d
github.com/docker/docker/daemon/graphdriver/devmapper.(*DeviceSet).MountDevice(0xc8200b6340, 0xc820a00200, 0x40, 0xc820517ab0, 0x61, 0x0, 0x0, 0x0, 0x0)
\t/root/rpmbuild/BUILD/docker-engine/.gopath/src/github.com/docker/docker/daemon/graphdriver/devmapper/deviceset.go:2269 +0x2cd
github.com/docker/docker/daemon/graphdriver/devmapper.(*Driver).Get(0xc82047bf40, 0xc820a00200, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
\t/root/rpmbuild/BUILD/docker-engine/.gopath/src/github.com/docker/docker/daemon/graphdriver/devmapper/driver.go:185 +0x62f
github.com/docker/docker/daemon/graphdriver.(*NaiveDiffDriver).Get(0xc8201c2680, 0xc820a00200, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
\t<autogenerated>:30 +0xa6

๋น„์Šทํ•œ ๋ฌธ์ œ # 27900 # 27543

@ AaronDMarasco-VSI dmsetup udevcomplete_all ์‚ฌ์šฉํ•ด ๋ณด์…จ์Šต๋‹ˆ๊นŒ?

@ coolljt0725 ์•„๋‹ˆ์š”,๋ณด๊ณ ๋ฅผ ์œ„ํ•ด ๋กœ๊ทธ๋ฅผ ๋คํ”„ ํ•œ ํ›„ ๋” ์ด์ƒ ๋ฐ๋ชฌ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋ฐ๋ชฌ์„ ๋‹ค์‹œ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

@tonistiigi , SIGUSR1 ์ดํ›„ Docker ๋ฐ๋ชฌ์˜ ์ „์ฒด ์Šคํƒ ์ถ”์ ์€ ์—ฌ๊ธฐ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@ liquid-sky์˜ ์ถ”์ ์ด netlink ์†Œ์ผ“์—์„œ ์ฐจ๋‹จ ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

goroutine 13038 [syscall, 9838 minutes, locked to thread]:
syscall.Syscall6(0x2d, 0x16, 0xc820fc3000, 0x1000, 0x0, 0xc8219bc028, 0xc8219bc024, 0x0, 0x300000002, 0x66b5a6)
    /usr/lib/go1.6/src/syscall/asm_linux_amd64.s:44 +0x5
syscall.recvfrom(0x16, 0xc820fc3000, 0x1000, 0x1000, 0x0, 0xc8219bc028, 0xc8219bc024, 0x427289, 0x0, 0x0)
    /usr/lib/go1.6/src/syscall/zsyscall_linux_amd64.go:1712 +0x9e
syscall.Recvfrom(0x16, 0xc820fc3000, 0x1000, 0x1000, 0x0, 0x1000, 0x0, 0x0, 0x0, 0x0)
    /usr/lib/go1.6/src/syscall/syscall_unix.go:251 +0xb9
github.com/vishvananda/netlink/nl.(*NetlinkSocket).Receive(0xc820c6c5e0, 0x0, 0x0, 0x0, 0x0, 0x0)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.11.2-r5/work/docker-1.11.2/vendor/src/github.com/vishvananda/netlink/nl/nl_linux.go:341 +0xae
github.com/vishvananda/netlink/nl.(*NetlinkRequest).Execute(0xc820dded20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.11.2-r5/work/docker-1.11.2/vendor/src/github.com/vishvananda/netlink/nl/nl_linux.go:228 +0x20b
github.com/vishvananda/netlink.LinkSetMasterByIndex(0
 x7f1e88c67c20, 0xc820e00630, 0x3, 0x0, 0x0)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.11.2-r5/work/docker-1.11.2/vendor/src/github.com/vishvananda/netlink/link_linux.go:231 +0x3b0
github.com/vishvananda/netlink.LinkSetMaster(0x7f1e88c67c20, 0xc820e00630, 0xc8219bc550, 0x0, 0x0)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.11.2-r5/work/docker-1.11.2/vendor/src/github.com/vishvananda/netlink/link_linux.go:205 +0xb7
github.com/docker/libnetwork/drivers/bridge.addToBridge(0xc820c78830, 0xb, 0x177bf88, 0x7, 0x0, 0x0)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.11.2-r5/work/docker-1.11.2/vendor/src/github.com/docker/libnetwork/drivers/bridge/bridge.go:782 +0x275
github.com/docker/libnetwork/drivers/bridge.(*driver).CreateEndpoint(0xc820316640, 0xc8201f6840, 0x40, 0xc821879500, 0x40, 0x7f1e88c67bd8, 0xc820f38580, 0xc821a87bf0, 0x0, 0x0)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.11.2-r5/work/docker-1.11.2/vendor/src/github.com/docker/libnetwork/drivers/bridge/bridge.go:1004 +0x1436
github.com/docker/libnetwork.(*network).addEndpoint(0xc820f026c0, 0xc8209f2300, 0x0, 0x0)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.11.2-r5/work/docker-1.11.2/vendor/src/github.com/docker/libnetwork/network.go:749 +0x21b
github.com/docker/libnetwork.(*network).CreateEndpoint(0xc820f026c0, 0xc820eb1909, 0x6, 0xc8210af160, 0x4, 0x4, 0x0, 0x0, 0x0, 0x0)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.11.2-r5/work/docker-1.11.2/vendor/src/github.com/docker/libnetwork/network.go:813 +0xaa7
github.com/docker/docker/daemon.(*Daemon).connectToNetwork(0xc82044e480, 0xc820e661c0, 0x177aea8, 0x6, 0xc820448c00, 0x0, 0x0, 0x0)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.11.2-r5/work/docker-1.11.2/.gopath/src/github.com/docker/docker/daemon/container_operations.go:539 +0x39f
github.com/docker/docker/daemon.(*Daemon).allocateNetwork(0xc82044e480, 0xc820e661c0, 0x0, 0x0)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.11.2-r5/work/docker
 -1.11.2/.gopath/src/github.com/docker/docker/daemon/container_operations.go:401 +0x373
github.com/docker/docker/daemon.(*Daemon).initializeNetworking(0xc82044e480, 0xc820e661c0, 0x0, 0x0)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.11.2-r5/work/docker-1.11.2/.gopath/src/github.com/docker/docker/daemon/container_operations.go:680 +0x459
github.com/docker/docker/daemon.(*Daemon).containerStart(0xc82044e480, 0xc820e661c0, 0x0, 0x0)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.11.2-r5/work/docker-1.11.2/.gopath/src/github.com/docker/docker/daemon/start.go:125 +0x219
github.com/docker/docker/daemon.(*Daemon).ContainerStart(0xc82044e480, 0xc820ed61d7, 0x40, 0x0, 0x0, 0x0)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.11.2-r5/work/docker-1.11.2/.gopath/src/github.com/docker/docker/daemon/start.go:75 +0x575

cc @aboch

๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์ œ์•ˆํ–ˆ๋“ฏ์ด ์ด๊ฒƒ์€ ์ปค๋„์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋งค์šฐ ๋‚˜์œ ์ผ์˜ ๋ถ€์ž‘์šฉ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ƒํ™ฉ์„ ์™„ํ™”ํ•˜๊ธฐ ์œ„ํ•ด https://github.com/docker/libnetwork/pull/1557 ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ถ€ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€ ( journalctl syslog์—์„œ 2 ๊ฐœ์˜ 3 ๊ฐœ ์Šคํƒ ์ถ”์ ์ด์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋„์ปค ์ด๋ฏธ์ง€์— ๋Œ€ํ•œ rspec / serverspec ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ ์ค‘์ด๋ฉฐ์ด ์ƒํƒœ์—์„œ๋„ ์ปค๊ฐ€ ์‘๋‹ตํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ๊ฐ€ 20 ๋ถ„ ์ด์ƒ ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค (์‹คํŒจ ํ•  ๊ฒฝ์šฐ 5 ํšŒ ์žฌ์‹œ๋„).
๊ฐ ์ด๋ฏธ์ง€ ํ…Œ์ŠคํŠธ๋Š” 5 ๋ถ„ ์ด๋‚ด์— ์™„๋ฃŒ๋˜๋ฉฐ ์ด์ œ ํ…Œ์ŠคํŠธ๋Š” ์ตœ์†Œ 30 ๋ถ„ ๋˜๋Š” 60 ๋ถ„ ๋™์•ˆ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

https://gist.github.com/mblaschke/d5d38cb34f6178e50e465c6e1f02131c

uname -a :
Linux webdevops.infogene.fr 4.4.0-47-generic # 68-Ubuntu SMP 10 ์›” 26 ์ผ ์ˆ˜์š”์ผ 19:39:52 UTC 2016 x86_64 x86_64 x86_64 GNU / Linux

๋„์ปค ์ •๋ณด :
์ปจํ…Œ์ด๋„ˆ : 5
๋‹ฌ๋ฆฌ๊ธฐ : 1
์ผ์‹œ ์ค‘์ง€๋จ : 0
์ค‘์ง€๋จ : 4
์ด๋ฏธ์ง€ : 1208
์„œ๋ฒ„ ๋ฒ„์ „ : 1.12.3
์Šคํ† ๋ฆฌ์ง€ ๋“œ๋ผ์ด๋ฒ„ : aufs
๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ : / var / lib / docker / aufs
๋ฐฑ์—… ํŒŒ์ผ ์‹œ์Šคํ…œ : extfs
Dirs : 449
Dirperm1 ์ง€์› : true
๋กœ๊น… ๋“œ๋ผ์ด๋ฒ„ : json-file
Cgroup ๋“œ๋ผ์ด๋ฒ„ : cgroupfs
ํ”Œ๋Ÿฌ๊ทธ์ธ :
๋ณผ๋ฅจ : ๋กœ์ปฌ
๋„คํŠธ์›Œํฌ : ๋ธŒ๋ฆฌ์ง€ ํ˜ธ์ŠคํŠธ ๋„ ์˜ค๋ฒ„๋ ˆ์ด
Swarm : ๋น„ํ™œ์„ฑ
๋Ÿฐํƒ€์ž„ : runc
๊ธฐ๋ณธ ๋Ÿฐํƒ€์ž„ : runc
๋ณด์•ˆ ์˜ต์…˜ : apparmor seccomp
์ปค๋„ ๋ฒ„์ „ : 4.4.0-47-generic
์šด์˜ ์ฒด์ œ : Ubuntu 16.04.1 LTS
OSType : ๋ฆฌ๋ˆ…์Šค
์•„ํ‚คํ…์ฒ˜ : x86_64
CPU : 7
์ด ๋ฉ”๋ชจ๋ฆฌ : 11.73GiB
์ด๋ฆ„ : webdevops.infogene.fr
ID : DGNM : G3MV : ZMMV : HY6K : UPLU : CMEV : VHCA : RVY3 : CRV7 : FS5M : KMVQ : MQO5
Docker ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ : / var / lib / docker
๋””๋ฒ„๊ทธ ๋ชจ๋“œ (ํด๋ผ์ด์–ธํŠธ) : false
๋””๋ฒ„๊ทธ ๋ชจ๋“œ (์„œ๋ฒ„) : false
๋ ˆ์ง€์ŠคํŠธ๋ฆฌ : https://index.docker.io/v1/
๊ฒฝ๊ณ  : ์Šค์™‘ ์ œํ•œ ์ง€์› ์—†์Œ
์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ :
127.0.0.0/8

๋‹ค์Œ์€ serverspec์˜ ๊ฒฐ๊ณผ ์ถœ๋ ฅ์ž…๋‹ˆ๋‹ค.

https://gist.github.com/mblaschke/21a521367a2a2b71301607482647a748

@mblaschke ๋‚˜๋Š” ๋‹น์‹ ์˜ ํ”์ ์„ ์‚ดํŽด ๋ณด์•˜์Šต๋‹ˆ๋‹ค (https://gist.github.com/tonistiigi/0fb0abfb068a89975c072b68e6ed07ce). ๋‚˜๋Š” ๊ฑฐ๊ธฐ์—์„œ ์˜์‹ฌ์Šค๋Ÿฌ์šด ๊ฒƒ์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์žฅ๊ธฐ ์‹คํ–‰ ๊ณ  ๋ฃจํ‹ด์€ ์‹คํ–‰์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ ๋˜๋Š” ์‹คํ–‰์ค‘์ธ ๊ณ  ๋ฃจํ‹ด์ด ์ž ๊ธˆ์„ ๋ณด์œ ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ •์ƒ์ธ ๊ฐœ๋ฐฉํ˜• io ์‚ฌ๋ณธ์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์ถ”์ ์—์„œ docker ps ๋˜๋Š” docker exec/stop ์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ๋ช…๋ น์ด ๊ท€ํ•˜์˜ ๊ฒฝ์šฐ์— ์ฐจ๋‹จ๋˜์ง€ ์•Š์•˜์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•˜๊ณ  ๊ท€ํ•˜๊ฐ€ ๋ณธ ์ค‘๋‹จ์€ ํŠน์ • ์ปจํ…Œ์ด๋„ˆ ๋˜๋Š” exec๊ฐ€ ์™„๋ฃŒ ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ–ˆ์ง€๋งŒ ์™„๋ฃŒ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํ‹ฐ. ์ด๊ฒƒ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ž์ฒด๊ฐ€ ๋ฌด์–ธ๊ฐ€์— ๋งค๋‹ฌ๋ ค ์žˆ๊ฑฐ๋‚˜ ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•œ ์ด๋ฒคํŠธ๋ฅผ ๋ณด๋‚ด์ง€ ์•Š๋Š” ์ปจํ…Œ์ด๋„ˆ์™€ ๊ด€๋ จ์ด์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (cc @mlaventure).

๋กœ๊ทธ์—์žˆ๋Š” ๊ฒฝ๊ณ ๋Š” https://github.com/docker/containerd/pull/351 ๋กœ ์ˆ˜์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ŠคํŒธ์„ ์œ ๋ฐœํ• ๋ฟ ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ๋กœ๊ทธ์—์„œ ๋””๋ฒ„๊ทธ ๋กœ๊ทธ๊ฐ€ ํ™œ์„ฑํ™”๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ๋ชฌ์— ์ „์†ก ๋œ ์˜์‹ฌ์Šค๋Ÿฌ์šด ๋ช…๋ น์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์Šคํƒ ์ถ”์ ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „์— ๋ช‡ ๋ถ„ ๋™์•ˆ ์˜๋ฏธ์žˆ๋Š” ๋กœ๊ทธ๊ฐ€์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋™์ผํ•œ ์ฝ”๋“œ๊ฐ€ Docker 1.10.3์—์„œ ์ž‘๋™ํ•˜์ง€๋งŒ Docker 1.11.x ์ดํ›„์—๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. serverspec ํ…Œ์ŠคํŠธ๊ฐ€ ์‹œ๊ฐ„ ์ดˆ๊ณผ์™€ ํ•จ๊ป˜ ๋ฌด์ž‘์œ„๋กœ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.
์ง๋ ฌ ๋ชจ๋“œ๋ณด๋‹ค ๋ณ‘๋ ฌ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ (์˜ˆ : 4 ์ฝ”์–ด CPU์—์„œ 2 ๊ฐœ ๋˜๋Š” 4 ๊ฐœ์˜ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ) ๋” ์ž์ฃผ ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๋Š๋‚Œ์ด ์žˆ์ง€๋งŒ ๊ฒฐ๊ณผ๋Š” ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์„ฑ๊ณต์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ํ…Œ์ŠคํŠธ ์‹คํ–‰์ด ์—†์Šต๋‹ˆ๋‹ค.
Docker 1.11์—์„œ๋Š” ์ „์ฒด docker ๋ฐ๋ชฌ์ด ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 1.12 Docker๋Š” exec ๋งŒ ์‹คํŒจํ•˜๊ฑฐ๋‚˜ ์‹œ๊ฐ„ ์ดˆ๊ณผ๋กœ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

@mblaschke ์ถ”์ ๋„

์–ด๋–ค exec ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ์ž์ฒด ์„ธ์…˜ ID๋กœ ์ƒˆ ํ”„๋กœ์„ธ์Šค๋ฅผ ํฌํฌํ•ฉ๋‹ˆ๊นŒ?

https://github.com/rancher/rancher ์— ์˜ํ•ด ํ• ๋‹น ๋œ IP ์ฃผ์†Œ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ •๊ธฐ์ ์œผ๋กœ ip addr ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์•„์ง)

ํ”„๋กœ๋•์…˜ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์—์„œ ์ •๊ธฐ์ ์œผ๋กœ ์ค‘๋‹จ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
ip addr ์‚ฌ์šฉํ•˜๋ฉด ์ž์ฒด ์„ธ์…˜ ID๋กœ ์‹คํ–‰๋˜๋Š” ํ”„๋กœ์„ธ์Šค์— ๋ณ„๋‹ค๋ฅธ ๋งˆ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค.

๋ฟก ๋นต๋€จ
์šฐ๋ฆฌ๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด serverspec / rspec์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๋งค์šฐ ๊ฐ„๋‹จํ•œ ํ…Œ์ŠคํŠธ (ํŒŒ์ผ ๊ฒ€์‚ฌ, ๊ฐ„๋‹จํ•œ ๋ช…๋ น ๊ฒ€์‚ฌ, ๊ฐ„๋‹จํ•œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๊ฒ€์‚ฌ)๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๋‹จ์ˆœํ•œ ํŒŒ์ผ ๊ถŒํ•œ ๊ฒ€์‚ฌ์กฐ์ฐจ๋„ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ๋Š” ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค (๊ทธ๋Ÿฌ๋‚˜ ์‹คํ–‰์„ ์œ„ํ•ด ์ผ๋ถ€ ํ™˜๊ฒฝ ์„ค์ •์ด ํ•„์š”ํ•จ) :
https://github.com/webdevops/Dockerfile/tree/develop/tests/serverspec

์ฝ”๋“œ๋ฒ ์ด์Šค๋กœ ์‹œ๋„ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ๋ชจ๋“  ํŒŒ์ด์ฌ (pip) ๋ฐ ๋ฃจ๋น„ ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ ์˜ค๊ธฐ์œ„ํ•œ make requirements
  2. bin/console docker:pull --threads=auto (ํ—ˆ๋ธŒ์—์„œ ์ตœ๋Œ€ 180 ๊ฐœ์˜ ์ด๋ฏธ์ง€ ๊ฐ€์ ธ ์˜ค๊ธฐ)
  3. bin/console test:serverspec --threads=auto ๋ชจ๋“  parallized ๋ชจ๋“œ์—์„œ ํ…Œ์ŠคํŠธ ๋˜๋Š” ์‹คํ–‰ํ•˜๋ ค๋ฉด bin/console test:serverspec ์‹œ๋ฆฌ์–ผ ๋ชจ๋“œ๋ฅผ

@GameScripting ์ง€๊ธˆ ํ˜ผ๋ž€ ์Šค๋Ÿฌ์›Œ์š” : sweat_smile :. @mblaschke ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ์ปจํ…์ŠคํŠธ๋ฅผ ์–ธ๊ธ‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ์–ด๋–ค Docker ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๋ฆฌ๊ณ  ๊ท€ํ•˜์˜ ์งˆ๋ฌธ์— ๋Œ€๋‹ตํ•˜๊ธฐ ์œ„ํ•ด ip addr๊ฐ€ ์ด์™€ ๊ฐ™์€ ์ผ์„ ํ•  ๊ฐ€๋Šฅ์„ฑ์€ ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค.

์–ด๋–ค ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ์‚ฌ์šฉ์ค‘์ธ ์ •ํ™•ํ•œ docker exec ๋ช…๋ น์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ข€ ๋” ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒ ๋งŒ๋“ค ์˜๋„๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.
๋‚˜๋Š” ๋™์ผํ•œ ๋งฅ๋ฝ์„ ์–ธ๊ธ‰ํ•˜์ง€ ์•Š๊ณ  ๊ทธ๊ฐ€ ์–ธ๊ธ‰ ํ•œ ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ์˜ ์›์ธ์ด ๋  ์ˆ˜์žˆ๋Š” ์ž‘์—…์— ๋Œ€ํ•œ ๋” ๋งŽ์€ (์œ ์šฉํ•œ) ์ปจํ…์ŠคํŠธ ๋ฐ / ๋˜๋Š” ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฒ„๊ทธ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ์žˆ์–ด ์ฃผ์š” ๋ฌธ์ œ๋Š” ์•„์ง ์•ˆ์ •์ ์ด๊ณ  ์žฌํ˜„ ๊ฐ€๋Šฅํ•œ ๋‹จ๊ณ„๋ฅผ ์ œ์‹œํ•˜์—ฌ ์ค‘๋‹จ์„ ์œ ๋ฐœํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@mblaschke ๊ฐ€ ๋ฒ„๊ทธ๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ํŠธ๋ฆฌ๊ฑฐ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฌด์–ธ๊ฐ€๋ฅผ ์ฐพ์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Docker 1.11.2์™€ ํ•จ๊ป˜ CoreOS ์•ˆ์ • (1185.3.0)์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์ผ๋ถ€ ๋ณ€์ˆ˜๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋‚ด Redis ์ปจํ…Œ์ด๋„ˆ์— docker exec๋กœ ์‹œ๊ณ„๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ ์–ด๋„ ํ•˜๋ฃจ ๋™์•ˆ Docker ๋ฐ๋ชฌ์ด ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ํ•ด๊ฒฐ์ฑ… ์„ ์ฐพ์„ ๋•Œ๊นŒ์ง€ containerd (https://github.com/docker/containerd)์˜ ctr ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ์ค‘์ง€ํ•˜๋Š”๋ฐ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด docker 1.11.2์— ํ†ตํ•ฉ๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
: ๋ถˆํ–‰ํ•˜๊ฒŒ๋„ ๊ทธ๊ฒƒ์€ CoreOS I์— ๋˜ ๋‹ค๋ฅธ ๋ฒ„๊ทธ๊ฐ€ ์—ฌ๊ธฐ์—๋ณด๊ณ ๊ฐ€ https://github.com/docker/containerd/issues/356#event ๋‹น์‹ ์ด ์ •๊ธฐ์ ์œผ๋กœ ์ฒญ์†Œ / tmp๋ฅผ ํ•„์š”ํ•˜์ง€๋งŒ, ์ ์–ด๋„์ด์žˆ๋‹ค, ๊ทธ๋ž˜์„œ (๊ทธ๋“ค์€ ์ดํ›„ ๊ณ ์ •) -874038823๋ฅผ ํ”„๋กœ๋•์…˜์—์„œ ์ผ์ฃผ์ผ ๋™์•ˆ ๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ docker exec ์˜ˆ์ œ :

docker exec -i container_name /bin/sh 'echo "Hello"'

ctr๋กœ ๋ฒˆ์—ญ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

/usr/bin/ctr --address=/run/docker/libcontainerd/docker-containerd.sock containers exec --id=${id_of_the_running_container} --pid=any_unique_process_name -a --cwd=/ /bin/sh -c 'echo "Hello"'

๋”ฐ๋ผ์„œ ์ž„์‹œ ํ•ด๊ฒฐ์ฑ…์œผ๋กœ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ctr๋กœ ๋ณ€ํ™˜ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@mblaschke ๊ฒŒ์‹œ ํ•œ ๋ช…๋ น์ด ์‹คํŒจํ–ˆ์ง€๋งŒ docker ์‹คํŒจ์ฒ˜๋Ÿผ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. https://gist.github.com/tonistiigi/86badf5a41dff3fe53bd68d8e83e4ec4 ๋””๋ฒ„๊ทธ ๋กœ๊ทธ๋ฅผ ํ™œ์„ฑํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋งˆ์Šคํ„ฐ ๋นŒ๋“œ๋Š” ๋˜ํ•œ ๋ฐ๋ชฌ ๋‚ด๋ถ€์— ๋Œ€ํ•œ ๋” ๋งŽ์€ ๋””๋ฒ„๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  sigusr1 ์‹ ํ˜ธ๋กœ containerd๋ฅผ ์ถ”์  ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉˆ์ถ˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ถ”์ ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ps aux ๋„ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ—‰ํ—‰
์•ŒํŒŒ์ธ ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ (ํ˜„์žฌ ๋นŒ๋“œ ๋ฌธ์ œ)๋ฅผ ์žŠ์–ด ๋ฒ„๋ ธ์œผ๋ฏ€๋กœ ๋‹ค์Œ์„ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค. bin/console test:serverspec --threads=auto --blacklist=:alpine

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค :(

@mblaschke ์—ฌ์ „ํžˆ ๋„์ปค ๋ฌธ์ œ์ฒ˜๋Ÿผ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. docker exec <id> /usr/bin/php -i ์— ๊ฑธ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ค‘์ธ ์ด๋ฏธ์ง€๋ฅผ ์ถ”์ ํ•˜๊ณ  ์ˆ˜๋™์œผ๋กœ ์‹œ์ž‘ํ•˜๋ฉด์ด ์ด๋ฏธ์ง€์— ์‹ค์ œ PHP๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

root<strong i="8">@254424aecc57</strong>:/# php -v
HipHop VM 3.11.1 (rel)
Compiler: 3.11.1+dfsg-1ubuntu1
Repo schema: 2f678922fc70b326c82e56bedc2fc106c2faca61

๊ทธ๋ฆฌ๊ณ ์ด HipHopVM์€ -i ์ง€์›ํ•˜์ง€ ์•Š๊ณ  ๋ธ”๋ก ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

ํ—‰ํ—‰
๋‚˜๋Š” ์ง€๋‚œ Docker ๋ฒ„์ „์—์„œ ์˜ค๋žซ๋™์•ˆ์ด ๋ฒ„๊ทธ๋ฅผ ์‚ฌ๋ƒฅํ•˜๊ณ  ์žˆ์—ˆ๊ณ  ์šฐ๋ฆฌ ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ์—์„œ์ด ๋ฒ„๊ทธ๋ฅผ ๋ณด์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ๊ณ ์ณค์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. / o

๋นŒ๋“œ ๋กœ๊ทธ๋ฅผ ๊ฒ€์ƒ‰ ํ•œ ๊ฒฐ๊ณผ 1.12.3์„ ์‚ฌ์šฉํ•  ๋•Œ ํ•˜๋‚˜์˜ ํ…Œ์ŠคํŠธ ์‹คํŒจ (hhvm ํ…Œ์ŠคํŠธ๊ฐ€ ์•„๋‹Œ ์ž„์˜์˜ ๋ฌธ์ œ)๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” Docker๋ฅผ ๊ณ„์† ๊ฐ•์กฐํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ์ฐพ์œผ๋ ค๊ณ  ๋…ธ๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@ coolljt0725 ๋ฐฉ๊ธˆ Docker๊ฐ€ ๋‹ค์‹œ ์ค‘๋‹จ ๋œ ๊ฒƒ์„ ์ฐพ๊ธฐ ์œ„ํ•ด ์ผํ•˜๋Ÿฌ ๋Œ์•„ ์™”์Šต๋‹ˆ๋‹ค. docker ps ๋Š”) ํ•œ ์„ธ์…˜์— ์ค‘๋‹จ๋˜์—ˆ๊ณ  sudo service docker stop ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์„ธ ๋ฒˆ์งธ ์„ธ์…˜์„ ์—ด์—ˆ์Šต๋‹ˆ๋‹ค.

$ sudo lvs
  LV          VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  docker-pool vg_ex  twi-aot--- 750.00g             63.49  7.88                            
$ sudo dmsetup udevcomplete_all
This operation will destroy all semaphores with keys that have a prefix 3405 (0xd4d).
Do you really want to continue? [y/n]: y
2 semaphores with keys prefixed by 3405 (0xd4d) destroyed. 0 skipped.

์™„๋ฃŒ ๋˜ ์ž๋งˆ์ž ๋‹ค๋ฅธ ๋‘ ์„ธ์…˜์€ ์ฐจ๋‹จ ํ•ด์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์— ๋ฌธ์ œ๊ฐ€ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋””์Šคํฌ ๊ณต๊ฐ„์„ ํ™•์ธํ•˜๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€์žฅ ๋จผ์ € ์‚ดํŽด ๋ณด์•˜์Šต๋‹ˆ๋‹ค. 2 ๊ฐœ์˜ ์„ธ๋งˆํฌ์–ด๋Š” ๋‚ด๊ฐ€ ๊ฐ€์ง„ ๋‘ ๋ฒˆ์˜ ํ˜ธ์ถœ ์ผ ์ˆ˜ ์žˆ์ง€๋งŒ Jenkins ์„œ๋ฒ„์—์„œ ๋งŽ์€ docker ํ˜ธ์ถœ์ด ๊ฑธ๋ ค ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด๊ฐ€ ์ฃผ๋ณ€์„ ์ฐŒ๋ฅด๊ณ  ์žˆ์—ˆ๋˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค ...

dmsetup ํ˜ธ์ถœ์„ ์ˆ˜ํ–‰ ํ•œ ํ›„ ์ค‘๋‹จ ๋œ ์ถœ๋ ฅ์˜ ์˜ˆ, docker run ๋Š” ๋ฉฐ์น  ์ „์— ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

docker run -td -v /opt/Xilinx/:/opt/Xilinx/:ro -v /opt/Modelsim/:/opt/Modelsim/:ro -v /data/jenkins_workspace_modelsim/workspace/examples_hdl/APPLICATION/bias/HDL_PLATFORM/modelsim_pf/TARGET_OS/7:/build --name jenkins-examples_hdl-APPLICATION--bias--HDL_PLATFORM--modelsim_pf--TARGET_OS--7-546 jenkins/build:v3-C7 /bin/sleep 10m
docker: An error occurred trying to connect: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/create?name=jenkins-examples_hdl-APPLICATION--bias--HDL_PLATFORM--modelsim_pf--TARGET_OS--7-546: EOF.
See 'docker run --help'.

Docker 1.11.2 ์ค‘๋‹จ, ์Šคํƒ ์ถ”์  : https://gist.github.com/Calpicow/871621ba807d6eb9b18b91e8c2eb4eef

@Calpicow์˜ ์ถ”์ ์ด ๋ฉˆ์ถ˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ udev_wait ์ผ€์ด์Šค๋ฅผ ๋ณด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŠธ์œ— ๋‹ด์•„ ๊ฐ€๊ธฐ

goroutine 488 [syscall, 10 minutes, locked to thread]:
github.com/docker/docker/pkg/devicemapper._C2func_dm_task_run(0x7fbffc010f80, 0x0, 0x0, 0x0)
    ??:0 +0x47
github.com/docker/docker/pkg/devicemapper.dmTaskRunFct(0x7fbffc010f80, 0xc800000001)
    /root/rpmbuild/BUILD/docker-engine/.gopath/src/github.com/docker/docker/pkg/devicemapper/devmapper_wrapper.go:96 +0x21
github.com/docker/docker/pkg/devicemapper.(*Task).run(0xc8200266d8, 0x0, 0x0)
    /root/rpmbuild/BUILD/docker-engin
e/.gopath/src/github.com/docker/docker/pkg/devicemapper/devmapper.go:155 +0x37
github.com/docker/docker/pkg/devicemapper.SuspendDevice(0xc821b07380, 0x55, 0x0, 0x0)
    /root/rpmbuild/BUILD/docker-engine/.gopath/src/github.com/docker/docker/pkg/devicemapper/devmapper.go:627 +0x99
github.com/docker/docker/pkg/devicemapper.CreateSnapDevice(0xc821013f80, 0x25, 0x1a, 0xc821b07380, 0x55, 0x17, 0x0, 0x0)
    /root/rpmbuild/BUILD/docker-engine/.gopath/src/github.com/docker/docker/pkg/devicemapper/devmapper.go:759 +0x92
github.com/docker/docker/daemon/graphdriver/devmapper.(*DeviceSet).createRegisterSnapDevice(0xc8203be9c0, 0xc82184d1c0, 0x40, 0xc821a78f40, 0x0, 0x0)
    /root/rpmbuild/BUILD/docker-engine/.gopath/src/github.com/docker/docker/daemon/graphdriver/devmapper/deviceset.go:860 +0x557
github.com/docker/docker/daemon/graphdriver/devmapper.(*DeviceSet).AddDevice(0xc8203be9c0, 0xc82184d1c0, 0x40, 0xc8219c47c0, 0x40, 0x0, 0x0)
    /root/rpmbuild/BUILD/docker-engine/.gopath/src/github.com/docker/docker/daemon/graphdriver/devmapper/deviceset.go:1865 +0x81f
github.com/docker/docker/daemon/graphdriver/devmapper.(*Driver).Create(0xc8200ff770, 0xc82184d1c0, 0x40, 0xc8219c47c0, 0x40, 0x0, 0x0, 0x0, 0x0)
    /root/rpmbuild/BUILD/docker-engine/.gopath/src/github.com/docker/docker/daemon/graphdriver/devmapper/driver.go:124 +0x5f
github.com/docker/docker/daemon/graphdriver.(*NaiveDiffDriver).Create(0xc820363940, 0xc82184d1c0, 0x40, 0xc8219c47c0, 0x40, 0x0, 0x0, 0x0, 0x0)
    <autogenerated>:24 +0xaa
github.com/docker/docker/layer.(*layerStore).Register(0xc820363980, 0x7fc02faa3898, 0xc821a6ae00, 0xc821ace370, 0x47, 0x0, 0x0, 0x0, 0x0)
    /root/rpmbuild/BUILD/docker-engine/.gopath/src/github.com/docker/docker/layer/layer_store.go:266 +0x382
github.com/docker/docker/distribution/xfer.(*LayerDownloadManager).makeDownloadFunc.func1.1(0xc8210cd740, 0xc8210cd680, 0x7fc02fb6b758, 0xc820f422d0, 0xc820ee15c0, 0xc820ee1680, 0xc8210cd6e0, 0xc820e8e0b0)
    /root/rpmbuild/BUILD/docker-engine/.gopath/src/github.com/docker/docker/distribut
ion/xfer/download.go:316 +0xc01
created by github.com/docker/docker/distribution/xfer.(*LayerDownloadManager).makeDownloadFunc.func1
    /root/rpmbuild/BUILD/docker-engine/.gopath/src/github.com/docker/docker/distribution/xfer/download.go:341 +0x191

@Calpicow dmesg ๋กœ๊ทธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? dmsetup status ์˜ ์ถœ๋ ฅ์„ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚ด docker ps ์ด ์ค‘๋‹จ๋˜์ง€๋งŒ info / restart / images ๊ฐ™์€ ๋‹ค๋ฅธ ๋ช…๋ น์€ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜์—๋„ ๊ฑฐ๋Œ€ํ•œ SIGUSR1 ๋คํ”„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค (์—ฌ๊ธฐ์— ๋งž์ง€ ์•Š์Œ). https://gist.github.com/ahmetalpbalkan/34bf40c02a78e319eaf5710acb15cf9a

  • docker ์„œ๋ฒ„ ๋ฒ„์ „ : 1.11.2
  • ์Šคํ† ๋ฆฌ์ง€ ๋“œ๋ผ์ด๋ฒ„ : ์˜ค๋ฒ„๋ ˆ์ด
  • ์ปค๋„ ๋ฒ„์ „ : 4.7.3-coreos-r3
  • ์šด์˜ ์ฒด์ œ : CoreOS 1185.5.0 (MoreOS)

์ด ๊ณ  ๋ฃจํ‹ด์ด 700 ํ†ค ์ •๋„์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

...
goroutine 1149 [chan send, 1070 minutes]:
github.com/vishvananda/netlink.LinkSubscribe.func2(0xc821159d40, 0xc820fa4c60)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.11.2-r5/work/docker-1.11.2/vendor/src/github.com/vishvananda/netlink/link_linux.go:898 +0x2de
created by github.com/vishvananda/netlink.LinkSubscribe
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.11.2-r5/work/docker-1.11.2/vendor/src/github.com/vishvananda/netlink/link_linux.go:901 +0x107

goroutine 442 [chan send, 1129 minutes]:
github.com/vishvananda/netlink.LinkSubscribe.func2(0xc8211eb380, 0xc821095920)
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.11.2-r5/work/docker-1.11.2/vendor/src/github.com/vishvananda/netlink/link_linux.go:898 +0x2de
created by github.com/vishvananda/netlink.LinkSubscribe
    /build/amd64-usr/var/tmp/portage/app-emulation/docker-1.11.2-r5/work/docker-1.11.2/vendor/src/github.com/vishvananda/netlink/link_linux.go:901 +0x107
...

@ahmetalpbalkan netlink ์†Œ์ผ“์ด ๋Œ์•„์˜ฌ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์ด ์ฐจ๋‹จ ๋œ ๊ฒƒ
์ด๊ฒƒ์€ ์ปค๋„์˜ ๋ฒ„๊ทธ์ด์ง€๋งŒ 1.12.5๋Š” ์ตœ์†Œํ•œ์ด ๋„ท ๋งํฌ ์†Œ์ผ“์—์„œ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.
๋‚ด๊ฐ€ ์ถ”์ธกํ•ด์•ผํ•œ๋‹ค๋ฉด dmesg ์ถœ๋ ฅ์— device_count = 1; waiting for <interface> to become free ์™€ ๊ฐ™์€ ๋ฌด์–ธ๊ฐ€๊ฐ€์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@ cpuguy83 ๋„ค, ์ œ ๊ฒฝ์šฐ์™€ ๋น„์Šทํ•œ https://github.com/coreos/bugs/issues/254 ๋ฅผ ๋ดค์ง€๋งŒ ์ปค๋„ ๋กœ๊ทธ์— "๋Œ€๊ธฐ"๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

1.12.5๋Š” ์•„์ง coreos ์•ŒํŒŒ ์ŠคํŠธ๋ฆผ์—๋„ ๋„๋‹ฌํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‹ค์šด ๊ทธ๋ ˆ์ด๋“œ ํ•  ์ˆ˜์žˆ๋Š” ์ปค๋„ / ๋„์ปค ๋ฒ„์ „์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@ahmetalpbalkan Yay, ๋˜ ๋‹ค๋ฅธ ์ปค๋„ ๋ฒ„๊ทธ์ž…๋‹ˆ๋‹ค.
์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ netlink ์†Œ์ผ“์— ํƒ€์ž„ ์•„์›ƒ์„ ๋„์ž… ํ•œ ์ด์œ ์ž…๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ / ์ค‘์ง€ ํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ ์ ์–ด๋„ Docker๋Š” ์ฐจ๋‹จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฒ„๊ทธ๊ฐ€ ์ •ํ™•ํžˆ ๋ฌด์—‡์ธ์ง€ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ์ปค๋„ ๋ฒ„๊ทธ๊ฐ€ ์—…์ŠคํŠธ๋ฆผ์œผ๋กœ๋ณด๊ณ  ๋˜์—ˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด์ด ๋ฒ„๊ทธ๊ฐ€ ์ˆ˜์ • ๋œ ์ปค๋„ ๋ฒ„์ „์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@GameScripting ๋ฌธ์ œ๋Š” ์ด๊ฒƒ์ด ์ƒ์„ฑ ๋œ ๋ฐฐํฌํŒ์—๋ณด๊ณ ๋˜์–ด์•ผํ•˜๋ฉฐ, ์—ฌ๊ธฐ์—์„œ๋„ ๋™์ผํ•œ ํšจ๊ณผ๋ฅผ ์ผ์œผํ‚ค๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Docker v1.12.3์ด์žˆ๋Š” ๋˜ ๋‹ค๋ฅธ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋คํ”„
dmesg
dmsetup

๊ด€๋ จ syslog :

Jan  6 01:41:19 ip-100-64-32-70 kernel: INFO: task kworker/u31:1:91 blocked for more than 120 seconds.
Jan  6 01:41:19 ip-100-64-32-70 kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Jan  6 01:41:19 ip-100-64-32-70 kernel: kworker/u31:1   D ffff880201fc98e0     0    91      2 0x00000000
Jan  6 01:41:19 ip-100-64-32-70 kernel: Workqueue: kdmremove do_deferred_remove [dm_mod]
Jan  6 01:41:20 ip-100-64-32-70 kernel: ffff88020141bcf0 0000000000000046 ffff8802044ce780 ffff88020141bfd8
Jan  6 01:41:20 ip-100-64-32-70 kernel: ffff88020141bfd8 ffff88020141bfd8 ffff8802044ce780 ffff880201fc98d8
Jan  6 01:41:20 ip-100-64-32-70 kernel: ffff880201fc98dc ffff8802044ce780 00000000ffffffff ffff880201fc98e0
Jan  6 01:41:20 ip-100-64-32-70 kernel: Call Trace:
Jan  6 01:41:20 ip-100-64-32-70 kernel: [<ffffffff8163b959>] schedule_preempt_disabled+0x29/0x70
Jan  6 01:41:20 ip-100-64-32-70 kernel: [<ffffffff81639655>] __mutex_lock_slowpath+0xc5/0x1c0
Jan  6 01:41:20 ip-100-64-32-70 kernel: [<ffffffff81638abf>] mutex_lock+0x1f/0x2f
Jan  6 01:41:20 ip-100-64-32-70 kernel: [<ffffffffa0392e9d>] __dm_destroy+0xad/0x340 [dm_mod]
Jan  6 01:41:20 ip-100-64-32-70 kernel: [<ffffffffa03947e3>] dm_destroy+0x13/0x20 [dm_mod]
Jan  6 01:41:20 ip-100-64-32-70 kernel: [<ffffffffa0398d6d>] dm_hash_remove_all+0x6d/0x130 [dm_mod]
Jan  6 01:41:20 ip-100-64-32-70 kernel: [<ffffffffa039b50a>] dm_deferred_remove+0x1a/0x20 [dm_mod]
Jan  6 01:41:20 ip-100-64-32-70 kernel: [<ffffffffa0390dae>] do_deferred_remove+0xe/0x10 [dm_mod]
Jan  6 01:41:20 ip-100-64-32-70 kernel: [<ffffffff8109d5fb>] process_one_work+0x17b/0x470
Jan  6 01:41:20 ip-100-64-32-70 kernel: [<ffffffff8109e3cb>] worker_thread+0x11b/0x400
Jan  6 01:41:20 ip-100-64-32-70 kernel: [<ffffffff8109e2b0>] ? rescuer_thread+0x400/0x400
Jan  6 01:41:20 ip-100-64-32-70 kernel: [<ffffffff810a5aef>] kthread+0xcf/0xe0
Jan  6 01:41:20 ip-100-64-32-70 kernel: [<ffffffff810a5a20>] ? kthread_create_on_node+0x140/0x140
Jan  6 01:41:20 ip-100-64-32-70 kernel: [<ffffffff81645818>] ret_from_fork+0x58/0x90
Jan  6 01:41:20 ip-100-64-32-70 kernel: [<ffffffff810a5a20>] ? kthread_create_on_node+0x140/0x140
Jan  6 01:41:20 ip-100-64-32-70 kernel: INFO: task dockerd:31587 blocked for more than 120 seconds.
Jan  6 01:41:20 ip-100-64-32-70 kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Jan  6 01:41:20 ip-100-64-32-70 kernel: dockerd         D 0000000000000000     0 31587      1 0x00000080
Jan  6 01:41:20 ip-100-64-32-70 kernel: ffff8800e768fab0 0000000000000086 ffff880034215c00 ffff8800e768ffd8
Jan  6 01:41:20 ip-100-64-32-70 kernel: ffff8800e768ffd8 ffff8800e768ffd8 ffff880034215c00 ffff8800e768fbf0
Jan  6 01:41:20 ip-100-64-32-70 kernel: ffff8800e768fbf8 7fffffffffffffff ffff880034215c00 0000000000000000
Jan  6 01:41:20 ip-100-64-32-70 kernel: Call Trace:
Jan  6 01:41:20 ip-100-64-32-70 kernel: [<ffffffff8163a879>] schedule+0x29/0x70
Jan  6 01:41:20 ip-100-64-32-70 kernel: [<ffffffff81638569>] schedule_timeout+0x209/0x2d0
Jan  6 01:41:20 ip-100-64-32-70 kernel: [<ffffffff8108e4cd>] ? mod_timer+0x11d/0x240
Jan  6 01:41:20 ip-100-64-32-70 kernel: [<ffffffff8163ac46>] wait_for_completion+0x116/0x170
Jan  6 01:41:20 ip-100-64-32-70 kernel: [<ffffffff810b8c10>] ? wake_up_state+0x20/0x20
Jan  6 01:41:20 ip-100-64-32-70 kernel: [<ffffffff810ab676>] __synchronize_srcu+0x106/0x1a0
Jan  6 01:41:20 ip-100-64-32-70 kernel: [<ffffffff810ab190>] ? call_srcu+0x70/0x70
Jan  6 01:41:20 ip-100-64-32-70 kernel: [<ffffffff81219e3f>] ? __sync_blockdev+0x1f/0x40
Jan  6 01:41:20 ip-100-64-32-70 kernel: [<ffffffff810ab72d>] synchronize_srcu+0x1d/0x20
Jan  6 01:41:20 ip-100-64-32-70 kernel: [<ffffffffa039318d>] __dm_suspend+0x5d/0x220 [dm_mod]
Jan  6 01:41:20 ip-100-64-32-70 kernel: [<ffffffffa0394c9a>] dm_suspend+0xca/0xf0 [dm_mod]
Jan  6 01:41:20 ip-100-64-32-70 kernel: [<ffffffffa0399fe0>] ? table_load+0x380/0x380 [dm_mod]
Jan  6 01:41:20 ip-100-64-32-70 kernel: [<ffffffffa039a174>] dev_suspend+0x194/0x250 [dm_mod]
Jan  6 01:41:20 ip-100-64-32-70 kernel: [<ffffffffa0399fe0>] ? table_load+0x380/0x380 [dm_mod]
Jan  6 01:41:20 ip-100-64-32-70 kernel: [<ffffffffa039aa25>] ctl_ioctl+0x255/0x500 [dm_mod]
Jan  6 01:41:20 ip-100-64-32-70 kernel: [<ffffffff8112482d>] ? call_rcu_sched+0x1d/0x20
Jan  6 01:41:20 ip-100-64-32-70 kernel: [<ffffffffa039ace3>] dm_ctl_ioctl+0x13/0x20 [dm_mod]
Jan  6 01:41:20 ip-100-64-32-70 kernel: [<ffffffff811f1e75>] do_vfs_ioctl+0x2e5/0x4c0
Jan  6 01:41:20 ip-100-64-32-70 kernel: [<ffffffff8128bbee>] ? file_has_perm+0xae/0xc0
Jan  6 01:41:20 ip-100-64-32-70 kernel: [<ffffffff81640d01>] ? __do_page_fault+0xb1/0x450
Jan  6 01:41:20 ip-100-64-32-70 kernel: [<ffffffff811f20f1>] SyS_ioctl+0xa1/0xc0
Jan  6 01:41:20 ip-100-64-32-70 kernel: [<ffffffff816458c9>] system_call_fastpath+0x16/0x1b

@Calpicow ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

github.com/docker/docker/pkg/devicemapper._C2func_dm_task_run(0x7fd3a40231b0, 0x7fd300000000, 0x0, 0x0)
    ??:0 +0x4c
github.com/docker/docker/pkg/devicemapper.dmTaskRunFct(0x7fd3a40231b0, 0xc821a91620)
    /root/rpmbuild/BUILD/docker-engine/.gopath/src/github.com/docker/docker/pkg/devicemapper/devmapper_wrapper.go:96 +0x75
github.com/docker/docker/pkg/devicemapper.(*Task).run(0xc820345838, 0x0, 0x0)
    /root/rpmbuild/BUILD/docker-engine/.gopath/src/github.com/docker/docker/pkg/devicemapper/devmapper.go:155 +0x37
github.com/docker/docker/pkg/devicemapper.SuspendDevice(0xc8219c8600, 0x5a, 0x0, 0x0)
    /root/rpmbuild/BUILD/docker-engine/.gopath/src/github.com/docker/docker/pkg/devicemapper/devmapper.go:648 +0x99
github.com/docker/docker/pkg/devicemapper.CreateSnapDevice(0xc821a915f0, 0x25, 0x21, 0xc8219c8600, 0x5a, 0x1f, 0x0, 0x0)
    /root/rpmbuild/BUILD/docker-engine/.gopath/src/github.com/docker/docker/pkg/devicemapper/devmapper.go:780 +0x92
github.com/docker/docker/daemon/graphdriver/devmapper.(*DeviceSet).createRegisterSnapDevice(0xc820433040, 0xc821084080, 0x40, 0xc8210842c0, 0x140000000, 0x0, 0x0)
    /root/rpmbuild/BUILD/docker-engine/.gopath/src/github.com/docker/docker/daemon/graphdriver/devmapper/deviceset.go:861 +0x550
github.com/docker/docker/daemon/graphdriver/devmapper.(*DeviceSet).AddDevice(0xc820433040, 0xc821084080, 0x40, 0xc82025b5e0, 0x45, 0x0, 0x0, 0x0)
    /root/rpmbuild/BUILD/docker-engine/.gopath/src/github.com/docker/docker/daemon/graphdriver/devmapper/deviceset.go:1887 +0xa5c
github.com/docker/docker/daemon/graphdriver/devmapper.(*Driver).Create(0xc82036af00, 0xc821084080, 0x40, 0xc82025b5e0, 0x45, 0x0, 0x0, 0x0, 0x0, 0x0)
    /root/rpmbuild/BUILD/docker-engine/.gopath/src/github.com/docker/docker/daemon/graphdriver/devmapper/driver.go:131 +0x6f
github.com/docker/docker/daemon/graphdriver/devmapper.(*Driver).CreateReadWrite(0xc82036af00, 0xc821084080, 0x40, 0xc82025b5e0, 0x45, 0x0, 0x0, 0x0, 0x0, 0x0)
    /root/rpmbuild/BUILD/docker-engine/.gopath/src/github.com/docker/docker/daemon/graphdriver/devmapper/driver.go:126 +0x86
github.com/docker/docker/daemon/graphdriver.(*NaiveDiffDriver).CreateReadWrite(0xc82021c500, 0xc821084080, 0x40, 0xc82025b5e0, 0x45, 0x0, 0x0, 0x0, 0x0, 0x0)
    <autogenerated>:28 +0xbe
github.com/docker/docker/layer.(*layerStore).CreateRWLayer(0xc82021c580, 0xc82154f980, 0x40, 0xc82025b2c0, 0x47, 0x0, 0x0, 0xc820981380, 0x0, 0x0, ...)
    /root/rpmbuild/BUILD/docker-engine/.gopath/src/github.com/docker/docker/layer/layer_store.go:476 +0x5a9
github.com/docker/docker/daemon.(*Daemon).setRWLayer(0xc820432ea0, 0xc8216d12c0, 0x0, 0x0)

๋ชจ๋“  ์„ธ๋ถ€ ์‚ฌํ•ญ์ด ํฌํ•จ ๋œ ๋ณ„๋„์˜ ๋ฌธ์ œ๋ฅผ ์—ด โ€‹โ€‹์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
๊ฐ์‚ฌ!

30003

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰