Docker Container :: 이미지 실행시켜서 컨테이너 만들기

이주희·2022년 10월 17일
0

Docker

목록 보기
4/16

도커 컨테이너

이미지로 컨테이너를 생성하면 해당 이미지의 목적에 맞는 파일이 들어 있는 파일 시스템과 격리된 시스템 자원 및 네트워크를 사용할 수 있는 독립된 공간이 생성되고, 이것이 도커 컨테이너가 된다.

  • 컨테이너는 이미지를 읽기 전용으로 사용한다.

  • 이미지에서 변경된 사항만 컨테이너 계층에 저장하므로, 컨테이너에서 무엇을 하든이 원래 이미지는 영향을 받지 않는다.

  • 각기 독립된 파일 시스템을 제공받으며 호스트와 분리돼 있으므로 특정 컨테이너에서 어떤 애플리케이션을 설치하거나 삭제해도 다른 컨테이너와 호스트는 변화가 없다.


1. 컨테이너 만들기

run 명령어는
pull, create, start 명령어를 일괄적으로 실행한 후 attach가 가능한 컨테이너라면 컨테이너 내부로 들어간다.
(attach-i -t 옵션을 사용했을 때)

docker run 이미지이름

1-1. 만들어질 컨테이너의 이름 지정 옵션

docker run --name 컨테이너이름 이미지이름

1-2. 상호 입출력 옵션

docker run -i -t 이미지이름
  • i- 상호 입출력 옵션
  • -t tty 활성화
    👉🏻 배시 셸을 사용하도록 설정

1-3. 컨테이너 생성, 시작, 진입 따로 하기

// 생성 (이미지가 없으면 pull + create)
docker create 이미지이름

// 컨테이너 시작
docker start 컨테이너이름

// 컨테이너 내부로 들어가기
docker attach 컨테이너이름

컨테이너를 대상으로 하는 명령어에 컨테이너 이름 대신 ID를 쓸 수 있고,
ID의 앞의 3~4자만 입력해도 된다.

하나의 이미지는 여러 개의 컨테이너를 만들 수 있다.
// docker ps


2. 컨테이너 내부에서 빠져나오기

2-1. 컨테이너 내부에서 빠져나오면서 동시에 컨테이너 정지

// 방법 1.
exit

//방법 2.
Ctrl + D 동시에 입력

2-2. 컨테이너를 정지하지 않고 빠져나오기

단순히 컨테이너의 셸에서만 빠져나온다.

Ctrl + P, Q

3. 컨테이너 목록 보기

3-1. 정지되지 않은 컨테이너만 출력

docker ps

3-2. 모든 컨테이너 출력

docker ps -a

COMMAND

  • 컨테이너가 시작될 때 실행될 명령어, 대부분의 이미지에 미리 내장돼있기 때문에 별도로 설정할 필요는 없다.
  • 이미지에 내장된 커맨드는 docker run이나 create 명령어의 맨 끝에 입력해서 덮어쓸 수 있다.

CREATED

  • 컨테이너가 생성되고 난 뒤 흐른 시간

NAMES

  • 컨테이너의 고유한 이름
  • 컨테이너를 생성할 때 --name 옵션으로 설정하지 않으며 임의로 형용사+명사를 조합해 설정된다.
  • 중복 불가!
  • docker rename으로 변경 가능

4. 컨테이너 끄기

docker stop 컨테이너이름


스탑했다고 컨테이너가 삭제된 것은 아니다! docker ps -a 명령어를 쓰면 stop한 컨테이너도 출력되는 것을 볼 수 있다.

stop한 컨테이너를 다시 실행시키려면 run이 아닌 start ~!

docker start 컨테이너 이름

start 했을 때는, 로그는 출력되지 않는다.


5. 로그 보기

docker logs 컨테이너 이름

이렇게 하면 한번만 찍히고 만다.
계속해서 보려면 👇🏻

5-1. 로그 실시간으로 보기

docker logs -f 컨테이너 이름

6. 컨테이너 삭제하기

삭제하면 복구할 수 없다.. 신중하게..!

docker rm 컨테이너 이름

실행중인 컨테이너를 삭제하면 에러가 난다.
docker stop 컨테이너이름으로 스탑하고 삭제하거나,
docekr rm -f 컨테이너이름으로 강제로 삭제한다.

6-1. 모든 컨테이너 삭제하기

docker container prune

6-2. 변수로 컨테이너 삭제하기

  • -a 컨테이너 상태와 관계 없이 모든 컨테이너 출력
  • -q 컨테이너의 ID만 출력
// 실행 상태와 관계 없이 모든 컨테이너 정지/삭제
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
profile
🍓e-juhee.tistory.com 👈🏻 이사중

0개의 댓글