Docker 시리즈 (2)

1 분 소요

컨테이너 생성 및 실행 명령어

  • docker run

      # docker run -i -t --name myubuntu ubuntu:14.04
    
    • 컨테이너를 생성하고 실행하는 명령어이다.
    • -i -t옵션은 상호 입출력을 가능하게 한다. 내부 배쉬셸로 들어가게 한다.
    • –name옵션은 자신이 만든 컨테이너에게 별명을 붙여주는 것이다.
    • ubuntu:14.04는 이미지의 이름이다.
    • 컨테이너 셸에서 빠져나오려면 exit이나 ctrl + p,q를 입력하는 것이다.
    • exit는 컨테이너를 종료시키고 나오고, ctrl + p,q는 종료시키지않고 나오는 것이다.
  • docker images : 호스트가 다운받은 이미지의 목록
  • docker ps : 현재 실행되고 있는 컨테이너 목록 / -a옵션으로 멈춰있는 컨테이너까지 포함시킨다.
  • docker pull centos:7 : 도커 이미지 내려받기
  • docker create -i -t --name mycentos centos:7 : 컨테이너를 생성
  • docker start mycentos : 컨테이너를 실행
  • docker stop mycentos : 컨테이너를 중지
  • docker attach mycentos : 컨테이너 내부로 들어가기
  • docker rename mycentos newcentos : 컨테이너 별명 새로 짓기
  • docker rm newcentos : 컨테이너 삭제 / -f 옵션으로 실행되고 있는 컨테이너를 삭제 가능

컨테이너 외부에 노출

컨테이너는 가상 IP주소를 할당받는다. 기본적으로 도커는 컨테이너에 172.17.0.x의 IP를 순차적으로 할당한다.
컨테이너에 들어가서 ifconfig를 치면 도커의 NAT IP인 172.17.0.2를 할당받은 eth0 인터페이스와 로컬호스트인 lo 인터페이스가 있다. 해당 컨테이너를 외부에서 접근할 수 있도록 노출시키려면 아래와 같이 eth0의 IP와 포트를 호스트의 IP와 포트에 바인딩시키면 된다.

# docker run -i -t --name mywebserver -p 80:80 ubuntu:14.04

-p옵션은 앞에는 호스트의 포트, 뒤에는 컨테이너의 포트를 의미한다.

  • 순서는 아래와 같다.
    1. 호스트 IP의 80번 포트로 접근
    2. 80번 포트는 컨테이너의 80번 포트로 포워딩
    3. 웹서버 접근
  • 만약 그냥 -p 80만 쓰면 호스트의 아무 포트에다가 컨테이너의 80번 포트를 바인딩 시킨다.

docker로 wordpress실행

# docker run -d \
--name wordpressdb \
-e MYSQL_ROOT_PASSWORD=qwer \
-e MYSQL_DATABASE=wordpress \
mysql:5.7

# docker run -d \
 --name wordpress \
 -e WORDPRESS_DB_PASSWORD=qwer \
 --link wordpressdb:mysql \
 -p 80 \
 wordpress
  • -d옵션
    • -i, -t가 컨테이너 내부로 진입하도록 attach 가능한 상태로 설정하는데 -d는 반대이다.
    • -d는 detach모드로 컨테이너를 실행하는데 컨테이너를 백그라운드에서 동작하는 어플리케이션으로써 실행하도록 한다.
    • detach모드에서 컨테이너 내부 셸을 사용하려면 docker exec -i -t wordpressdb /bin/bash
  • -e옵션
    • 컨테이너 내부의 환경변수를 설정한다.
    • 컨테이너화된 어플리케이션은 환경변수에서 값을 가져와 쓰는 경우가 많다.
  • –link옵션 (deprecated)
    • A컨테이너에서 B컨테이너로 접근하는 방법 (내부 IP를 알 필요 없이)
    • --link wordpressdb:mysql에선 웹서버 컨테이너인 wordpress가 wordpressdb의 IP를 몰라도 mysql이라는 호스트명으로 접근이 가능

카테고리:

업데이트:

댓글남기기