본문 바로가기
Docker/docker

Docker 기본개념 및 Docker CLI 익히기

by YoonJong 2025. 4. 1.
728x90

인프런의 비전공자도 이해할 수 있는 Docker 입문/실전 강의를 참고하여 작성

 

 

docker 를 사용하는 이유는 이식성이다.

이식성 : 특정 프로그램을 다른 곳으로 쉽게 옮겨서 설치 및 실행할 수 있는 특성

 

docker

- 컨테이너를 사용해서 각각의 프로그램을 분리된 환경에서 실행 및 관리할 수 있는 툴

 

Container 

- 하나의 컴퓨터 환경 내에서 독립적인 컴퓨터 환경을 구성해서, 각 환경에 프로그램을 별도로 설치할 수 있게 만든 개념

    ㄴ 디스크 (저장공간) : 각 컨테이너마다 서로 각자의 저장 공간을 갖는다. (다른 컨테이너에서 내부에 접근 불가)

    ㄴ 네트워크 (IP, PORT) : 각 컨테이너마다 고유의 네트워크를 가지고 있다.

- 하나의 컴퓨터 환경 내에서 여러개의 미니 컴퓨터 환경을 구성할 수 있는 형태

 

컴퓨터  = 호스트 (=개인의 PC)

 

 

이미지 

- 프로그램을 실행하는데 필요한 설치 과정, 설정, 버전 정보를 등을 포함한다.

- 프로그램을 실행하는데 필요한 모든 것을 포함

- 닌텐도의 게임칩이라고 생각하면 된다.

 

 

Dockerhub 에서 이미지를 다운로드 받을 수 있다.

ㄴ github 처럼 이미지를 다운로드 할 수 있는 사이트

 

포그라운드 : 내가 실행시킨 프로그램의 내용이 화면에서 실행되고 출력되는 상태. 다른 플로그램을 조작 불가

백그라운드 : 내가 실행시킨 프로그램이 컴퓨터 내부적으로 실행되는 상태. 명령어를 추가 입력 및 새로운 프로그램 조작 가능

# image 다운로드
# docker pull 이미지명
$ docker pull nginx # docker pull nginx:latest와 동일하게 작동

# docker pull 이미지명:태그명
$ docker pull nginx:stable-perl

# image 조회
$ docker image ls

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

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

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

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

# docker create 이미지명[:태그명]
# 이미지가 존재하지 않으면 dockerHub에서 자동으로 다운로드한다.
$ docker create nginx

$ docker ps -a # 모든 컨테이너 조회

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

$ docker ps # 실행중인 컨테이너 조회

# Nginx 컨테이너 중단 후 삭제하기
$ docker ps # 실행 중인 컨테이너 조회
$ docker stop {nginx를 실행시킨 Contnainer ID} # 컨테이너 중단
$ docker rm {nginx를 실행시킨 Contnainer ID} # 컨테이너 삭제
$ docker image rm nginx # Nginx 이미지 삭제


# 실무에서는 보통 run 사용 > create 와 비슷
# docker run 이미지명[:태그명]
$ docker run nginx # 포그라운드에서 실행 (추가적인 명령어 조작을 할 수가 없음)

# Ctrl + C로 종료할 수 있음

# docker run -d 이미지명[:태그명]
$ docker run -d nginx

# Nginx 컨테이너 중단 후 삭제하기
$ docker ps # 실행 중인 컨테이너 조회
$ docker stop {nginx를 실행시킨 Contnainer ID} # 컨테이너 중단
$ docker rm {nginx를 실행시킨 Contnainer ID} # 컨테이너 삭제
$ docker image rm nginx # Nginx 이미지 삭제

# docker run -d --name [컨테이너 이름] 이미지명[:태그명]
$ docker run -d --name my-web-server nginx

# Nginx 컨테이너 중단 후 삭제하기
$ docker ps # 실행 중인 컨테이너 조회
$ docker stop {nginx를 실행시킨 Contnainer ID} # 컨테이너 중단
$ docker rm {nginx를 실행시킨 Contnainer ID} # 컨테이너 삭제
$ docker image rm nginx # Nginx 이미지 삭제

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

# 중지
$ docker stop 컨테이너명[또는 컨테이너 ID]
# 시스템 종료 강제로 중지
$ docker kill 컨테이너명[또는 컨테이너 ID]

# 중지되어 있는 특정 컨테이너 삭제
$ docker rm 컨테이너명[또는 컨테이너 ID]

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

# 중지되어 있는 모든 컨테이너 삭제
$ docker rm $(docker ps -qa)

# 실행되고 있는 모든 컨테이너 삭제
$ docker rm -f $(docker ps -qa)

# 특정 컨테이너의 모든 로그 조회
# docker logs [컨테이너 ID 또는 컨테이너명]

$ docker run -d nginx
$ docker logs [nginx가 실행되고 있는 컨테이너 ID]

# 최근 로그 10줄만 조회
# dokcer logs --tail [로그 끝부터 표시할 줄 수] [컨테이너 ID 또는 컨테이너명]
$ dokcer logs --tail 10 [컨테이너 ID 또는 컨테이너명]

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

# Nginx의 컨테이너에 실시간으로 쌓이는 로그 확인하기
# -f : follow 약어 
$ docker run -d -p 80:80 nginx
$ docker logs -f

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

# 실행 중인 컨테이너 내부에 접속하기
# docker exec -it 컨테이너명[또는 컨테이너 ID] bash

$ docker run -d nginx
$ docker exec -it [Nginx가 실행되고 있는 컨테이너 ID] bash
$ ls # 컨테이너 내부 파일 조회
$ cd /etc/nginx 
$ cat nginx.conf

 

 

 

 

docker run -d -p 4000:80 nginx 실행 시

728x90

댓글