본문 바로가기
Sesac 웹 풀스택[새싹X코딩온]

[Docker] 기본 개념 및 설치(오류), 주요 명령어(docker run)

by 이쟝 2023. 3. 21.

Container

- Linux 기반의 기술 중 하나로 필요한 라이브러리와 애플리케이션을 모아 별도의 서버처럼 구성한 것
- 네트워크 설정, 환경 변수 등의 시스템 자원을 독립적으로 소유하고 있다.

hypervisor

- 호스트 컴퓨터에서 다수의 운영 체제(operating system)를 동시에 실행하기 위한 논리적 플랫폼
- 하나 이상의 가상머신(virtual machine manager[VMM])을 실행하는 컴퓨터가 호스트(Host)가 되고 각 가상머신들은 게스트(Guest)가 된다.

VM 가상화 플랫폼(Virtual Machines)

  • Hypervisor라는 것을 통해 컴퓨터가 가지고 있는 리소스들에 대해 VM 별로 배분하고, 각 VM이 독립적인 OS를 갖고 동작
  • 확장성 낮음 : 독립적인 플랫폼을 하나 증가시킬 때마다 OS를 계속 만들어야 한다.
  • 메모리나 자원이 유동적으로 관리되는 것이 아닌 처음부터 정해놓고 실행하기 때문에 비효율적

Containers 

  • 하나의 Host OS 위에서 각각의 독립적인 프로그램처럼 관리되고 실행된다.
  • 확장성 높고, 속도 높음 : 불필요한 OS 만드는 작업이나 인프라를 독립적으로 나눌 필요 없이 실행할 수 있다.
  • VM 보다 비교적 빠르게 세팅할 수 있고 VM과 비교해 크기가 작기 때문에 메모리를 덜 소모한다.
  • OS를 설치할 필요 없이 애플리케이션(파일)이랑 라이브러리만 있으면 됨

Docker

- Go 언어로 작성된 Linux 컨테이너 기반으로 하는 오픈소스 가상화 플랫폼
- 애플리케이션 실행 환경을 코드로 작성할 수 있고, 하나의 Host OS를 공유해 사용할 수 있다.
- Container를 관리 하는 것 => Docker

Docker Daemon

  • docker 컨테이너 관리자
  • Docker API 요청 수신, Image, Container, 네트워크와 같은 Docker 객체 및 Docker 서비스를 관리

Docker Client

  • Docker 사용자가 Docker와 상호작용하기 위한 방법으로 Docker 명령어를 통해 Docker Daemon과 통신
  • docker run과 같은 명령어를 이용해 Docker를 실행할 수 있다.
  • docker pull docker daemon이 pull이라는 명령어를 받아 Registry에서 Images(설정 파일)을 받는다.

Docker Registry

  • Docker 이미지 저장
  • Docker Hub이라는 공용 Registry와 개인 private한 Registry에서 Docker 이미지를 관리
  • 일반적으로 Docker Hub이라는 공용 Registry에서 실행

Docker Image

  • 이미지 = 실행파일
  • 컨테이너 실행에 필요한 파일과 설정값 등을 포함하고 있는 것 ⇒ Immutable(불변적)
  • 이미지는 Docker Hub에 저장되고, 그곳에서 다운받아 사용 가능

Docker 설치

  • 주로 window에서 설치가 날 수 있다.

1. 설치 후 나는 오류(1)

 

더보기

PowerShell로 가서 wsl --update 

2. 설치 후 나는 오류(2)

  • 주로 window에서 난다. 
  • 꼭 오류창을 띄워놓은 채 진행할 것!

더보기
  • PowerShell 관리자 권한으로 실행해서 
  • 아래 명령어들 순서대로 입력
# dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
  • x64머신용 최신 WSL2 Linux 커널 업데이트 패키지 다운로드, 설치 진행

https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

  • 다시 오류창으로 돌아가 Restart 선택

3. 설치 후 나는 오류(2)

  • case 1. Hyper-V가 완전히 비활성화되었거나 설치되지 않은 경우
더보기
  • PowerShell 관리자 권한으로 실행하기
  • 아래 명령어 입력하기
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
  • 설치가 완료되면 컴퓨터를 다시 시작하
  • 아래와 같은 오류가 뜨면, BIOS 펌웨어에서 CPU 가상화 설정하기
  • case 2. Hyper-V 기능이 이미 사용 가능하지만 작동하지 않은 경우
더보기
  • PowerShell 관리자 권한으로 실행하기
  • 아래 명령어 입력하기
bcdedit
  • hypervisorlaunchtype의 상태가 auto인지 off인지 확인하고, off라면 아래의 명령어로 상태를 auto로 바꿔준다.
bcdedit /set hypervisorlaunchtype auto

 

1. Docker Hub에 가입하기

2. Docker Desktop에서 Login 진행

3. Docker 설치 확인 

  • #docker images 명령어로 확인

  • Docker 실행 해서 창 왼쪽 하단에 초록색이어야 실행 중!(빨간색 오류, 노란색 켜지는 중)

4. Docker 실행 확인

  • window Power shell에서 #wsl -l -v


Docker Image Pull 

  • docker 데스크탑에서 이미지가 저장된 것을 볼 수 있다.

 


Docker 주요 명령어

- Docker run : Image로 Container를 생성하는 명령어
- docker run <옵션> <이미지> <명령> <매개변수>

[docker 옵션]

  • -d : 컨테이너를 일반 프로세스가 아닌 데몬프로세스로 실행해 프로세스가 끝나도 유지(컨테이너 백그라운드 실행)
  • -p : 호스트와 컨테이너의 포트를 연결 (포트포원딩) <호스트 포트> : <컨테이너 포트>
  • --rm : 프로세스 종료시 컨테이너 자동 제거
  • --name : 컨테이너의 이름을 설정할 때 사용하는 옵션
#임의의 이름으로 컨테이너 생성
docker run 이미지이름

#컨테이너를 생성할 때, 이름을 지정해 생성
docker run —name 컨테이너이름 이미지 이름 

#컨테이너 실행
docker start 컨테이너이름(or 컨테이너 ID)

#컨테이너 중지
docker stop 컨테이너이름(or 컨테이너 ID)

#docker 이미지 삭제 명령어
docker rmi 이미지이름

#docker 컨테이너 삭제 명령어
docker rm 컨테이너이름(컨테이너 ID)

#현재 있는 모든 이미지 출력
docker images

#현재 실행되고 있는 모든 컨테이너 출력 / 모든 컨테이너 출력
docker ps / docker ps -a