데브코스 TIL/Docker

Docker 기초

예니ㅣ 2023. 12. 20. 11:34

강의

Docker 소개

내가 만든 프로그램이 다른 환경에서는 작동하지 않기도 합니다.

  • 설치 과정에서 중요한 파일이 빠진 경우
  • 사용하는 라이브러리 버전이 다른 경우
  • 환경 설정 동일하지 않은 경우

 

Docker

"Docker"는 내 컴퓨터 환경을 그대로 패키징하여 전달합니다.

Docker의 목표는 소프트웨어를 일관되게 빌드하고 실행 및 배포하는 것입니다.

 

Docker Container

"Docker Container"는 Docker Image를 독립된 환경에서 실행하기 위한 분리된 공간 입니다.

Volume은 자체 파일 시스템 입니다.

 

Docker Image

"Docker Image"는 소프트웨어를 실행하기 위해 필요한 모든 것을 포함하는 독립적으로 만들어진 패키지 입니다.

 

Docker Image의 실제 ID는 IMAGE ID로 나타냅니다.

Docker TAG는 별칭을 나타냅니다.

Docker Image의 이름은 REPOSITORY:TAG로 나타냅니다.

Docker의 공식 Image는 네임스페이스가 존재하지 않습니다.

 

Docker Image는 다수의 파일로 구성됩니다.

docker image ls
  • 소프트웨어 실행 환경 : 리눅스의 경우 우분투 및 데비안
  • 소프트웨어 코드
  • 소프트웨어에 필요한 라이브러리
  • 파일 시스템 스냅샷 : 스택화된 형태
  • 환경 설정 변수 : 빌드 및 실행 변수
  • 메타 데이터 : 버전 혹은 작성자, 설명 등 이미지에 대한 정보

 

Dockerfile

"Docker File"은 소프트웨어를 Docker Image로 빌드하기 위한 세부 정보를 기술한 텍스트 파일 입니다.

ENTRYPOINT와 CMD를 함께 사용할 경우, CMD 값이 파라미터로 실행됩니다.

FROM os
COPY app_code
WORKDIR working_directory
CMD code_command			# RUN으로 덮어쓰기 가능

# 기타 키워드
ARG docker_image_variables
ENV environmental_variables
USER user_id
EXPOSE port_number
RUN docker_build_command
ENTRYPOINT code_command		# CMD와 유사하지만 CMD보다 우선 실행

 

Docker Registry

"Docker Registry"는 Docker Image를 등록 및 보관합니다.

On-prem registry 및 Cloud registry가 존재합니다.

Docker Hub를 가장 많이 사용합니다.

Github와 연동하여 Automated Build를 제공합니다.

https://labs.play-with-docker.com/

 

Docker 기본 명령

docker version
docker build -t
docker push
docker tag
docker pull
docker run		# 새로운 Container 실행
	docker run -p
	docker run -v
	docker run --name		# Container ID 대신 사용할 이름 지정
docker exec		# 이미 실행된 Container에 작업
docker logs
	docker logs --follow	# 실시간 로그 스트리밍

 


Virtual Machines vs Docker Containers

Virtal Machines

"Virtal Machines"(VM)은 하드웨어를 추상화하여 한 컴퓨터 위에 가상 컴퓨터를 올리는 것입니다.

  • 장점
    • 소프트웨어 실행에 필요한 독립적이고 분리된 공간 제공
    • 다수의 소프트웨어를 각 VM단에서 독립적으로 실행 가능
  • 단점
    • 각 VM별 자신만의 OS 필요
    • 유료 OS인 경우 라이센스 비용 필요
    • 자원 사용량 많음

 

Docker Containers

  • 장점
    • 다수의 소프트웨어를 각 컨테이너단에서 독립적으로 실행 가능
    • 자원 소비 적음 (lightweight)
    • 호스트 OS 사용하여 별도 비용 발생 없음
  • 단점
    • 다수의 Docker Container 관리 어려움
    • 호스트 OS 사용으로 인해 Cross-platform compatibility를 항상 지원하지 않음
    • GUI 소프트웨어 개발에 적합하지 않음

 


Docker 설치

Docker Desktop을 이용합니다.

 

Docker 필요 사양

    • 최소 4GB 메모리
    • 맥 OS 버전 11 혹은 그 이상
  • 윈도우
    • 최소 4GB 메모리
    • 64비트 윈도우 10 혹은 윈도우 11
    • Hyper-V 및 Container 기능 활성화 필요
    • WSL 버전

 


Docker 프로그램 개발 프로세스

  1. 대상 소프트웨어 선택
  2. 다수의 컴포넌트로 구성된 소프트웨어의 경우 Docker Image 생성
  3. Dockerization : Docker Image 빌드

 


Docker 환경 클린업

CMD 이용

  1. 컨테이너 삭제
  2. 이미지 삭제
  3. 삭제 확인
docker container rm -f $(docker container ls -aq)

docker image rm $(docker image ls -q)

docker ps
docker images

 

Docker Desktop 이용

  • Truobleshoot 메뉴

'데브코스 TIL > Docker' 카테고리의 다른 글

Docker Network  (0) 2023.12.21
Docker Volume  (0) 2023.12.21
Docker 명령  (0) 2023.12.21
Docker: Web Service 실행  (1) 2023.12.20
Docker 기초 실습  (0) 2023.12.20