Infra/Docker

[Docker] 도커의 개념과 구조 및 명령어

Nellie Kim 2022. 12. 30. 19:31
728x90

1. Docker란

Docker는 가상 머신처럼 독립된 실행환경을 만들어주는 것으로, 운영체제를 설치한 것과 유사한 효과를 낼 수 있지만, 실제 운영체제를 설치하지 않기 때문에 설치 용량이 적고 실행 속도 또한 빠르다.

예전에는 윈도에 VM Ware와 같은 가상 머신을 설치하였으나 최근에는 리눅스 계열에서 Docker가 그 역할을 대신한다.

 

도커 컨테이너는 일종의 소프트웨어를 소프트웨어의 실행에 필요한 모든 것을 포함하는 완전한 파일 시스템 안에 감싼다. 여기에는 코드, 런타임, 시스템 도구, 시스템 라이브러리 등 서버에 설치되는 무엇이든 아우른다. 이는 실행 중인 환경에 관계 없이 언제나 동일하게 실행될 것을 보증한다.

 

 

 

2. Docker image 와 container

docker Images(read only)는 docker container를 생성하기 위한 template이고, Container는 images가 실제 메모리에 로딩된 instance이다.

하나의 images로 유사한 여러개의 container를 만들 수 있다.  Registry는 Docker hub이며 images의 저장소이다.

  • Images: libs와 package의 template, read only
  • Container: Images가 설치되어 메모리에 로딩된 instance 

 

3. docker 자주쓰는 명령어

명령 입력 시 permission 관련 오류가 뜨는 환경에서는 각 명령어 앞에 sudo를 붙여야 한다.

⭐️ 도커 버전 확인

docker -v

 

도커 이미지 다운만 받기

docker pull {이미지명}:{태그}
# 예: docker pull python:3

 

⭐️ 컴퓨터 내 도커 이미지들 보기

docker images

 

이미지로 컨테이너 생성하기

docker create {옵션} {이미지명}:{태그}
# 예: docker create -it python

 

만들어진 컨테이너 시작하기 (이미지에 CMD로 지정해놓은 작업 시키기)

docker start {컨테이너 id 또는 이름}

 

컨테이너로 들어가기 (컨테이너 내 CLI 이용하기)

docker attach {컨테이너 id 또는 이름}

 

⭐️ 이미지를 다운받아(없을 시에만) 바로 컨테이너 실행하여 진입하기

docker run {이미지명}:{태그}
# 예: docker -it run python:3
  • pull, create, start, attach 를 한꺼번에 실행하는 것과 같다.

 

옵션설명
-d 데몬으로 실행(뒤에서 - 안 보이는 곳(백그라운드)에서 알아서 돌라고 하기)
-it 컨테이너로 들어갔을 때 bash로 CLI 입출력을 사용할 수 있도록 해 줍니다.
--name {이름} 컨테이너 이름 지정
-p {호스트의 포트 번호}:{컨테이너의 포트 번호} 호스트와 컨테이너의 포트를 연결합니다.
--rm 컨테이너가 종료되면{내부에서 돌아가는 작업이 끝나면} 컨테이너를 제거합니다.
-v {호스트의 디렉토리}:{컨테이너의 디렉토리} 호스트와 컨테이너의 디렉토리를 연결합니다.

 

동작중인 컨테이너 재시작

docker restart {컨테이너 id 또는 이름}

 

도커 컨테이너의 내부 쉘에서 빠져나오기 (컨테이너를 종료)

exit
  • 또는 Ctrl + D

 

도커 컨테이너의 내부 쉘에서 빠져나오기 (컨테이너를 종료하지 않음)

  • Ctrl + P, Q

 

⭐️ (동작중인) 컨테이너들 보기

docker ps
  • 동작중이 아닌 것을 포함한 모든 컨테이너를 보려면 -a 옵션을 뒤에 붙인다.

 

컨테이너 삭제

docker rm {컨테이너 id 또는 이름}

# ⭐️ 모든 컨테이너 삭제
docker rm `docker ps -a -q`

 

이미지 삭제

docker rmi {옵션} {이미지 id}
  • 컨테이너가 있을 시 강제삭제: -f 옵션 사용

 

⭐️ 모든 컨테이너와 이미지 등 도커 요소 중지 및 삭제

# 모든 컨테이너 중지
docker stop $(docker ps -aq)

# 사용되지 않는 모든 도커 요소(컨테이너, 이미지, 네트워크, 볼륨 등) 삭제
docker system prune -a

 

⭐️ 도커파일로 이미지 생성

# Dockerfile 파일이 있는 디렉토리 기준. 마지막의 . 이 상대주소
docker build -t {이미지명} .

 

⭐️ 도커 컴포즈 실행

# docker-compose 파일이 있는 디렉토리 기준
docker-compose up
  • 백그라운드에서 데몬으로 돌도록 하려면 -d 옵션을 붙이기.

 

 

 

 

 

 

 

 

 

 

https://www.yalco.kr/36_docker/

https://kibua20.tistory.com/135

'Infra > Docker' 카테고리의 다른 글

[Docker] Docker 기초 정리  (0) 2024.05.15