$ brew install docker docker-compose docker-machine xhyve docker-machine-driver-xhyve
# docker-machine-driver-xhyve need root owner and uid
$ sudo chown root:wheel $(brew --prefix)/opt/docker-machine-driver-xhyve/bin/docker-machine-driver-xhyve
$ sudo chmod u+s $(brew --prefix)/opt/docker-machine-driver-xhyve/bin/docker-machine-driver-xhyve
# macOS ๋ด์์ ์คํ๋๊ณ ์๋ docker Machine์ SSH ์ ์
$ docker-machine ssh dev
# ... docker machine ๋ด๋ก ์ด๋
# ubuntu ์ปจํ
์ด๋ ์คํ ๋ฐ ์ปจํ
์ด๋ ์ ์
$ docker run --rm -it ubuntu /bin/bash
-it ์ต์ : ์ปจํ ์ด๋ ๋ด๋ถ์ ๋ค์ด๊ฐ๊ธฐ ์ํด bash ์์ ์คํํ๊ณ ํค๋ณด๋ ์ ๋ ฅ ๊ฐ๋ฅ
--rm ์ต์ : ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋๋ฉด ์ปจํ ์ด๋๊ฐ ์๋์ผ๋ก ์ญ์
# ๋ชจ๋ ์ปจํ
์ด๋ ์ํ ํ์ธ
$ docker ps -a
# ์ข
๋ฃ๋ ์ปจํ
์ด๋ ๋ค์ ์คํ
$ docker restart {container id}
# ๋ค์ ์คํ๋ ์ปจํ
์ด๋ ์ ์
$ docker attach {container id}
์ปจํ ์ด๋ ๊ธฐ๋ฐ์ ์คํ ์์ค ๊ฐ์ํ ํ๋ซํผ [1] docker ๋ด๋ถ๋ client์ host๋ก ๋๋จ.
xhyve: macOS์์ ์ ๊ณตํ๋ ๊ฐ์ํ๊ฒฝ
Docker Machine์ ๊ฐ์ ํธ์คํธ์์ Docker engine์ ์ค์นํ ์ ์๊ฒํ๊ณ , ๊ทธ ํธ์คํธ๋ค์ docker-machine ๋ช ๋ น์ด๋ก ๊ด๋ฆฌํ ์ ์๊ฒํ๋ ๋๊ตฌ์ด๋ค. Machine์ ์ด์ฉํ์ฌ ๋ก์ปฌ Mac์ด๋ ์๋์ฐ, ํด๋ผ์ฐ๋ ์๋น์ค ์ ๊ณต์ ๋ฑ์์ Docker host๋ค์ ๋ง๋ค ์ ์๋ค. docker-machine ๋ช ๋ น์ด๋ก ๊ด๋ฆฌ host๋ฅผ start, inspect, stop, restart๋ฅผ ํ ์ ์๊ณ , docker client์ daemon์ ์ ๊ทธ๋ ์ด๋ ํ ์ ์์ผ๋ฉฐ, docker client์ ํ๊ฒฝ์ ์ค์ ํ ์ ์๋ค.
Compose๋ multi-container Docker application๋ค์ ์ ์ํ๊ณ ์คํํ๊ธฐ ์ํ ๋๊ตฌ์ด๋ค. Compose file์ ์ฌ์ฉํด์ application์ ์๋น์ค๋ค์ ํ์ฑํ๋ค. ๊ทธ๋ฆฌ๊ณ , ํ๋์ ๋ช ๋ น์ด๋ก configuration์ ์๋ ๋ชจ๋ ์๋น์ค๋ค์ ๋ง๋ค๊ณ ์์ํ ์ ์๋ค. Compose๋ฅผ ์ด์ฉํ๋ ๊ฒ์ ๊ธฐ๋ณธ์ ์ผ๋ก 3๋จ๊ณ์ ๊ณผ์ ์ ๊ฑฐ์น๋ค.
- app์ ํ๊ฒฝ์ Dockerfile์ ์ ์ํจ์ผ๋ก app์ ์ด๋์๋ ๋ณต์ ํ ์ ์๊ฒ ํ๋ค.
- app์ ์ด๋ฃจ๊ณ ์๋ ์๋น์ค๋ค์ docker-compose.yml์ ์ ์ํจ์ผ๋ก ํ๋์ ๊ณ ๋ฆฝ๋ ํ๊ฒฝ์ ์๋น์ค๋ค์ด ํจ๊ป ์คํ๋ ์ ์๊ฒ ํ๋ค.
- docker-compose up ๋ช ๋ น์ด๋ฅผ ์คํํจ์ผ๋ก Compose๋ ๋ชจ๋ app์ ์์ํ๊ณ ์คํํ ๊ฒ์ด๋ค.
Docker๋ Dockerfile๋ก๋ถํฐ ๋ช ๋ น์ด๋ค์ ์ฝ์ด image๋ค์ ์๋์ ์ผ๋ก ๋น๋ํ ์ ์๋ค. ๊ณต์๋ฌธ์๋ฅผ ์ฐธ๊ณ ํด์ ์์ฑ.
$ mkdir {DockerFile repository}
$ cd {DockerFile repository}
# Make new DockerFile
$ vi DockerFile
# Build image by using dockerfile
$ docker build -t {image's name} .
# Run a {image's name} container -d: background
$ docker run -d -P --name {container's name} {image's name}