사용자 도구

사이트 도구


docker

Docker

Usage

docker search [검색어]

이미지 관리

  • docker pull [image-name]:[tag] : 이미지의 tag 버전을 다운로드함. latest는 최신버전.
  • docker images : 이미지 목록보기
  • docker rmi [image-name]:[tag] : 이미지 삭제. tag 생략시 버전 상관없이 모두 삭제.

Container 관리

  • run 명령으로 컨테이너 생성
    docker run [option] [image-name] {[실행명령]}
    • -i -t : interactive, pseudo-tty : 실행된 명령에서 인터랙티브하게 입력/출력 가능
    • --name [container-name] 컨테이너 이름지정
    • -d : detached 상태로(background로) 실행
    • -v $HOSTDIR:$DOCKERDIR : HOST의 디렉토리를 컨테이너의 디렉토리에 마운트
    • -p 127.0.0.1:$HOSTPORT:$CONTAINERPORT : HOST의 특정포트로 들어오는 요청을 Container의 특정포트로 보내기.
      # 11211 port로 실행되는 memcached docker 이미지가 있다고 할 때 아래 명령으로 컨테이너 생성하면
      docker run -d -p 127.0.0.1:11211:11211 --name memcachedtest memcached
      # 앞의 "127.0.0.1:" 생략 가능.
  • docker ps -a : 모든 컨테이너 목록 출력. -a는 전체 목록, -a없으면 현재 실행중인 것들만.
  • docker start [container-name|id] : 컨테이너 시작
  • docker restart [container-name] : 재시작
  • docker attach [container-name] : 컨테이너에 접속
    • exit 혹은 Ctrl-D 사용시 컨테이너 정지
    • Ctrl-P, Ctrl-Q를 차례로 누르면 실행상태로 그냥 빠져나옴.
  • docker exec [container-name] [명령] … : 외부에서 컨테이너 안의 명령 실행하기
  • docker exec -it [container-name] /bin/bash : 외부에서 컨네이너 안의 bash interactive 하게 실행
  • docker stop [container-name] : 컨테이너 정지
  • docker rm [container-name]

Volume Mount

  • host 의 diretory를 docker container에 마운트하기
  • run -v /volume/dir : /volume/dir 을 컨테이너에 생성, 실제 저장될 위치는 inspect로 확인
docker run -d -P --name web -v /webapp training/webapp python app.py
  • docker inspect [container-name] 으로 마운팅 상황 확인 가능
  • Host 디렉토리를 마운트하려면 -v /host/dir:/container/dir로 host 디렉토리를 container의 특정 디렉토리에 마운팅

Docker Proxy

  • Linux에서 Docker Proxy 프로세스가 뜨는 것을 막으려면, 커널 2.6을 제외하고,
docker daemon --userland-proxy=false
/etc/default/docker 파일에 DOCKER_OPTS 을 추가한 후 docker daemon 을 재시작하면 된다. 
 
$ cat /etc/default/docker
DOCKER_OPTS="--userland-proxy=false"

/etc/hosts

docker run --add-host="some.example.com:127.17.0.1"

오류 대응

centos

unable to remount sys readonly: unable to mount sys as readonly max retries reached 오류를 만나면 /etc/sysconfig/docker 파일에 --exec-driver=lxc 추가 후 docker 재시작.

other_args="--selinux-enabled --exec-driver=lxc"

Docker & Java / JVM / JDK

  • Docker의 JVM에서 jmap 으로 Heap Dump를 뜰 수 없다.
  • JVM in Docker and PTRACE_ATTACH를 참조하여 Docker 실행시에 --cap-add=SYS_PTRACE 옵션을 준다.
# 설정 안했을 경우 관련 오류
Caused by: sun.jvm.hotspot.debugger.DebuggerException: Can't attach to the process: ptrace(PTRACE_ATTACH, ..) failed for 142: Operation not permitted

Mac OS X 성능 문제

Docker Log rotation

  • /var/lib/docker/containers/*/*.log 에 STDOUT 이 모두 계속 출력되므로 log rotate가 필요하다.

참조

docker.txt · 마지막으로 수정됨: 2017/06/27 08:59 저자 kwon37xi