Data Scientist 옌

매일 발전하는 IT문제해결사

Programing 프로그래밍

Docker 도커 Windows 설치 및 기초 사용법

옌炎 2022. 8. 1. 19:18
728x90

도커 기초 강의와 기타 자료를 찾으면서 작성했습니다.

1. 왜 컨테이너가 필요한가

  • 대규모 프로젝트 진행 시 사용
  • 충돌을 방지 (개발팀: 새로운 것을 만들기 <-> 운영팀: 안정적인 인프라)
  • 기존의 VM과 Container의 다른 점Container는 리눅스 기반, 리눅스의 네임스페이스(파일이나 네트워크 인터페이스를 가상화하여 자기만의 것을 가짐)를 사용

 

컨테이너의 장점

  1. 성능상의 이점 – OS를 새로 설치할 필요가 없으므로 성능 저하가 거의 없다.
  2. 빠른 운영환경 구성 – 미리 사용자들이 만들어 둔 이미지를 다운받아 실행만 하면 해당 환경을 구축할 수 있다.
  3. 관리의 용이 – 이미지 만을 관리 배포하면 되므로 운영환경의 관리가 용이하다.
  4. 확장성 – 한번 만들어낸 이미지를 이용하여 여러 서버들에서 사용가능하다.

(출처: https://hwanine.github.io/web/Container-vs-VM/)

 

개발 환경 측면

출처: Amazon AWS

  • Monolith → compile 시간이 오래 걸리고 전체 정기점검도 필요
  • Microservices → 서비스 별로 교체 가능, 업데이트 가능, 서비스가 한정된 자원 안에서 잘 돌아감, 개발 프로세스 단순화가 가능

 

2. 도커 소개

  • 컨테이너 기술을 지원하는 다양한 프로젝트 중에 하나
  • 다양한 운영체제에서 사용가능(리눅스 권장)
  • 애플리케이션에 국한되지 않고 의존성 및 파일 시스템까지 패키징하여 빌드, 배포, 실행을 단순

 

다양한 클라우드 서비스 모델과 같이 사용 가능

  • 이미지: 필요한 프로그램과 라이브러리, 소스를 설치한 뒤 만든 하나의 파일
  • 컨테이너: 이미지를 격리하여 독립된 공간에서 실행한 가상 환경

 

컨테이너의 문제 해결

  • 동일 시스템에서 실행하는 소프트웨어의 컴포넌트 충돌이나 종속성에서 벗어남
  • VM과 달리 하드웨어를 구현하지 않아 빠른 실행 가능
  • VM의 하이퍼바이저 부분이 필요없어 공간 활용 가능

 

컨테이너 격리 기술

  • 리눅스의 네임스페이스: 각 프로세스가 파일 시스템 마운트, 네트워크, 유저(uid), 호스트 네임(uts) 등에 대해서 시스템에서 독립적인 뷰를 제공
  • 리눅스의 컨트롤 그룹: 프로세스로 소비할 수 있는 리소스 양(CPU, 메모리, I/O, 네트워크 대역대, device 노드 등)을 제한

 

도커의 한계

  • 서비스가 커질 수록 관리해야 하는 컨테이너의 양이 급격히 증가
  • scale-in(생성된 인스턴스 내리기), scale-out(인스턴스를 이미지 파일에 기반하여 지정된 개수만큼 생성)이 어려움

 

도커 설치

  • [터미널 설치] Microsoft Store -> Windows terminal 설치 -> terminal 실행
    • dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    • dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
  • [Ubuntu 설치] Microsoft Store -> Ubuntu 설치 -> Ubuntu 실행 -> user name / password 설정
    • WSL2 리눅스 커널 업데이트
    • 터미널에 wsl –l –v 를 입력하여 버전 확인
      • (버전1인 경우) wsl --set-version Ubuntu 2
      • (디폴트 값 변경) wsl --set-default-version 2
  • [도커 설치] 도커 데스크탑 다운로드 및 설치
    • Docker 실행 -> Setting -> General에서 Use the WSL2 based engine 옵션 체크
    • Resource -> WSL integration 페이지에서 Ubuntu 버전 확인
    • Ubuntu셸 상에서 docker ps 명령어 입력 아래와 같은 화면이 뜬다면 정상적으로 설치 및 환경 설정 완료된 것

 

3.도커 환경 구축

출처:  http://docker-saigon.github.io/post/Docker-Internals/

1) 이미지 검색 docker search

이미지 검색 방법

(1) Docker Hub 웹 서칭

(2) docker search 명령어

docker search [옵션] <검색어>

※ 옵션

-automated=false : Automated Build만 표시

-no-trunc=false : 모든 결과를 다 표시

-s[--stars=n] : star 수가 n개 이상인 결과만 표시

 

2) 이미지 다운로드 docker pull

docker pull [옵션] <이미지명> [:태그명]

※ 옵션

태그를 생략하면 가장 최신 버전(latest)를 자동으로 내려받는다.

 

3) 이미지 목록 보기 docker images

docker pull [옵션] <이미지명> [:태그명]

※ 옵션

-a, --all : 모든 이미지 표시

--no-trunc : 모든 결과 표시

-q, --quiet : 이미지 ID 만 표시

 

4) 컨테이너 실행 docker run

docker run [옵션] <이미지명>[:태그명] [값]
docker run (실행) p (서버 포트):(도커 포트) v (서버경로):(도커 경로) 도커이미지

※ 옵션

--name : 컨테이너명을 지정한다.

 

5) 컨테이너 중지/삭제 docker stop/rm

  • 중지:실행 중인 컨테이너 list를 확인(docker ps)하여 중지하고 싶은 container_id 찾기
docker stop {container_id}
  • 삭제: 중지된 컨테이너 list까지 확인(docker ps -a)하여 삭제하고 싶은 container_id 찾기
docker rm {container_id}

 

6) 주의 사항

  • Container PORT 겹치지 않도록 주의

 

도커의 이미지를 생성하여 도커파일을 구성하거나 기타 고급 활용은 추후에 업로드하겠습니다.

728x90

'Programing 프로그래밍' 카테고리의 다른 글

Amazon AWS 환불 신청기  (0) 2022.08.05
Oracle 데이터베이스 기초 정리  (0) 2022.06.22
소프트웨어공학 간단 정리  (0) 2022.06.22