티스토리 뷰

개발/docker

docker A to Z

Jaeyeon Baek 2016.12.01 08:25

[ 최초 이미지 다운로드 ]

아래처럼 이미지 다운로드를 진행한다. 

docker pull <image_name>:<tag>
  • docker search를 통해 어떤 버전을 다운로드 받을 수 있는 지에 대한 내용은 차후 포스팅
예를들어 보면 다음과 같다.
docker pull centos:6.7

[ 컨테이너 생성 ]

아래와 같이 생성한다. -v, -p 는 옵션이니 생략 가능하며 적절하게 수정할 수 있겠다.
docker run -d -it --name <container_name> -v /pkg:/pkg \
-p 8081:80 -p 8026:25 <image>:<tag> /bin/bash

잠깐 구문을 뜯어보면 컨테이너 이름은 <container_name> 에서 지정 될 것이고, 컨테이너를 생성하기 위한 이미지는 <image>:<tag>에 centos:6.7 처럼 넣어주면 된다. -v는 host에 pkg라는 디렉토리를 guest에서 /pkg라는 디렉토리로 마운트해서 사용하겠다는 의미한다 (host:guest)

한편 -p는 PAT(port address translation)으로 host에 8081로 들어오는 패킷은 container에 80으로 PAT 시키고, host에 8026로 들어오는 패킷은 container에 25로 PAT시키겠다는 의미이다.


[ 명령어 ]

# 이미지 목록 보기

docker images

# 컨테이너 목록 보기

docker ps -a

# 이미지 삭제

해당 이미지로 생성된 컨테이너가 존재하면 삭제 안됨. 컨테이너 먼저 지워야 하며 이미지 이름에는 태그를 함께 명시해주는 것이 안전하다.

docker rmi <image_name>

# 컨테이너 삭제

docker rm <container_name>

# 컨테이너에서 host로 파일 복사

아래와 같은 형식으로 사용 한다. (host에서 container로 복사하는 건 설명 생략....)

docker cp <container_name>:/tmp/aaa ./. 

# container에 접속

위에서 생성한 container(tmp-name)에 아래와 같이 접속하도록 함

docker attach <container_name>
위와 같이 컨테이너에 접속하게 되면 같은 기존에 열려있는 세션을 공유하기 때문에 exit 등 명령을 잘못 날리면 다른 세션에도 영향을 줄 수 있게 된다. 아래와 같이 새로운 bash 를 열면 그런 문제를 방지할 수 있으니 사용하도록 하자.
docker exec -it <container_name> bash

# container 시작

docker start <container_name>
# container 종료
docker stop <container_name>


[ 새로운 이미지 제작 ]

# 깨끗한 container 생성

위에서 받아 놓은 centos 6.7이미지가 이미 있으니 그걸 사용해서 container를 생성 함

docker run -d -it --name <container_name> -v /pkg:/pkg <image>:<tag> /bin/bash

위에서 /pkg는 host:container 의미로 공유 디렉토리 설정 임.

# 이미지 생성

tag를 붙이는 것이 나중에 관리 차원으로 좋다.

docker commit <container_name> <image_name:tag>


댓글
댓글쓰기 폼