$ 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}