개요

  • Virtual Machine:
    • App
    • Bins/Libs
    • Guest OS
    • Hypervisor
    • Host OS
    • Server
  • Docker Container:
    • App
    • Bins/Libs
    • Docker Engine
    • Host OS
    • Server
  • 리눅스 커널의 cgroups, namespaces 등의 기능을 사용해 가상공간을 사용.
  • 컨테이너는 하드웨어를 가상화하지 않기 때문에 Virtual Machine보다 빠르다.

기초

$ docker version
$ docker info

$ docker images
$ docker search [image]
$ docker pull [image]
$ docker rmi -f [image]

$ docker ps
$ docker ps -a
$ docker pause [container]
$ docker stop [container]
$ docker restart [container]
$ docker start [container]
$ docker rm -f [container]

$ docker history [container/image]
$ docker inspect [container/image]
$ docker cp [PATH]

실행하기

  • -d: detached mode. 백그라운드 모드.
  • -p: 호스트와 컨테이너의 포트를 연결 (포워딩)
    • -p 8080:80: 호스트 8080을 컨테이너의 80에 연결
  • -v: 호스트와 컨테이너의 디렉토리를 연결 (마운트)
  • -e: 컨테이너 내에서 사용할 환경변수 설정
  • -name: 컨테이너 이름 설정
  • --rm: 프로세스 종료시 컨테이너 자동 제거
  • it: -i와 -t를 동시에 사용. 터미널 입력.
  • -link: 컨테이너 연결
$ docker run ubuntu
$ docker run -rm -it ubuntu /bin/bash
$ docker run -d -p 80:80 --name webserver [image]
# Redis
$ docker run -d -p 1234:6379 redis
$ telnet localhost 1234
set mykey hello
+OK
get mykey
$5
hello
  • 명령어를 전달하지 않고 실행하면 컨테이너는 생성되자마자 종료된다.

Dockerfile 빌드

$ docker build -t my-api-server:latest .

DockerHub

$ docker login
$ docker commit
$ docker push

참고자료