본문 바로가기

Development/Docker

[Docker]7. 컨테이너 다루기

1. 도커 컨테이너란?

파일시스템과 애플리케이션이 함께 담겨 있는 박스

 

2. 도커 컨테이너 생애 주기

실행중 > 정지 > 파기 

 

3. 컨테이너 생성 및 실행

$docker run --name [컨테이너이름] [이미지명]

docker container run [options] 이미지명/ID[:태그] [명령] [명령인자...]

$ docker container run -d -p 9000:8080 example/echo:latest

 

4. 도커 컨테이너 실행시 명령인자 전달

$ sudo docker container run -it alpine:3.7 uname -a

5. 컨테이너에 이름 붙이기

$ sudo docker container -t -d --name sangjo-echo example/echo:latest

6. 도커 컨테이너 목록 보기

$docker ps #실행중 컨테이너 목록 보기

$docker ps -a  #실행 완료된 것 포함 모든 컨테이너 목록 보기

$docker container ls [options]

항목 내용
CONTAINER ID 컨테이너를 식별하기 위한 유일 식별자
IMAGE 컨테이너를 만드는 데 사용된 도커 이미지
COMMAND 컨테이너에서 실행되는 애플리케이션 프로세스
CREATED 컨테이너 생성후 경과된 시간
STATUS Up(실행중), Exited(종료) 등 컨테이너 실행 상태
PORTS 호스트 포트와 컨테이너 포트의 연결 관계 (포트 포워딩)
NAMES 컨테이너 이름

6.1 컨테이너 id만 추출

$ docker container ls -q

 

6.2 컨테이너 목록 필터링하기

6.2.1 컨테이너 이름 필터링

$ docker container ls --filter "name=echo1"

6.2.2 컨테이너 생성 이미지 기준 필터링

$ docker container ls --filter "ancestor=example/echo"

 

6.3 종료된 컨테이너 목록 보기

$ docker container ls -a

 

7. 컨테이너 정지하기

docker container stop 컨테이너ID_또는_컨테이너명

 

8. 컨테이너 파기하기

docker container rm 컨테이너ID_또는_컨테이너명

> -f 옵션 : 실행중 컨테이너 파기 옵션 : docker container rm -f xxxxx

 

9. 컨테이너 정지시 자동 파기

docker container run --rm[파기 옵션]

 

10.표준 출력 연결하기

docker (container) logs [options] 컨테이너ID_또는_컨테이너명

> -f 옵션 : 실행 중인 컨테이너의 새로 출력 되는 표준 출력 내용을 계속 보여 준다.

 

11. 실행 중인 컨테이너에서 명령 실행하기

docker container exec [options] 컨테이너ID_또는_컨테이너명 컨테이너에서_실행항_명령

> -it 옵션 : 표준 입력을 다루는 i 옵션과 유사 터미널을 할당하는 t 옵션을 함께 사용하면 컨테이너를 쉘을 통해 다룰수 있다.

$ sudo docker container exec -it echo(container name) sh(shell) / bash

참고 : https://docs.docker.com/engine/reference/commandline/exec/

 

12 호스트 또는 컨테이너간 파일 복사 

docker container cp [options] 컨테이너ID_또는_컨테이너명:원본파일 대상파일

$ sudo docker container cp echo:/echo/main.go .(현재작업 디렉토리)

docker container cp [options] 호스트_원본_파일 컨테이너ID_또는_컨테이너명:대상파일

$ sudo docker container cp dummy.txt echo:/tmp

$ sudo docker container exec echo ls /tmp | grep dummy

 

13. 컨테이너 메타 데이터 검토

$ docker inspect [container_id]

특정 메타 데이터 값 json 형태로 확인 하기

$ docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' [container_id]

참고 : https://docs.docker.com/engine/reference/commandline/inspect/#examples