학습내용

  • 도커설치
  • 도커 사용법


학습목표

  • 도커의 설치방법과 기본사용을 알아본다.
  • 도커사용법에 대해 자세히 알아본다.



도커 설치

  • http://docker.com
  • 요구사항
    • 윈도우 64비트 버전이상
    • 도커 툴박스(윈두우 8.1 이하) / 도커 머신 (윈도우 10.0 이상)
    • BootwDocker vs Docker Machine
  • 다운로드 & 설치


도커툴박스 vs 도커머신

  • Bootwdocker (deprecated)
    • Tiny Core linux 기반의 경량 리눅스배포판 사용
    • 내부적으로 버추얼박스 지원
  • Docker machine (new)
    • 가상호스트에 도커엔진 설치하는 툴
    • 버추얼박스, vmware 지원
    • 여러대의 시스템에 도커머신들을 설치하고 관리 할 수 있는 신기술

도커기반 우분투 설치

  • 도커 이미지 검색 (기본이 최신버전)
    • docker search ubuntu
      • root 권한으로만 수행 (sudo ~)
  • 우분투 이미지 다운로드
    • docker pull ubuntu
  • 이미지 리스트 출력
    • docker images
  • 컨테이너 생성
    • docker run --name=ubuntu ubuntu
  • 컨테이너 접속
    • docker attach ubuntu
    • docker exec -lt ubuntu bash
      • $ → # 으로 바뀜
  • 컨테이너 탈출
    • exit
      • 컨테이너 정지
    • 컨트롤-P-Q 
      • 컨테이너 정지하지 않고 나옴


도커 사용법

도커 기본 명령어

  • 도커 컨테이너 리스트
    • docker ps -a
  • 도커 컨테이너 정지
    • docker stop ubuntu
  • 도커 컨테이너 재시작
    • docker restart ubuntu
  • 도커 컨테이너 삭제
    • docker rm ubuntu
      • 정지된 컨테이너 삭제 (stop 이후)
    • docker rm -f ubuntu
      • stop 없이 강제로 삭제
    • docker kill ubuntu
      • 컨테이너가 죽은경우 kill로
  • 도커 이미지 삭제
    • docker rmi ubuntu
  • 도커 이미지 확인
    • docker images

중요 도커 명령어

  • 이미지 파일 생성
    • docker save -0 ununtu_img_tar ubuntu
      • 우분투 이미지를 tar로 패킹해서 local파일 시스템으로 저장
  • 이미지 압축/해제
    • gzip ubuntu_img.tar / bzip2 ubuntu_img.tar
    • gzip -d ubuntu_img.tar.gz / bzip2 -d ubuntu_img.tar.bz2
  • 이미지 삭제
    • docker rmi ubuntu
  • 로컬 파일에서 이미지 로드
    • docker load -i ubuntu_img.tar
    • docker images
      • 이미지 ID확인
  • 이미지 태그 지정
    • docker tag 이미지ID ubuntu
      • tag → alias

컨테이너의 IP주소 알아내기

  • 일반 우분투에서는
    • ifconfig
  • 도커의 컨테이너에서는
    • docker inspect ubuntu | grep "IPAddress"

도커 run 명령어 옵션

  • -p (publish) : 포트 노출
  • -d (detach) / --detach : 서버형 실행
  • -e (env) / --env : 환경변수 설정
  • -i (interactive) : 표준입력 열어두기
  • -t (tty) : 터미널 인터페이스
  • -v (volume) : 호스트 디렉토리 연결
  • -w (workdir) : 작업디렉토리 설정
  • -l (link) / --link : 컨테이너 연결

도커 명령어

  • search ubuntu : 검색
  • pull ubuntu:latest : 다운로드
  • run : 이미지 → 컨테이너생성
  • exec : 컨테이너 쉘명령어 수행
  • ps : 프로세스 리스트
  • attach : 컨테이너 접속
  • stop/restart/kill/rm/pause/unpause
  • images : 이미지 리스트
  • rmi : 이미지 삭제
  • commit : 컨테이너 → 이미지생성
  • history : 이미지 변경사항 내역
  • diff : 이미지와 컨테이너사이의 변경내역조회
  • inspect : 컨테이너/이미지의 세부정보 조회
  • tag : 이미지 새로운 태그지정


도커의 IP할당 방식

Docker IP할당

도커에서는 기본적으로 NAT방식의 주소할당을 합니다.

보통 컨테이너별로 172.17.0.x 와 같은 IP를 할당 받습니다.

물리 IP를 받고 싶으면 docker network create를 사용해서 연결해야 합니다.

문제가 되는 경우는 도커가 리눅스에 네이티브로 설치되지 않고 윈도우나 맥OS처럼 버추얼박스와 같은 하이퍼바이저기반으로 설치된 경우입니다.

이때는 버추얼박스가 자체적으로 NAT로 할당 (보통 10.0.2.15/윈도우의경우 192.168.99.100) 되어 도커의 가상머신에 IP를 할당하고 또다시 도커가 컨테이너에게 가상주소(172.17.0.x)를 할당한 경우입니다.

이때 도커의 -p 옵션으로 컨테이너의 포트를 버추얼박스의 주소로 포워딩시키면 내부 시스템에서는 접속이 됩니다.

문제는 외부 네트워크에서 접속하려면 버추얼박스에 다시 포트포워딩 설정을 해줘야 외부에서 접속이 가능합니다.

예를 들면 아파치 웹서버나 톰캣을 컨테이너로 띄웠다면 발생하는 문제라고 할 수 있습니다.

결론적으로 윈도우에 버추얼박스를 NAT로 설치한 도커를 사용하는 경우에는 2중으로 포트포워딩 작업을 해줘야 합니다. (실제 IP → 10.0.2.15나 192.168.99.100 → 172.17.0.x)


  • No labels
Write a comment…