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 가상화 설정하기
- 컴퓨터를 다시 시작한 후에, DELETE 키를 눌러 BIOS 펌웨어 설정 화면이 들어간다.
- Advanced - OC - Advanced CPU Configuration를 클릭한다.
- SVM Mode를 Enabled로 바꾼다.(검색 가능)
- Docker Desktop 실행
- 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
'Sesac 웹 풀스택[새싹X코딩온]' 카테고리의 다른 글
[Docker] Docker Compose 기본 개념 및 node, react(nginx) 연결 (0) | 2023.03.21 |
---|---|
[Docker] Dockerfile, Dockerfile node와 연결, nginx(react)와 연결 (0) | 2023.03.21 |
ubuntu에 bind-address 설정하기 (0) | 2023.02.12 |
Node.js 프로젝트 서버 올리고 FileZilla에 옮기기 (0) | 2022.12.31 |
서버 구축해보기(AWS EC2, PuTTY, FileZila) (0) | 2022.11.16 |