#wannabeeeeeee the best DataScientist

Docker 실습(1) 본문

Data scientist/Docker

Docker 실습(1)

맨사설 2025. 5. 4. 23:12
728x90

 

이미지(Image) 다운로드

Dockerhub은 Github처럼 이미지를 저장 및 다운받을 수 있는 저장소 역할을 하는 곳이다.

https://hub.docker.com/_/nginx

 

nginx - Official Image | Docker Hub

Quick reference Supported tags and respective Dockerfile links 1.27.5, mainline, 1, 1.27, latest, 1.27.5-bookworm, mainline-bookworm, 1-bookworm, 1.27-bookworm, bookworm⁠1.27.5-perl, mainline-perl, 1-perl, 1.27-perl, perl, 1.27.5-bookworm-perl, mainline-

hub.docker.com

 

# 도커 이미지 다운로드
# docker pull 이미지명:태크명
docker pull nginx:stable-perl

태그명을 생략하면 latest(최신 버전) 태그가 자동으로 붙어 이미지가 다운로드된다.

이미지(Image) 조회

# 이미지 조회
docker image ls

LS : list 약자

REPOSITORY : 이미지 이름(이미지명)

TAG : 이미지 태그명

IMAGE ID : 이미지 ID

CREATED : 이미지가 생성된 날짜(다운받은 날짜 X)

SIZE : 이미지 크기

✅ 이미지 삭제

# 특정 이미지 삭제
docker image rm [이미지 ID 또는 이미지명]

# 중지된 컨테이너에서 사용하고 있는 이미지 강제 삭제
docker image rm -f [이미지 ID 또는 이미지명]

# 컨테이너에서 사용하고 있지 않은 이미지만 전체 삭제
docker image rm $(docker images -q)

# 컨테이너에서 사용하고 있는 이미지를 포함해서 전체 이미지 삭제
docker image rm -f $(docker images -q)

RM : remove 약자

  전체 ID를 다 입력하지 않고 ID의 일부만 입력해도 된다.(단, ID의 일부만 입력했을 때, 입력한 ID의 일부를 가진 이미지가 단 1개여야 한다.)

  실행 중인 컨테이너에서 사용하고 있는 이미지는 강제로 삭제할 수 없다.(컨테이너 중단하고 삭제 진행하여야 한다)

컨테이너(Container) 생성

# 컨테이너 생성
# docker create 이미지명[:태그명]
docker create nginx

# 컨테이너 실행
# docker start 컨테이너명[또는 컨테이너 ID]
docker start [컨테이너 ID]

이미지를 바탕으로 컨테이너를 생성한다. 이 때, 컨테이너를 실행시키지는 않는다.

컨테이너 생성+실행

이미지를 바탕으로 컨테이너를 생성한 뒤, 컨테이너를 실행까지 시킨다.

# docker run 이미지명[:태그명]
docker run nginx # 포그라운드에서 실행

# docker run -d 이미지명[:태그명]
docker run -d nginx # 백그라운드에서 실행

# Ctrl + C로 종료할 수 있음

[컨테이너에 이름 붙여서 생성 및 실행하기]
# docker run -d --name [컨테이너 이름] 이미지명[:태그명]
docker run -d --name my-web-server nginx

 

💡보충 개념

포그라운드(foreground)백그라운드(background)의 차이

  • 포그라운드 내가 실행시킨 프로그램의 내용이 화면에서 실행되고 출력되는 상태를 뜻한다. 그러다보니 포그라운드 상태에서는 다른 프로그램을 조작할 수가 없다.
  • 백그라운드 내가 실행시킨 프로그램이 컴퓨터 내부적으로 실행되는 상태를 의미한다. 그래서 프로그램이 어떻게 실행되고 있는 지에 대한 정보를 화면에서 확인할 수 없다. 이런 특성 때문에 다른 명령어를 추가로 입력할 수도 있고, 새로운 프로그램을 조작할 수도 있다.
300x250

호스트의 포트와 컨테이너의 포트 연결하기

# docker run -d -p [호스트 포트]:[컨테이너 포트] 이미지명[:태그명]
docker run -d -p 4000:80 nginx

docker run -p 4000:80 라고 명령어를 입력하게 되면, 도커를 실행하는 호스트의 4000번 포트를 컨테이너의 80번 포트로 연결하도록 설정한다.

컨테이너(Container) 조회/중지/삭제

# 모든 컨테이너 조회
docker ps -a
# 실행중인 컨테이너 조회
docker ps

ps : process status의 약자

-a : all의 약자

# 컨테이너 중지
docker stop 컨테이너명[또는 컨테이너 ID]
docker kill 컨테이너명[또는 컨테이너 ID]

보통은 stop을 사용하고 그럼에도 종료가 안될 경우 kill 사용 권장

# 중지되어 있는 특정 컨테이너 삭제
docker rm 컨테이너명[또는 컨테이너 ID]
# 중지되어 있는 모든 컨테이너 삭제
docker rm $(docker ps -qa)

# 실행되고 있는 특정 컨테이너 삭제
docker rm -f 컨테이너명[또는 컨테이너 ID]
# 실행되고 있는 모든 컨테이너 삭제
docker rm -f $(docker ps -qa)

컨테이너(Container) 로그 조회

# 로그 조회
docker logs [nginx가 실행되고 있는 컨테이너 ID]

# 최근 로그 10줄만 조회
dokcer logs --tail 10 [컨테이너 ID 또는 컨테이너명]

# 기존 로그 조회 + 생성되는 로그를 실시간으로 보고 싶은 경우
docker logs -f [컨테이너 ID 또는 컨테이너명]

# (응용)기존 로그는 조회하지 않기 + 생성되는 로그를 실시간으로 보고 싶은 경우
docker logs --tail 0 -f [컨테이너 ID 또는 컨테이너명]

실행 중인 컨테이너 내부에 접속하기

docker exec -it [Nginx가 실행되고 있는 컨테이너 ID] bash
ls # 컨테이너 내부 파일 조회

컨테이너 내부에서 나오려면 Ctrl + D 또는 exit을 입력하면 된다.

bash : 쉘(Shell)의 일종

-it : -it옵션을 사용해야 명령어를 입력하고 결과를 확인할 수 있다. -it옵션을 적지 않으면 명령어를 1번만 실행시키고 종료되어 버린다. 즉, -it 옵션을 적어야 계속해서 명령어를 입력할 수 있다.

 

728x90

'Data scientist > Docker' 카테고리의 다른 글

Docker Compose  (0) 2025.05.11
Docker File  (0) 2025.05.07
Docker 실습(2)  (1) 2025.05.06
Docker 기본 개념  (0) 2025.05.04