6 ๋ถ„ ์†Œ์š”

Youtube Docker ์ž๋ฃŒ ์„ค๋ช… ์ •๋ฆฌ


์›๋ณธ ๋งํฌ[Docker_Ros]

๋„์ปค์˜ ์ผ๋ฐ˜์  ๋ฌธ์ œ์™€ ํ™œ์šฉ์€?

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

๋„์ปค ํŒŒ์ผ ์—…๋ฐ์ดํŠธ ๋ฐ ROS ์ด๋ฏธ์ง€ ๋ณ€๊ฒฝ

์˜์ƒ์—์„œ ๋ณด์—ฌ๋“œ๋ฆฌ๋Š” ๋‚ด์šฉ ์ค‘ ์ž˜๋ชป๋˜์—ˆ๊ฑฐ๋‚˜ ์ตœ์„ ์˜ ๋ฐฉ๋ฒ•์ด ์•„๋‹Œ ๋ถ€๋ถ„์ด ์žˆ์„ ์ˆ˜ ์žˆ์–ด์š”.
Dockerfiles๋Š” Alison Thaxton์ด ์ž‘์„ฑํ•œ ๊ฒƒ์„ ์ฐธ๊ณ ํ–ˆ๊ณ , ์—ฌ๋Ÿฌ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ์ œ๊ณตํ–ˆ์–ด์š”.
์ด์ „ ์˜์ƒ์—์„œ ๋‚จ๊ฒจ๋‘” ๋ถ€๋ถ„์„ ๋ฐ”ํƒ•์œผ๋กœ ROS ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ๋กœ ํ•˜์˜€์–ด์š”.
๊ธฐ๋Šฅ์— ๋งž์ถฐ ์‚ฌ์šฉ๋  ์ด๋ฏธ์ง€๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋‚ด์šฉ์„ ๋‹ค๋ฃจ์ฃ .

๋„์ปค ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‚ฌ์šฉ์ž ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์€?

๋„์ปค ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ ์ƒ์„ฑ๋œ ํŒŒ์ผ์ด ํ˜ธ์ŠคํŠธ์—์„œ ๋ฃจํŠธ ์‚ฌ์šฉ์ž์— ์˜ํ•ด ์ƒ์„ฑ๋˜์–ด ์ž ๊ฒจ์žˆ๋˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•ด์š”.

๋ฆฌ๋ˆ…์Šค์—์„œ๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ์‚ฌ์šฉ์ž๋ช…๊ณผ ์‚ฌ์šฉ์ž ID ๋ฒˆํ˜ธ ๋˜๋Š” UID๊ฐ€ ์žˆ๊ณ , ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฃจํŠธ๋กœ ์‹คํ–‰๋ผ.

์ฃผ๋กœ ํ˜ธ์ŠคํŠธ์™€ ํ˜ธํ™˜์„ฑ ์žˆ๋Š” ์‚ฌ์šฉ์ž๋กœ ๋˜๋Š” ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋กœ ์‹คํ–‰ํ•˜๋ ค๋ฉด ๋ฆฌ๋ˆ…์Šค ์‚ฌ์šฉ์ž ์‹๋ณ„์— ๋Œ€ํ•œ ๋ฐฐ๊ฒฝ ์ง€์‹์ด ํ•„์š”ํ•ด์š”.

ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋Š” ์‚ฌ์šฉ์ž๋Š” ์ƒ์„ฑํ•œ ์‚ฌ์šฉ์ž์˜ UID๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ, ls -l ๋ช…๋ น์€ ์‚ฌ์šฉ์ž ์ด๋ฆ„์„ ๋ณด์—ฌ์ฃผ์ง€๋งŒ ls -ln ๋ช…๋ น์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž ID ๋ฒˆํ˜ธ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.

ํŒŒ์ผ๋งˆ๋‹ค ์‚ฌ์šฉ์ž ID์™€ ๊ทธ๋ฃน ID๊ฐ€ ์žˆ์–ด์„œ ์†Œ์œ ์ž๋งŒ ํŽธ์ง‘ํ•˜๊ณ  ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋Š” ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋“ฑ์˜ ์ œํ•œ์„ ๋‘๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ด์š”.

Docker์— ์‚ฌ์šฉ์ž ์ง€์ • ๋ฐฉ๋ฒ•์€?

Docker์—๊ฒŒ ์ƒˆ ์‚ฌ์šฉ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์ง€์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ช‡ ๊ฐ€์ง€๊ฐ€ ์žˆ์–ด์š”.

์‚ฌ์šฉ์ž๋ฅผ ๋งŒ๋“ค๊ธฐ ์ „์—๋Š” ์‹ค์ œ๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์•„์š”.

์ฝ”๋“œ๋ฅผ ๋ถ™์—ฌ๋„ฃ์œผ๋ฉด์„œ โ€˜๋กœ์Šค(Ross)โ€™๋ผ๋Š” ์‚ฌ์šฉ์ž๋ฅผ ์ƒ์„ฑํ•˜๊ณ  UID ๋ฐ GID 1000์œผ๋กœ ์„ค์ •ํ•˜๋ฉฐ, ์ด๋Ÿฌํ•œ ์ธ์ˆ˜๋“ค์ด ๋นŒ๋“œ ์‹œ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•˜๋„๋ก ์„ค์ •๋˜์–ด ์žˆ๋‹ค๊ณ  ํ•ด์š”.

ํ˜„์žฌ โ€˜๋ฑ(deck)โ€™์ธ ํ˜ธ์ŠคํŠธ์™€ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋ช…์ด๋ผ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ๊ธฐ๋‹ค๋ ค๋ด์•ผ ํ•ด์š”.

์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ์™€ ๊ตฌ์„ฑ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉฐ, ์ผ๋ถ€ ํ”„๋กœ๊ทธ๋žจ์€ ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์žˆ์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋ผ์š”.

โ€˜docker build -t myimageโ€™๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‹ค์‹œ ๋นŒ๋“œํ•œ ํ›„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ณ , โ€˜humbledesktop/fullโ€™์ด ์‹ค์ œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์ธ ๊ฒƒ์„ ์žŠ์–ด๋ฒ„๋ ธ๋‹ค๋ฉด, ์ƒˆ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•  ๊ฒƒ์ด๋ผ ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋„์ปค ์ปจํ…Œ์ด๋„ˆ์—์„œ์˜ ์‚ฌ์šฉ์ž ์„ค์ •๊ณผ ํŒŒ์ผ ์†Œ์œ ๊ถŒ ํ™•์ธ

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

์ปจํ…Œ์ด๋„ˆ ์•ˆ์—์„œ ํŒŒ์ผ์˜ ์†Œ์œ ์ž๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ํ˜ธ์ŠคํŠธ์™€์˜ ๊ด€๋ จ์„ฑ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

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

๋„์ปคํŒŒ์ผ์—์„œ์˜ ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•?

๋„์ปคํŒŒ์ผ ๋‚ด์—์„œ ์‚ฌ์šฉ์ž๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ๋ฃจํŠธ ๊ถŒํ•œ์œผ๋กœ ์ „ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์š”.

์‚ฌ์šฉ์ž ์ด๋ฆ„, UID ๋˜๋Š” GID๋ฅผ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด Dockerfile ๋˜๋Š” ๋นŒ๋“œ ์‹œ์— ์ธ์ˆ˜ ์ „๋‹ฌ ๊ฐ€๋Šฅํ•ด์š”.

์‚ฌ์šฉ์ž ๋ณ€๊ฒฝ ํ›„ ๋ช…๋ น์ด ํ•ด๋‹น ์‚ฌ์šฉ์ž๋กœ ์‹คํ–‰๋˜๋ฉฐ, ๋งˆ์ง€๋ง‰ ์‚ฌ์šฉ์ž๊ฐ€ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ์‹œ ๊ธฐ๋ณธ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€๋ฅผ ํ™•์žฅํ•  ๋•Œ ๋ฃจํŠธ ์‚ฌ์šฉ ์—ฌ๋ถ€์— ์ฃผ์˜ํ•˜๊ณ , โ€˜RUNโ€™ ๋ช…๋ น์–ด๋กœ ์‹œ์ž‘ํ•  ๋•Œ ์‚ฌ์šฉํ•  ์‚ฌ์šฉ์ž๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์–ด์š”.

sudo์™€ pseudo ๊ถŒํ•œ ์„ค์ •์˜ ์ฃผ์š” ๊ธฐ๋Šฅ?

์ฃผ์š” ๊ธฐ๋Šฅ์€ ๋‘ ๊ฐ€์ง€๋กœ, ๋จผ์ € apt๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ sudo๋ฅผ ์„ค์น˜ํ•ด์š”.

๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์œผ๋กœ, pseudo ๊ถŒํ•œ์„ ์„ค์ •ํ•ด์š”.

์ด๋กœ์จ, ํŠน์ • ์‚ฌ์šฉ์ž์—๊ฒŒ sudo ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๊ณ  sudo๋ฅผ ์‹คํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•  ํ•„์š”๊ฐ€ ์—†๋„๋ก ์„ค์ •ํ•ด์š”.

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

์ด์ œ apt ์„ค์น˜ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์ „์— ๊ด€๋ จ ๋ช…๋ น์–ด๋ฅผ ๋‹ค๋ค„๋ด์š”.

์ด ๋ช…๋ น์–ด๋“ค์—๋Š” ํ•ด์„ํ•  ์š”์†Œ๊ฐ€ ๋ช‡ ๊ฐ€์ง€ ์žˆ์œผ๋ฏ€๋กœ ๊ถ๊ธˆ์ฆ์„ ํ•ด์†Œํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•ด ๋ณผ๊ฒŒ์š”.

Docker์—์„œ apt-get ๊ณผ apt์˜ ์ฐจ์ด์™€ ์—…๋ฐ์ดํŠธ ํ•„์š”์„ฑ

apt-get์€ ์ž๋™ํ™”๋œ ์ž‘์—… ๋ฐ ์Šคํฌ๋ฆฝํŠธ์— ๋” ์‹ ๋ขฐ์„ฑ ์žˆ๊ณ  ํ˜ธํ™˜ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์‚ฌ์šฉ๋ผ์š”.

๋ฐ˜๋ฉด, apt๋Š” ์‚ฌ์šฉ์ž ์นœํ™”์ ์œผ๋กœ ์„ค๊ณ„๋˜์–ด ์žˆ์ง€๋งŒ ์ž๋™ํ™”๋œ ์ž‘์—…์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์•„์š”.

โ€˜apt-get updateโ€™๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ์ด์ „ ํ˜ธ์ถœ๋กœ ํŒจํ‚ค์ง€ ๋ชฉ๋ก์ด ์™„์ „ํžˆ ๋ฌดํšจํ™”๋˜์—ˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์–ด ์„ค์น˜๋ฅผ ์œ„ํ•ด ์ƒˆ๋กœ ๊ณ ์ณ์•ผ ํ•˜๊ณ , ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์‹œ ๋นŒ๋“œํ•  ๋•Œ ์ด์ „ ๋ผ์ธ์„ ์žฌ์‹คํ–‰ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด์—์š”.

โ€˜install -yโ€™๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ํ™•์ธ์„ ์š”์ฒญํ•˜์ง€ ์•Š๊ณ  โ€˜์˜ˆโ€™๋กœ ์‘๋‹ตํ•˜๋„๋ก ๊ฐ•์ œํ•œ๋‹ค๋Š” ๊ฑฐ์ฃ .

Docker ๋ช…๋ น์–ด ์‹คํ–‰์˜ ์ด์œ ?

๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ณ„์ ์ธ ์‹คํ–‰ ๋ช…๋ น์–ด๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ด๋Š” ๋ฒˆ๊ฑฐ๋กœ์šธ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ฐ ์„ค์น˜๋งˆ๋‹ค ํŒจํ‚ค์ง€ ๋ชฉ๋ก์„ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์žˆ์–ด์š”.

ํŒจํ‚ค์ง€ ๋ชฉ๋ก์„ ์‚ญ์ œํ•˜๋Š” ์ด์œ ๋Š” ์ตœ์ข… ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•จ์ด๋ฉฐ, ๋‹ค๋ฅธ ๊ณ„์ธต์—์„œ๋„ ์ด๋Ÿฌํ•œ ์ž‘์—…์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฑธ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•จ์ด์—์š”.

apt-get update๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ์„ค์น˜ ๋ช…๋ น์„ ๋‚ด๋ฆด ๊ฒฝ์šฐ ๋‚˜์ค‘์— ํ”„๋กœ๊ทธ๋žจ ์„ค์น˜๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•ด์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ•œ ๋ฒˆ์— ๋ชจ๋‘ ์‹คํ–‰ํ•ด์•ผ ํ•ด์š”.

๋„์ปค ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •

๋„์ปค๋ฅผ ์‚ฌ์šฉํ•ด ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•  ๋•Œ Debian_frontend๋ฅผ non-interactive๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์–ด์š”.

์„ค์น˜ ๊ณผ์ • ์ค‘์— ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž ํ”„๋กฌํ”„ํŠธ๋ฅผ ๋ฐ›์ง€ ์•Š๊ฒŒ ํ•ด์š”.

์‹คํ—˜ ๊ฒฐ๊ณผ, ํฐ ์ฐจ์ด๋ฅผ ๋ชป ๋Š๊ผˆ๊ณ , ๊ตฌ๊ธ€๋ง ๊ฒฐ๊ณผ ์ด๊ฒƒ์„ ๋„ฃ์–ด๋„ ์ผ๋ถ€ ํ”„๋กฌํ”„ํŠธ๊ฐ€ ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•ด์š”.

๋”ฐ๋ผ์„œ Docker ENV ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์ •ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์•„์š”.

์ด๋ ‡๊ฒŒ ํ•˜์ง€ ์•Š์œผ๋ฉด ์ดํ›„์— ๋‹ค์‹œ ๋„์ง€ ์•Š์•˜๋‹ค๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ์‚ฌ์šฉ์ž์— ์˜ํ–ฅ ์ค„ ์ˆ˜ ์žˆ์–ด์š”.

๋„์ปค์—์„œ์˜ ์ค‘์š”ํ•œ ์„ค์ •์€?

Docker๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ, ์ค‘์š”ํ•œ ๊ฒƒ ์ค‘ ํ•˜๋‚˜๋Š” ๋„คํŠธ์›Œํ‚น์ด์—์š”.

ROS๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, โ€˜out of the boxโ€™๋กœ๋Š” ํ•ญ์ƒ ์ž˜ ์ž‘๋™ํ•˜์ง€ ์•Š์Œ์„ ๋นจ๋ฆฌ ๊นจ๋‹ซ๊ฒŒ ๋˜์–ด์š”.

Docker๋Š” ๋†’์€ ์„ค์ • ๊ฐ€๋Šฅ์„ฑ์„ ๊ฐ€์ง„ ๋„คํŠธ์›Œํ‚น ์‹œ์Šคํ…œ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์„œ ๋ณต์žกํ•œ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ์ฃ .

๋กœ๋ด‡ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” ์ด๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  ๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๊ธธ ์›ํ•  ๋•Œ, โ€“network=host๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ํ˜ธ์ŠคํŠธ์™€ ๋„คํŠธ์›Œํ‚น์„ ๊ณต์œ ํ•˜๋„๋ก ์ง€์‹œํ•˜๊ณ , โ€“ipc=host๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์ง€์‹œํ•˜์—ฌ ์†Œํ†ต ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์š”.

๋„์ปค ๋„ํ๋จผํŠธ์˜ ๋‚ด์šฉ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

๋„์ปค ๋„ํ๋จผํŠธ๋Š” ์˜ต์…˜์— ๋Œ€ํ•ด ์นœ์ ˆํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๋ฉฐ, GUI ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ๋ฐฉ๋ฒ•๋„ ๋‹ค๋ฃจ์–ด์š”.

๋„์ปคํŒŒ์ผ์„ ์ƒ์„ฑํ•  ๋•Œ Entry point์™€ command๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋‘ ๊ฐ€์ง€๊ฐ€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋ฐฉ์‹์€ ์กฐ๊ธˆ ๋ณต์žกํ•˜์ฃ .

๋˜ํ•œ ํŠน์ • ํŒจํ„ด์„ ์†Œ๊ฐœํ•ด ์†์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์–ธ๊ธ‰ํ•ด์š”.

ROS ์ด๋ฏธ์ง€ ๋ฐ ์—”ํŠธ๋ฆฌ ํฌ์ธํŠธ ์„ค์ • ๋ฐฉ๋ฒ•์€?

ROS ์ด๋ฏธ์ง€ ์„ค์ •์€ bash ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•ด ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์„ ์„ค์ •ํ•˜๊ณ  ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด์—์š”.

์ด ์Šคํฌ๋ฆฝํŠธ๋Š” ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋ž˜ํผ์ฒ˜๋Ÿผ ์ž‘๋™ํ•˜๋ฉฐ ์ „๋‹ฌ๋œ ์ธ์ˆ˜๋Š” ์ถ”๊ฐ€๋กœ ์ œ๊ณต๋œ ๋‚ด์šฉ์„ ํฌํ•จํ•˜์—ฌ ์‹คํ–‰๋ผ์š”.

์—”ํŠธ๋ฆฌ ํฌ์ธํŠธ ์Šคํฌ๋ฆฝํŠธ๋Š” ์˜ค๋ฅ˜ ์‹ ํ˜ธ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ณ  ROS ์„ค์น˜๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์ „๋‹ฌ๋œ ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•˜๋ฉฐ ์‹คํ–‰๋ผ์š”.

Dockerfile์— ์ถ”๊ฐ€ ์ง€์‹œ๋ฌธ์„ ๋„ฃ์–ด ์„ค์ •์„ ์™„๋ฃŒํ•˜๊ณ  ๋ช…๋ น์„ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ๋ช…๋ น ์ง€์‹œ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์‹œ ๋นŒ๋“œํ•˜์—ฌ ์‹คํ–‰ ์‹œ ์ „๋‹ฌ๋œ ์ธ์ˆ˜๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.

ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ํ›„ PCBWay ์†Œ๊ฐœ ๋™๊ธฐ๋Š”?

ํ”„๋กœ๊ทธ๋žจ์ด ํŠน์ • ๋ฒ„์ „์˜ ROS ๋ฐ Linux์—์„œ ์‹คํ–‰ ์ค‘์ด๋ผ๋Š” ์‚ฌ์‹ค์„ ์ธ์ง€ ๋ชปํ•œ ์ฑ„, ๋‹จ๋…์œผ๋กœ ๊ทธ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•œ ๊ฒƒ ๊ฐ™์•„์š”.

ํŠœํ† ๋ฆฌ์–ผ์—์„œ ๋‹ค๋ค˜๋˜ ๋‚ด์šฉ์ด ๋งŽ์€๋ฐ, ์ด์ œ ๋‹ค์Œ ๋‹จ๊ณ„์—์„œ๋Š” ๊ทธ๋ž˜ํ”ฝ ํ”„๋กœ๊ทธ๋žจ์„ ๋™์ž‘์‹œํ‚ค๋Š” ๊ฒƒ์ด ๋” ๋ณต์žกํ•ด์งˆ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋ผ์š”.

๋”ฐ๋ผ์„œ ์ž ์‹œ ์‰ฌ์–ด๊ฐ€๋ฉฐ ์ด ๋™์˜์ƒ์˜ ํ›„์›์‚ฌ์ธ PCBWay๋ฅผ ํ™•์ธํ•˜๊ธฐ๋กœ ํ–ˆ์–ด์š”.

PCBWay๋Š” PCB ๊ด€๋ จ ๊ตญ๋‚ด ์ตœ๋Œ€ ํ—ˆ๋ธŒ๋กœ PCB ์ œ์ž‘ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์กฐ๋ฆฝ๊นŒ์ง€ ๊ฐ€๋Šฅํ•˜๋ฉฐ, 3D ํ”„๋ฆฐํŒ…, CNC ๊ฐ€๊ณต, ์‹œํŠธ ๊ธˆ์† ๊ฐ€๊ณต, ์‚ฌ์ถœ ์„ฑํ˜• ๋“ฑ ๋‹ค์–‘ํ•œ ์ œํ’ˆ์„ ์ œ๊ณตํ•ด์š”.

PCB๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๋ฉด, ๋‹ค์–‘ํ•œ ๋‹ค๋ฅธ ์ œํ’ˆ๋„ ์ œ๊ณตํ•˜๋‹ˆ, ์ฐฝ์˜์ ์ธ ์•„์ด๋””์–ด๋ฅผ ์‹คํ˜„ํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด ๋งํฌ๋ฅผ ํ†ตํ•ด PCBWay๋ฅผ ๋ฐฉ๋ฌธํ•ด๋ณด์„ธ์š”.

๋„์ปค ๋‚ด์—์„œ ๊ทธ๋ž˜ํ”ฝ์Šค ์‚ฌ์šฉํ•˜๊ธฐ

๋„์ปค ๋‚ด์—์„œ ๊ทธ๋ž˜ํ”ฝ์Šค๋ฅผ ์ œ๋Œ€๋กœ ์ž‘๋™์‹œํ‚ค๋ ค๋ฉด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” CPU ์ œ์กฐ์‚ฌ, ์‹คํ–‰ํ•˜๋ ค๋Š” ํ”„๋กœ๊ทธ๋žจ, ํ•„์š”ํ•œ ๊ธฐ๋Šฅ ์œ ํ˜•์— ๋”ฐ๋ผ ๋ณต์žกํ•  ์ˆ˜ ์žˆ์–ด์š”.

X ์œˆ๋„์šฐ์ฆˆ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉฐ, ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฐฉ๋ฒ•์€ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋”๋‚˜ ์ ์ ˆํ•œ ๊ฒƒ์ด ์กด์žฌํ•ด์š”.

์‚ฌ์šฉ์ž ๊ถŒํ•œ๊ณผ X์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ถŒํ•œ์ด ์ค‘์š”ํ•˜๋ฉฐ, X ๋„๋ฉ”์ธ ์†Œ์ผ“์„ ๋…ธ์ถœ์‹œ์ผœ์•ผ ํ•ด์š”.

๋˜ํ•œ, ํ•ด๋‹น ์‚ฌ์šฉ์ž๋กœ ์‹คํ–‰๋œ ์ปจํ…Œ์ด๋„ˆ๋“ค์ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ชจ๋“  ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๊ฑฐ๋‚˜ ํŠน์ • ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๊ณ , ํ™˜๊ฒฝ์„ค์ • ์ž‘์—… ํ›„์—๋Š” ํ•„์š”์‹œ ํ•ด๋‹น ๊ถŒํ•œ์„ ์ทจ์†Œํ•  ์ˆ˜ ์žˆ์–ด์š”.

๋งˆ์ง€๋ง‰์œผ๋กœ, X ๋””์Šคํ”Œ๋ ˆ์ด๋ฅผ ํ• ๋‹นํ•˜๊ณ , ํ˜ธ์ŠคํŠธ์—์„œ ์‚ฌ์šฉ ์ค‘์ธ ๋””์Šคํ”Œ๋ ˆ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก Docker์— ์ง€์‹œํ•˜์—ฌ ํŠน์ • ๊ฐ’์„ ์ œ๊ณตํ•˜๋Š” ๋Œ€์‹ ์— ํ˜ธ์ŠคํŠธ ๋””์Šคํ”Œ๋ ˆ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •ํ•ด์š”.

ROS2 ํ–ฅํ›„ ์ฝ˜ํ…์ธ  ์˜ˆ์ •์€?

ROS2 ํ† ํ”ฝ ๋ชฉ๋ก์ด ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  RViz๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๊ทธ๋ž˜ํ”ฝ์ด ์˜คํ”ˆ๋  ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€๋˜๊ณ , CUDA์˜ ๋ฏธ๋ž˜ ๋น„๋””์˜ค์—์„œ GPU ๊ฐ€์†์— ๋Œ€ํ•ด ์ž์„ธํžˆ ๋‹ค๋ฃฐ ์˜ˆ์ •์ด์—์š”.

๋กœ์ผ€์ผ๊ณผ ์‹œ๊ฐ„๋Œ€ ๊ฐœ๋…์€ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ํŠน์ • ๋ฐ์ดํ„ฐ ์กฐ๊ฐ์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ์–ด๋–ป๊ฒŒ ํ‘œํ˜„ํ•ด์•ผ ํ•˜๋Š”์ง€ ์•Œ๋ ค์ฃผ๋Š” ์‹œ์Šคํ…œ์ธ๋ฐ, ๊ณต์‹ ROS ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด ์ž‘์—…์ด ์ฒ˜๋ฆฌ๋˜์ง€๋งŒ, Ubuntu ๊ธฐ๋ณธ ์ด๋ฏธ์ง€์—์„œ ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ ์ฃผ์˜ํ•ด์•ผ ํ•ด์š”.

ROS2 ์ž๋™์™„์„ฑ ์„ค์ • ๋ฐฉ๋ฒ•์€?

ROS2์—์„œ ์ž๋™์™„์„ฑ์€ ์ผ๋ถ€ ์„ค์ •์ด ํ•„์š”ํ•˜๋ฉฐ, .bashrc ํŒŒ์ผ์— ์†Œ์Šค ๋ช…๋ น์–ด ์ถ”๊ฐ€ํ•˜์—ฌ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์–ด์š”.

ํ„ฐ๋ฏธ๋„์ด ์‹คํ–‰๋  ๋•Œ๋งˆ๋‹ค .bashrc ํŒŒ์ผ์— ๋ช…๋ น์–ด๊ฐ€ ์‹คํ–‰๋˜๋„๋ก ๊ตฌ์„ฑํ•˜๋ฉด ros2๋‚˜ colcon๊ณผ ๊ฐ™์€ ๋ช…๋ น์–ด๋ฅผ ์ž๋™์œผ๋กœ ์™„์„ฑํ•  ์ˆ˜ ์žˆ์–ด์š”.

์ž๋™์™„์„ฑ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์„ ๋•Œ๋Š” python3-ardcomplete์„ ์„ค์น˜ํ•˜๊ฑฐ๋‚˜ bash completion์„ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์–ด์š”.

๋˜ํ•œ, ๋‹ค๋ฅธ ์œ ์šฉํ•œ ๋„๊ตฌ, ํ”„๋กœ๊ทธ๋žจ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋„ ํ™œ์šฉ ๊ฐ€๋Šฅํ•ด์š”.

Docker ์ด๋ฏธ์ง€ ๊ตฌ์„ฑ ๋ฐ ํ™•์žฅ ๋ฐฉ๋ฒ•์€?

๊ธฐ๋ณธ ์„ค์น˜์—์„œ๋Š” ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ, ํ—ฅ์Šค ํŽธ์ง‘๊ธฐ, ์ปดํŒŒ์ผ๋Ÿฌ, ๋ฆฐํ„ฐ์™€ ๊ฐ™์€ ๊ฒƒ๋“ค์ด ํ•„์š”ํ•ด์š”.

๋งค์šฐ ์ผ๋ถ€๋งŒ ๋‹ค๋ฃฌ ๊ฒƒ์ด๋ฉฐ, ์„ธ๋ถ€์‚ฌํ•ญ์€ ๊ฐœ์ธ๋งˆ๋‹ค ๋‹ค๋ฅผ ๊ฑฐ์—์š”.

ํ•„์ˆ˜์ ์ธ ๊ฒƒ์ด ๋ชจ๋‘ ์žˆ๋Š” ๊ฒฝ์šฐ, ํ•ด๋‹น ์˜์ƒ ๋Œ“๊ธ€์ด๋‚˜ Articulated Robotics Discourse Forum์˜ ๋…ผ์˜ ์Šค๋ ˆ๋“œ์—์„œ ์•Œ๋ ค์ค˜์š”.

๋งˆ์ง€๋ง‰์œผ๋กœ ๋„์ปค์— ๊ธฐ๊ธฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ ์˜์ƒ์— ๋„ฃ๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์ง€๋งŒ, ๊ฒŒ์ž„ํŒจ๋“œ, ์นด๋ฉ”๋ผ, ์‹œ๋ฆฌ์–ผ ๊ธฐ๊ธฐ ๋“ฑ์ด ๋  ์ˆ˜ ์žˆ์–ด์š”.

ํ˜„์žฌ ์‚ฌ์šฉ ์ค‘์ธ run ๋ช…๋ น์–ด๋Š” ๋งŽ์€ ์ธ์ž๋“ค์„ ๊ธฐ์–ตํ•ด์•ผ ํ•˜๊ณ  ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์—ฌ์ „ํžˆ ๋‹ค์†Œ ๋ณต์žกํ•˜์ฃ .

๊ทธ๋ž˜์„œ ๋‹ค์Œ ์˜์ƒ์—์„œ๋Š” ๋ชจ๋“  ์‹คํ–‰ ์‹œ ์ธ์ž๋“ค์„ ์„ค์ •ํ•˜๋Š” ๋” ๊น”๋”ํ•œ ๋ฐฉ๋ฒ•์ธ Docker Compose์™€ ์—ฌ๋Ÿฌ ํ”Œ๋žซํผ์—์„œ ๊ฐœ๋ฐœ์„ ๊ฐ„ํŽธํ•˜๊ฒŒ ํ•˜๋Š” VS Code Dev containers๋ฅผ ์‚ดํŽด๋ณผ ๊ฑฐ์˜ˆ์š”.

์–ด๋–ค ๊ฒƒ๋ถ€ํ„ฐ ๋ณผ์ง€๋Š” ์•„์ง ๊ฒฐ์ •ํ•˜์ง€ ์•Š์•˜์œผ๋‹ˆ, ํŠน๋ณ„ํžˆ ๋ณด๊ณ  ์‹ถ์€ ๊ฒƒ์ด ์žˆ๋‹ค๋ฉด ์•Œ๋ ค์ค˜์š”.