사용자 도구

사이트 도구


docker

문서의 이전 판입니다!


Docker

Install/설치

  • Docker Installation on Ubuntu Linux : Docker Ubuntu Repository를 운영중이다. 저장소를 등록하고 설치한다. ubuntu 버전별 주의점도 읽어봐야 한다.
    sudo apt-get install docker-engine
  • 설치 후 docker Service로 등록된다. Ubuntu Service

docker group 추가를 통해 sudo 없이 이용

매번 sudo 명령을 사용하는게 싫을 경우 docker Group에 사용자를 등록해준다. 단, 이 경우 docker 그룹에 속하는 사용자는 root와 맞먹는 권한을 갖기 때문에 보안에 주의해야한다.

sudo usermod -aG docker [username]
sudo service docker restart
# logout/login
 
# 잘 되는지 확인 sudo 없이
docker run hello-world

만약 Cannot connect to the Docker daemon. Is 'docker daemon' running on this host?와 같은 메시지가 나오면서 실행이 안된다면 재시작/재로그인을 안 한 때문이거나 DOCKER_HOST 환경변수를 잘못 설정했기 때문이다. 재부팅 하고 DOCKER_HOST 환경변수를 삭제해준다.

Uninstall

sudo apt-get purge docker-engine
rm -rf /var/lib/docker

Memory와 Swap Accounting 조정

아래와 같은 경고를 만난다면, Memory 옵션과 Swap Accounting Kernel 옵션을 설정하자. docker를 안 사용하더라도 성능상 좋다고 한다.

WARNING: Your kernel does not support cgroup swap limit. WARNING: Your
kernel does not support swap limit capabilities. Limitation discarded.

/etc/default/grub 파일을 열어서

GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
sudo update-grub
# 이후 재부팅한다.

UFW Forwarding 조정

Ubuntu Linux Firewall 사용시 Forwarding 기능을 활성화해야한다. TBD

Docker용 DNS 설정

TBD

Docker 자동 시작

  • 14.10 이하는 upstartd를 사용하며, 설치 과정에서 자동시작으로 등록된다.
  • 15.04 이상은 systemd를 사용하며, 아래 명령으로 자동시작 등록한다.
    sudo systemctl enable docker

hello-world 삭제

설치 테스트가 끝났으니 삭제한다.

docker rm `sudo docker ps -aq`
docker rmi hello-world

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 stop [container-name] : 컨테이너 정지
  • docker rm [container-name]

오류 대응

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.1452436455.txt.gz · 마지막으로 수정됨: 2016/01/10 23:04 저자 kwon37xi