Docker ๋„คํŠธ์›Œํฌ ๊ตฌ์„ฑ๊ณผ ์„ค์ •

๋ฐ˜์‘ํ˜•

์ง€๋‚œ Docker ํฌ์ŠคํŒ…์€ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•˜๊ณ , ๊ธฐ๋ณธ์ ์ธ Docker์˜ ์žฅ/๋‹จ์ ๊ณผ ๊ฐ€์ƒ ๋จธ์‹ ๊ณผ์˜ ์ฐจ์ด์  ๋“ฑ์—์„œ ๊ฐ„๋‹จํžˆ ์‚ดํŽด๋ดค์Šต๋‹ˆ๋‹ค.


์˜ค๋Š˜์€ Docker์™€ ๋„คํŠธ์›Œํฌ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Docker๋ผ๋Š” ๋ฆฌ๋ˆ…์Šค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ด์šฉํ•ด ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ์–ด๋–ป๊ฒŒ ์›น ์„œ๋น„์Šค๋ฅผ ํ•˜๊ณ , ์–ด๋–ป๊ฒŒ ๋„คํŠธ์›Œํฌ๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์„์ง€์— ๋Œ€ํ•ด ํ•œ ๋ฒˆ ์•Œ์•„๋ด…์‹œ๋‹ค. ์„ ํ–‰ ํ•™์Šต์œผ๋กœ, ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ๋„คํŠธ์›Œํฌ์— ๋Œ€ํ•œ ์•ฝ๊ฐ„์˜ ์ง€์‹์ด ํ•„์š”ํ•˜๋ฏ€๋กœ, ๋ฐ˜๋“œ์‹œ ์ˆ™์ง€ํ•˜์‹œ๊ณ , ์ง„ํ–‰ํ•˜์‹œ๊ธฐ๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.



Docker ๋„คํŠธ์›Œํฌ

๋ฆฌ๋ˆ…์Šค ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋„คํŠธ์›Œํฌ๋ฅผ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”? ์—ฌ๋Ÿฌ๋ถ„๋“ค์€ ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•  ๋•Œ, ์„œ๋น„์Šคํ•˜๊ธฐ ์ „, ์‚ฌ์ „ ์กฐ์‚ฌ๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ ์ค‘์— ํ•˜๋‚˜๋Š” ๋„คํŠธ์›Œํฌ ๊ตฌ์„ฑ์ด ์–ด๋–ป๊ฒŒ ๋˜์–ด ์žˆ๋Š”์ง€๋ถ€ํ„ฐ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์„ค IP๋กœ ๊ตฌ์„ฑ์ด ๋˜์–ด ์žˆ๋Š”์ง€ ์™ธ๋ถ€๋กœ ์–ด๋–ป๊ฒŒ ๋น ์ ธ๋‚˜๊ฐ€๋Š” ์ง€ ๋“ฑ.


๋งŒ์•ฝ, ๋ฐฉํ™”๋ฒฝ์ด ์„ค์ •๋˜์–ด ์žˆ๊ณ , ๊ด€๋ฆฌ์ž๊ฐ€ ๋‚˜๋ผ๋ฉด, ๋ฐฉํ™”๋ฒฝ์—์„œ ์„œ๋น„์Šคํ•  ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์—ด์–ด์ฃผ๋ฉด ๋˜๊ณ , ๊ทธ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๋ฉด, ๊ทธ๋ƒฅ ๋ฐ”๋กœ ์„œ๋น„์Šคํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ๊ฐ€์ •์˜ ๊ณต์œ ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, ํฌํŠธ ํฌ์›Œ๋”ฉ์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ UPnP ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋น„์Šค ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.


๊ทธ๋ ‡๋‹ค๋ฉด Docker์—์„œ๋Š” ์–ด๋–ป๊ฒŒ ๋„คํŠธ์›Œํฌ๋ฅผ ๊ตฌ์„ฑํ• ๊นŒ์š”?



$ ifconfig docker0



์ฒ˜์Œ Docker๋ฅผ ์„ค์น˜ํ•œ ํ›„, ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด, docker0์— ์ธํ„ฐํŽ˜์ด์Šค์— ๋Œ€ํ•œ IP ์ฃผ์†Œ์™€ ์„œ๋ธŒ๋„ท ๋งˆ์Šคํฌ ๊ฐ’์ด ์ถœ๋ ฅํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ ํ˜„์žฌ๋Š” ์ œ๊ฐ€ ์›ํ•˜๋Š” ๊ฐ’์œผ๋กœ ์ž…๋ ฅ๋˜์–ด ์žˆ๋Š” ์ƒํƒœ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ docker0 ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์—ฌ๋Ÿฌ๋ถ„ ์„œ๋ฒ„์— ์‹ค์ œ๋กœ ์žˆ๋Š” ์ด๋”๋„ท ์นด๋“œ๊ฐ€ ์•„๋‹Œ ๊ฐ€์ƒ์˜ ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค.


VMware๋ฅผ ์„ค์น˜ํ•˜์—ฌ ์‚ฌ์šฉํ•  ๋•Œ๋„ vmnet0์ด๋ผ๋Š” ๊ฐ€์ƒ์˜ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค. ์ด์ฒ˜๋Ÿผ Docker์—๋„ ๊ฐ€์ƒ์˜ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ ์„œ๋กœ๊ฐ€ ํ†ต์‹ ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„คํŠธ์›Œํฌ ์ธํ”„๋ผ๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


์ฐธ๊ณ ๋กœ, ์ด IP๋Š” docker0๋ผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋‚˜ ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ์—์„œ DHCP ๋ฐ๋ชฌ์„ ํ†ตํ•ด ์ž๋™์œผ๋กœ IP๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, Docker ๋‚ด๋ถ€ ๋กœ์ง์— ์˜ํ•ด ํ• ๋‹น์ด ๋‚ด๋ ค์ง„s IP ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค. 


๊ทธ๋Ÿฐ๋ฐ, ์˜๋ฌธ์ธ ๊ฒƒ์€ ๋‚ด๊ฐ€ ์•„์ง ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š์•˜์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ์ด ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฌผ๋ก , VMware ๋“ฑ์˜ ๊ฐ€์ƒ ๋จธ์‹ ๋„ ๊ฐ€์ƒ ๋จธ์‹ ์„ ์ƒ์„ฑํ•˜์ง€ ์•Š์•˜๋Š”๋ฐ, ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์ƒ์„ฑ์ด ๋˜๋Š”๋ฐ ์™œ ๊ทธ๋Ÿฐ ๊ฒƒ์ผ๊นŒ์š”?


docker0 ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ฒฝ์šฐ, IP ์ฃผ์†Œ๊นŒ์ง€ ์ด๋ฏธ ํ• ๋‹น์ด ๋œ ์ƒํƒœ์ž…๋‹ˆ๋‹ค. docker0 ์ธํ„ฐํŽ˜์ด์Šค๋Š” ํ˜„์žฌ ๋ธŒ๋ฆฟ์ง€ ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค.




docker0 interface

๋ธŒ๋ฆฟ์ง€ ์ƒํƒœ์ธ docker0 ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์–ด๋–ป๊ฒŒ ํ†ต์‹ ํ•˜๋„๋ก ํ•œ ๊ฒƒ์ผ๊นŒ์š”?



$ brctl show



brctl ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ, ํ™•์ธํ•ด๋ณด๋ฉด, docker0 ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋ธŒ๋ฆฟ์ง€ ์ธํ„ฐํŽ˜์ด์Šค๋ผ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ธŒ๋ฆฟ์ง€ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋ง๊ทธ๋Œ€๋กœ ์ด์–ด์ฃผ๋Š” ๋‹ค๋ฆฌ์ž…๋‹ˆ๋‹ค. Docker ์ปจํ…Œ์ด๋„ˆ์™€ ๋‚˜์˜ ์‹ค์ œ ์„œ๋ฒ„๋ฅผ ์ด์–ด์ฃผ๋Š” ๋ˆ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์ฃ .


bridge๋Š” ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค ํŠน์„ฑ์ƒ L2์— ์†ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ, ๋งŒ์•ฝ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ•˜๋‚˜ ์ƒ์„ฑ๋˜๋ฉด, ์ด bridge์˜ interface์— container์˜ interface๊ฐ€ ํ•˜๋‚˜์”ฉ binding ๋˜๋Š” ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆผ์œผ๋กœ ํ•œ ๋ฒˆ ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


์šฐ๋ฆฌ๊ฐ€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์Šค์œ„์น˜์˜ ๋ชจ์Šต์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ๋งŒ์•ฝ ์‹ค์ œ ์„œ๋ฒ„๋ฅผ ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ์š”? ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ์ง์ ‘ UTP ์„ ์„ ๋”ฐ์„œ, ์„œ๋ฒ„์˜ NIC ์ธํ„ฐํŽ˜์ด์Šค ์นด๋“œ์— ์—ฐ๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. bridge ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๋ฐ”๋กœ ์ด๋Ÿฐ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ์Šค์œ„์น˜๊ฐ€ docker0์˜ bridge ์ธํ„ฐํŽ˜์ด์Šค๋ผ ๊ฐ€์ •ํ•˜๊ณ , ์ƒˆ๋กœ์šด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด, ๊ทธ ์ปจํ…Œ์ด๋„ˆ ์ธํ„ฐํŽ˜์ด์Šค๋ž‘ bridge ์ธํ„ฐํŽ˜์ด์Šค๋ž‘ ๋ฌผ๋ ค์ง€๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.


๊ทธ๋Ÿผ brctl ๋ช…๋ น์–ด๋กœ ๋ดค์„ ๋•Œ, ์ €์˜ ์„œ๋ฒ„์—๋Š” ์ง€๊ธˆ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ 2๋Œ€ ์šด์˜ ์ค‘์— ์žˆ์œผ๋ฉฐ ํ˜„์žฌ 2 ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ™œ์„ฑํ™” ๋˜๊ณ  ์žˆ์Œ์„ ์•Œ๋ ค์ฃผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.




docker0 interface ์ฃผ๋ฌด๋ฅด๊ธฐ

๊ทธ๋Ÿผ ์ด์ œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ํ•œ ๋ฒˆ ์ฃผ๋ฌผ๋Ÿฌ๋ณด๋„๋ก ํ•˜์ฃ . bridge ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์Šค์œ„์น˜๋ผ๊ณ  ๋ดค์„ ๋•Œ, Docker๋Š” ๊ฐ๊ฐ, bridge interface์™€ container interface๋“ค์ด IP๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , ์ด๋ฅผ ๊ฐ€์ง€๊ณ  ์˜น์‹  ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.


๊ทธ๋Ÿฐ๋ฐ, docker0 ์ธํ„ฐํŽ˜์ด์Šค์— ๋ฌผ๋ ค ์žˆ๋Š” ๋„คํŠธ์›Œํฌ ์ฃผ์†Œ๋Š” ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌํ• ๊นŒ์š”?


์•„๋งˆ ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ๊ธฐ๋ณธ์ ์œผ๋กœ docker๋ฅผ ์„ค์น˜ํ•˜์ž๋งˆ์ž ๋ฐ›๋Š” ๋„คํŠธ์›Œํฌ ์ฃผ์†Œ ๋ฒ”์œ„๋Š” 172.17.42.1/16์œผ๋กœ ๋˜์–ด ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ์ง์ ‘ ์„œ๋ธŒ๋„ทํŒ…ํ•˜์—ฌ, ์ฃผ์†Œ ๋ฒ”์œ„๋ฅผ ๋ฐ”๊พธ๊ณ  ์‹ถ๋‹ค๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์€ ์ ˆ์ฐจ๋ฅผ ๋ฐŸ์œผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.



# service docker status


๋งŒ์•ฝ Docker ์„œ๋น„์Šค๊ฐ€ ์‹คํ–‰ ์ค‘์ด๋ฉด, Docker ๋ฐ๋ชฌ์„ ์ข…๋ฃŒํ•˜๋„๋ก ํ•ฉ์‹œ๋‹ค.



# service stop docker


Active ์ƒํƒœ๊ฐ€ inactive ์ƒํƒœ์ด๋ฉด, Docker ๋ฐ๋ชฌ์ด ์ข…๋ฃŒ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.


Docker ๋ฐ๋ชฌ์ด ์ข…๋ฃŒ๋˜์—ˆ์œผ๋ฉด, ์ด์ œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋‚ด๋ ค๋ณด๋„๋ก ํ•ฉ์‹œ๋‹ค.



# ip link set dev docker0 down


# ip link


docker0 ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์•„๋ฌด๋Ÿฐ ์ƒํƒœ๋„ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์œผ๋ฉด DOWN ์ƒํƒœ์ž…๋‹ˆ๋‹ค.



# ip addr


ip addr ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•ด, ํ˜„์žฌ docker0 ์ธํ„ฐํŽ˜์ด์Šค์— ์žˆ๋Š” IP ์ •๋ณด๋ฅผ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค. IP๊ฐ€ ์—†๋‹ค๋ฉด, ์œ„์™€ ๊ฐ™์ด ์•„๋ฌด๊ฒƒ๋„ ๋œจ์ง€ ์•Š์„ ๊ฒƒ์ด๊ณ , ๋งŒ์•ฝ IP๊ฐ€ ์žˆ๋‹ค๋ฉด IP ์ฃผ์†Œ์™€ ์ •๋ณด๊ฐ€ ๋‚˜ํƒ€๋‚  ๊ฒƒ์ž…๋‹ˆ๋‹ค. IP ์ฃผ์†Œ ์ •๋ณด๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ, ip addr del ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•ด ์‚ญ์ œํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.



# ip addr add 192.168.225.0/24 dev docker0

์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ์›ํ•˜๋Š” ์ฃผ์†Œ ๋ฒ”์œ„๋ฅผ ์ ์–ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ €๋Š” IP๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ๋งŽ์ด ํ•„์š”ํ•˜์ง€ ์•Š๊ณ , ์˜ˆ๋น„๋กœ ์“ธ IP๋„ ์ ๊ธฐ ๋–„๋ฌธ์—, ์ ๋‹นํžˆ 0~255๊นŒ์ง€๋งŒ ํ• ๋‹นํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ 1000๊ฐœ ์ด์ƒ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•ด ์“ฐ์‹œ๋ ค๊ณ  ํ•œ๋‹ค๋ฉด, ์ด๋ณด๋‹ค ๋” ํฐ IP ์ฃผ์†Œ ๋ฒ”์œ„๋ฅผ ์‚ฌ์šฉํ•˜์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค.



# ip addr 


ip addr ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ํ™•์ธํ•ด๋ณด๋ฉด, ์ œ๊ฐ€ ์ž…๋ ฅํ•œ IP๊ฐ€ ๋“ค์–ด๊ฐ„ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.



์ด์ œ ๋‚จ์€ ์ผ์€ ๋‹ค์‹œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ UP ์ƒํƒœ๋กœ ๋Œ๋ ค๋†“๊ณ , docker ๋ฐ๋ชฌ์„ ๋„์šฐ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.



# ip link set dev docker0 up


docker0 ์ธํ„ฐํŽ˜์ด์Šค ์ƒํƒœ๊ฐ€ ๋‹ค์‹œ UP ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


๋งˆ์ง€๋ง‰์œผ๋กœ, ์„ค์ •ํ•ด์•ผ ํ•  ํŒŒ์ผ์ด ํ•œ ๊ฐ€์ง€ ๋‚จ์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฑด ๋ฐ”๋กœ, docker ์ž์ฒด ์„ค์ •์ธ๋ฐ์š”. ์ด ์„ค์ •๊ฐ’์ด ๋ฐ”๋€Œ์ง€ ์•Š์œผ๋ฉด, ์„œ๋ฒ„๊ฐ€ ์žฌ๋ถ€ํŒ…๋˜๊ฑฐ๋‚˜ Docker ๋ฐ๋ชฌ์ด ์žฌ์‹œ์ž‘๋์„ ๋•Œ, ํ•ด๋‹น ์„ค์ •๊ฐ’์„ ๋‹ค์‹œ ๋ถˆ๋Ÿฌ์˜ค๊ฒŒ ๋˜๋ฏ€๋กœ, ์—ฌํƒœ๊นŒ์ง€ ์šฐ๋ฆฌ๊ฐ€ ์„ค์ •ํ–ˆ๋˜ ๋„คํŠธ์›Œํฌ ์ฃผ์†Œ๊ฐ’๋“ค์ด ์ „๋ถ€ ๋‹ค์‹œ Reset ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ์ด ํŒŒ์ผ๋„ ๋งˆ์ง€๋ง‰์œผ๋กœ ์ˆ˜์ •ํ•ด์ฃผ์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค.



# vim /etc/default/docker


์ •ํ™•ํžˆ 21๋ฒˆ์งธ ์ค„์—์„œ ์ž์‹ ์ด ์„ค์ •ํ–ˆ๋˜ ๋„คํŠธ์›Œํฌ ์ฃผ์†Œ ๋ฒ”์œ„๋ฅผ ์ž…๋ ฅํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.


์ด์ œ Docker ์„œ๋น„์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.



# service docker start

# ifconfig docker0


๊ทธ๋Ÿผ ์œ„์™€ ๊ฐ™์ด Bridge interface IP ์ฃผ์†Œ๊ฐ€ ๋‚ด๊ฐ€ ์„ค์ •ํ•œ ๋ฒ”์œ„ ๋‚ด๋กœ ๋ฐ”๋€ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€๋กœ, ์ปจํ…Œ์ด๋„ˆ์— ์žˆ๋Š” IP ๋ณ€๊ฒฝ ์‚ฌํ•ญ๋„ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.



# docker exec [Container ID] ifconfig


์œ„์™€ ๊ฐ™์ด ์ฃผ์†Œ ๋ฒ”์œ„๊ฐ€ ๋ฐ”๋€ ๊ฒƒ์„ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 




Docker container์˜ ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ ์‚ฌ์šฉ

์ž IP ์ฃผ์†Œ๋ฅผ ์ƒˆ๋กœ ๊ตฌ์„ฑํ•˜์˜€๋Š”๋ฐ, ์–ด๋ผ? ๋ ˆํฌ์ง€ํ„ฐ๋ฆฌ์— ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋ฆฌ๋ˆ…์Šค ์—…๋ฐ์ดํŠธ๋ฅผ ํ•˜์ง€ ๋ชปํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ ๊ทธ๋Ÿด๊นŒ์š”?


Docker ์ปจํ…Œ์ด๋„ˆ๋Š” NAT ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ, ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ๋กœ ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ์‚ฌ์šฉํ•˜๋Š” ์‹ค์ œ ์„œ๋ฒ„์— ๋ฌผ๋ ค ์žˆ๋Š” ์ธํ„ฐ๋„ท ์„ ์€ ํ•˜๋‚˜ ๋ฐ–์— ์ œ๊ณต๋˜์–ด ์žˆ์ง€ ์•Š๊ณ , ๊ทธ ์„  ํ•œ ๊ฐœ๋ฅผ ํ†ตํ•ด์„œ ๋‚˜๊ฐ€์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์šฐ๋ฆฌ๋Š” Linux์˜ iptables๋ฅผ ์ด์šฉํ•˜์—ฌ, ํ•ด๋‹น ๋ธŒ๋ฆฟ์ง€ ์ธํ„ฐํŽ˜์ด์Šค์— MASQUERADE ๊ธฐ๋Šฅ์„ ๋ถ€์—ฌํ•˜๊ฑฐ๋‚˜ SNAT ๊ฐ’์„ ์ค˜์•ผํ•ฉ๋‹ˆ๋‹ค.


MASQUERADE๋Š” NAT ๊ธฐ์ˆ ์˜ ํ•œ ์ข…๋ฅ˜๋กœ, ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ์—์„œ ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ๋กœ ํŒจํ‚ท์„ ์ˆ˜์‹ /์ „์†กํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๋„คํŠธ์›Œํฌ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๊ธฐ์ˆ ์˜ ๋‚ด์šฉ์„ ๋ณด์‹œ๋ ค๋ฉด ์•„๋ž˜ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ์ฐธ๊ณ ํ•˜์„ธ์š”.


IP MASQUERADE


๋จผ์ € iptables๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ, ํ˜„์žฌ ๋„คํŠธ์›Œํฌ ์ƒํƒœ๋ฅผ ํ™•์ธํ•ด๋ด…์‹œ๋‹ค.



# iptables -t nat -L


ํ…Œ์ด๋ธ”์— ์–ด๋–ค ์ •๋ณด๋„ ์—†์Šต๋‹ˆ๋‹ค. ์ด์ฒ˜๋Ÿผ ํ…Œ์ด๋ธ”์— NAT ์ •๋ณด๊ฐ€ ์—†์œผ๋ฉด, ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ์—์„œ ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ๋กœ ํ†ต์‹ ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ, ์šฐ๋ฆฌ๋Š” ์ด ํ…Œ์ด๋ธ”์— ๊ฐ’์„ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ•˜๋‚˜์”ฉ ํ…Œ์ด๋ธ”์— ๊ฐ’์„ ๋„ฃ์–ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.



# iptables -t nat -A PREROUTING -d 0.0.0.0/0 -m addrtype --dst-type LOCAL -j DOCKER

# iptables -t nat -A OUTPUT -m addrtype --dst-type LOCAL -j DOCKER

# iptables -t nat -A POSTROUTING -s 192.168.225.0/24 -j MASQUERADE



์‚ฌ์‹ค, ๋‹จ์ˆœํžˆ Repository์˜ ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๊ธฐ ์œ„ํ•ด์„œ ,์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋ผ๋ฉด MASQUERADE๋งŒ ์ค˜๋„, ๊ฐ€๋Šฅ์€ ํ•˜์ง€๋งŒ, ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ๋งŒ์•ฝ์—๋ผ๋„ Docker ์ปจํ…Œ์ด๋„ˆ์—์„œ ์›น ์„œ๋น„์Šค ๋“ฑ์˜ ์„œ๋น„์Šค๋ฅผ ํ•  ์ˆ˜๋„ ์žˆ๋ผ ๋•Œ๋ฌธ์— ์ด๋ฅผ ๋จผ์ € ๋‹ค๋ฃจ๊ณ , ๋‹ค์Œ์— Docker ์ปจํ…Œ์ด๋„ˆ์—์„œ ์–ด๋–ป๊ฒŒ ์„œ๋น„์Šค๋ฅผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์ž์„ธํžˆ ๋‹ค๋ฃจ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


์ผ๋‹จ ์ฒซ ๋ฒˆ์งธ๋ถ€ํ„ฐ ๋ณด๋ฉด, ์ฒซ ๋ฒˆ์งธ๋Š” PREROUTING CHAIN์ž…๋‹ˆ๋‹ค. ์ด ํ…Œ์ด๋ธ”์€ Docker ์ปจํ…Œ์ด๋„ˆ์— ๋“ค์–ด์˜ค๋Š” ํŒจํ‚ท์ด PREROUTING CHAIN์„ ํ†ตํ•ด Docker CHAIN์œผ๋กœ ์ „๋‹ฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ•œ ๋งˆ๋””๋กœ ์—ฌ๊ธฐ์„œ ๊ฑธ๋Ÿฌ์ง€๋Š” ๊ฒƒ์ด์ฃ .


๋ฐ˜๋Œ€๋กœ Docker ์ปจํ…Œ์ด๋„ˆ์—์„œ ์™ธ๋ถ€๋กœ ๋‚˜๊ฐˆ ๋–„๋Š” MASQUERADE๋ฅผ ํ†ตํ•ด ๋‚˜๊ฐ€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.



์—ฌ๊ธฐ๊นŒ์ง€ Docker ๋„คํŠธ์›Œํฌ ๊ตฌ์„ฑ๊ณผ ์„ค์ •์„ ๋ชจ๋‘ ๋‹ค๋ค„๋ดค์Šต๋‹ˆ๋‹ค. iptables๋‚˜ NAT์— ๋Œ€ํ•œ ์ง€์‹์ด ๋ถ€์กฑํ•˜๋‹ค๋ฉด, ์ด ๋‚ด์šฉ์ด ์ „ํ˜€ ์ดํ•ด๊ฐ€ ์•ˆ๋˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„์˜ ๋„คํŠธ์›Œํฌ ๊ตฌ์„ฑ์€ ๋ฐ˜๋“œ์‹œ ๊ธฐ๋ณธ์ ์ธ ๋„คํŠธ์›Œํฌ ๊ฐœ๋…์„ ์ˆ™์ง€ํ•˜์‹  ํ›„, ๋‹ค๋ฃจ์‹œ๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•
TAGS.

Tistory Comments