Docker๋ ๊ธฐ๋ณธ์ ์ผ๋ก Docker Image๋ฅผ ๋ฐ์ ์ฌ์ฉํ๋ ํ์์ด๋ค.
Image๋ ๊ณต์ ๋ฐฐํฌํ, ์ฌ์ฉ์ ์ ์ํ ๋ฑ ๋ค์ํ๋ฐ Docker๋ฅผ ์ฒ์ ์คํํ๋ฉด ์๋ฌด๊ฒ๋ Install๋์ง ์์ ๋ฐฑ์ง์ด๊ธฐ ๋๋ฌธ์ ์์ ์ด ๊ตฌํํ ๊ธฐ๋ฅ, ์ฌ์ฉํ ํจํค์ง๋ค์ด ์ด๋์ ๋ Install๋์ด์๋ ์ด๋ฏธ์ง๋ฅผ ์ฐพ์ ์ปจํ ์ด๋๋ฅผ ์์ฑํ๋ฉด ๋๋ค.
ํ์๋ Ubuntu 18.04์์ ROS๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ROS melodic ๋ฒ์ ์ ์ค์นํ ๊ฒ์ด๋ค.
https://hub.docker.com/r/osrf/ros
Docker๋ ์ด๋ฏธ์ง๋ฅผ ๋ฐ์์จ ํ, run ๋ช ๋ น์ ํตํด ์ปจํ ์ด๋ ์์ฑ & ์คํ์ ๋์์ ํ ์ ์๋ค.
$ docker run {์ต์
} {์ด๋ฏธ์ง} {๋ช
๋ น์ด} {์ธ์}
์ปจํ ์ด๋๋ฅผ ์์ฑํ๋ ๋ช ๋ น์ด, run์๋ ์ต์ /์ด๋ฏธ์ง/๋ช ๋ น์ด/์ธ์ ์ด 4๊ฐ์ง ๊ฐ์ ํ ๋นํ ์ ์๋๋ฐ ์ด๋ฏธ์ง๋ ํ์๋ก ์์ฑํด์ผ ํ๋ค.
๋ณธ์ธ์๊ฒ ํ์ํ ์ต์ ๊ณผ, ๋ฏธ๋ฆฌ ๋ฐ์๋ ์ด๋ฏธ์ง๋ก ์ปจํ ์ด๋๋ฅผ ์์ฑํ๋ ์๋ ๋ค์๊ณผ ๊ฐ๋ค.
$ docker run -it -v /home/idox23/ros_melodic:/mnt -e DISPLAY=unix$DISPLAY -e USER=$USER -e XDG_RUNTIME_DIR=/tmp -v /root/.Xauthority:/root/.Xauthority -v /tmp/.X11-unix:/temp/.X11 --privileged --gpus all --net=host --name ros_melodic osrf/ros:melodic-desktop-full-bionic
์ฐธ๊ณ ๋ก ์ด๋ฏธ์ง๋ ์๋ ๋ช ๋ น์ ํตํด ๋ฐ์ ์ ์๋ค.
์ด๋ฏธ์ง๋ช ๊ณผ ํ๊ทธ๋ Docker Hub์ ํด๋น ์ด๋ฏธ์ง ๋งํฌ์์ ํ์ธํ๋ฉด ๋๋ค.
$ docker pull {์ด๋ฏธ์ง:ํ๊ทธ}
Docker Run ์ต์
- -i (--interactive)
- ํ์ค ์ ๋ ฅ(stdin)์ ํ์ฑํํ๊ณ , ์ปจํ ์ด๋์ ์ฐ๊ฒฐ(attach)๋์ด ์์ง ์๋๋ผ๋ ํ์ค ์ ๋ ฅ์ ์ ์ง
- Bash๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ํ์๋ก ์ค์ ํด์ผ ํ๋ ์ต์ .
- -t (--tty)
- TTY ๋ชจ๋(pseudo-TTY) ์ฌ์ฉ
- Bash๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ํ์๋ก ์ค์ ํด์ผ ํ๋ ์ต์ . (๋ช ๋ น ์ ๋ ฅ์ ๊ฐ๋ฅํ๋ ์์ด ํ์๋์ง ์์)
-
๋๋ณด๊ธฐ๋ณดํต -i ์ต์ ๊ณผ -t ์ต์ ์ -it๋ก ํจ๊ป ์ฌ์ฉํ๋ค. (์ปจํ ์ด๋๋ฅผ ์ข ๋ฃํ์ง ์์ ์ฑ๋ก ํฐ๋ฏธ๋์ ์ ๋ ฅ์ ์ปจํ ์ด๋๋ก ์ ๋ฌํ๊ธฐ ์ํจ. ์ปจํ ์ด๋์ ์, CLI ์ฌ์ฉ์ ์ ์ฉํจ!)
- --name
- ์ปจํ ์ด๋ ์ด๋ฆ ์ค์ (์ด๋ฆ์ ์ค์ ํด๋๋ฉด docker ps, rm ๋ฑ ๋์ปค ๊ด๋ฆฌ ๋ช ๋ น ์ด์ฉ์ ์ ์ฉํ๊ฒ ์๋ณํ ์ ์์)
- -d (--detach)
- Detached ๋ชจ๋(๋ฐ๋ชฌ ๋ชจ๋). ์ปจํ ์ด๋๊ฐ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์คํ
- -p (--publish)
- ํน์ ํฌํธ๋ฅผ ์ธ๋ถ์ ๋ ธ์ถ์ํด. (ํธ์คํธ์ ์ปจํ ์ด๋์ ํฌํธ๋ฅผ ์ฐ๊ฒฐ - ํฌํธํฌ์๋ฉ)
- IP ์ฃผ์:ํธ์คํธ ํฌํธ:์ปจํ ์ด๋ ํฌํธ → ํธ์คํธ์ ๋คํธ์ํฌ ์ธํฐํ์ด์ค๊ฐ ์ฌ๋ฌ ๊ฐ์ด๊ฑฐ๋ IP ์ฃผ์๊ฐ ์ฌ๋ฌ ๊ฐ์ผ ๋
- ์ปจํ ์ด๋ ํฌํธ ๋๋ ํธ์คํธ ํฌํธ ๋ฏธ์ค์ ์ ํฌํธ ๋ฒํธ๋ ๋ฌด์์๋ก ์ค์ ๋จ
- --privileged
- ์ปจํ ์ด๋ ์์์ ํธ์คํธ์ ๋ฆฌ๋ ์ค ์ปค๋ ๊ธฐ๋ฅ(Capability)์ ๋ชจ๋ ์ฌ์ฉ
- ํธ์คํธ์ ์ฃผ์ ์์์ ์ ๊ทผํ๊ธฐ ์ํด ์ ์ด์ค์ผ ํ๋ ๊ถ์ฅํ์ง ์๋๋ค๊ณ ํจ → GUI ์ ํ๋ฆฌ์ผ์ด์ ์ฌ์ฉํ ๋ ํ์ํด์ ์ผ๋จ์ ์ ์์ผ๋ ๊ถ์ฅํ์ง ์๋ ์ด์ ์ ๋ํด ์์๋ณผ ํ์๊ฐ ์์ ๊ฒ ๊ฐ๋ค.
- --rm
- ์ปจํ ์ด๋ (์์ ํ๋ก์ธ์ค) ์ข ๋ฃ์ ์ปจํ ์ด๋๋ฅผ ์๋์ผ๋ก ์ญ์
- --restart
- ์ปจํ ์ด๋ (์์ ํ๋ก์ธ์ค) ์ข ๋ฃ์, ์ฌ์์ ์ ์ฑ ์ ์ค์
- no: ํ๋ก์ธ์ค ์ข ๋ฃ๋์ด๋ ์ปจํ ์ด๋ ์ฌ์์ํ์ง ์์
- on-failure; Exit Code๊ฐ 0์ด ์๋ ๋๋ง ์ฌ์์
- always: Exit Code์ ๋ฌด๊ดํ๊ฒ ์ฌ์์
- -v, --volume
- ๋ฐ์ดํฐ ๋ณผ๋ฅจ ์ค์
- ํธ์คํธ์ ๊ณต์ ํ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ค์ (ํธ์คํธ์ ์ปจํ ์ด๋์ ๋๋ ํ ๋ฆฌ๋ฅผ ์ฐ๊ฒฐ)ํ์ฌ ํ์ผ์ ์ปจํ ์ด๋์ ์ ์ฅํ์ง ์๊ณ ํธ์คํธ์ ๋ฐ๋ก ์ ์ฅ (=mount)
- -u, --user
- ์ปจํ ์ด๋๊ฐ ์คํ๋ ๋ฆฌ๋ ์ค ์ฌ์ฉ์ ๊ณ์ ์ด๋ฆ ๋๋ UID ์ค์
- -e, --env
- ์ปจํ ์ด๋์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ (์ฃผ๋ก ์ค์ ๊ฐ, ๋น๋ฐ๋ฒํธ ์ ๋ฌ ๋ฑ์ ์ฌ์ฉ)
- --link
- ์ปจํ ์ด๋ ์ฐ๊ฒฐ {์ปจํ ์ด๋๋ช }:{๋ณ์นญ}
- -h, --hostname
- ์ปจํ ์ด๋ ํธ์คํธ ์ด๋ฆ ์ค์
- -w, --workdir
- ์ปจํ ์ด๋ ์์ ํ๋ก์ธ์ค๊ฐ ์คํ๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ค์
- -a, --attach
- ์ปจํ ์ด๋์ ํ์ค ์ ๋ ฅ(stdin), ํ์ค ์ถ๋ ฅ(stdout), ํ์ค ์๋ฌ(stderr) ์ฐ๊ฒฐ {--attach="stdin"}
- -c, --cpu-shares
- CPU ์์ ๋ถ๋ฐฐ ์ค์ (๊ธฐ๋ณธ ๊ฐ=1024)
- -m, --memory
- ๋ฉ๋ชจ๋ฆฌ ํ๊ณ ์ค์
- <์ซ์><๋จ์> ํ์
- ๋จ์: b, k, m, g
- --gpus
- ์ปจํ ์ด๋์์ ํธ์คํธ์ NVIDIA GPU ๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ์ค์ (ํธ์คํธ๋ NVIDIA GPU ๊ฐ ์ฅ์ฐฉ ๋ Linux ์๋ฒ์ฌ์ผํ๋ฉฐ, NVIDIA driver ๊ฐ ์ค์น๋์ด ์์ด์ผํ๊ณ , docker 19.03.5 ๋ฒ์ ์ด์์ด์ด์ผํจ. GUI ํ๋ก๊ทธ๋จ ์ฌ์ฉํ๊ธฐ ์ํด ๋ฐ๋์ ์์ฑํด์ผ ํ๋ ์ต์ )
- --gpus all : GPU ๋ชจ๋ ์ฌ์ฉ
- --gpus ”device=0,1” : GPU ์ง์ ํด์ ์ฌ์ฉ
'๐ OS > Linux-๋ฆฌ๋ ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[E] qt.qpa.xcb: xcb_shm_attach() failed (0) | 2022.07.09 |
---|---|
[E] E: The list of sources could not be read. (0) | 2022.07.09 |
[E] QXcbConnection: Could not connect to display unix:10.0 (0) | 2022.07.07 |
[Linux] ๋ฆฌ๋ ์ค๋ ๋ฌด์์ธ๊ฐ? (0) | 2022.07.04 |
[Linux] ๋ฆฌ๋ ์ค ๊ธฐ๋ณธ ๋ช ๋ น์ด ๋ชจ์ (0) | 2022.05.24 |