About me
home
Portfolio
home

Docker 정리

생성일
2022/10/26
작성자
태그
컨테이너
이미지

도커(Docker)

컨테이너 기반의 오픈소스 가상화 플랫폼
Hypervisor: host 컴퓨터에서 다수의 운영체제를 동시에 실행하기 위한 플랫폼 (예 VMWare, VirtualBox)
→ 하지만 hypervisor는 성능문제가 있엇고, 이를 개선하기 위해 프로세스를 격리하는 방식컨테이너 등장
컨테이너: 하나의 Application 프로세스. 컨테이너는 가상머신이 아니라 도커 엔진 위에서 동작한다. 컨테이너는 격리된 공간에서 프로세스가 동작하는 기술이다. 별도의 Guest OS가 사용되지 않아 성능이 많이 개선되고 메모리 용량도 적게 차지한다.
이미지: 컨테이너 실행에 필요한 파일과 설정값등을 포함하고 있는 것 (안 변함 =immutable). 컨테이너는 이미지를 실행한 상태이고 추가되거나 변하는 값은 컨테이너에 저장된다.
이미지는 여러 개의 layer로 된 binary 파일들로 구성되어 있고, 읽기 전용으로 사용된다.
저장소이름/이미지이름:태그 형태로 구성된다.
도커 데몬 : API 요청을 수신하고 이미지, 컨테이너, 네트워크 및 볼륨과 같은 도커 객체를 관리하는 백그라운드 프로세스이다. dockerd 로도 많이 불린다.
도커 호스트 : 현재 도커 데몬이 동작되고 있는 리눅스 커널이 있는 시스템
도커 레지스토리 : 도커의 이미지들을 저장하는 저장소이다. 사내(개인)에서만 공유하는 저장소인 Private 레지스트리가 있고 누구나 사용할 수 있는 공용 레지스트리 Docker Hub가 있다.
Docker Hub: 도커 이미지를 등록하거나 배포할 수 있는 곳. docker run [이미지이름] 명령어를 입력했을 때, 만약 로컬 서버에 해당 이미지가 없으면 도커 허브(Docker Hub)에서 자동으로 다운로드 받는다.
도커 볼륨 : Host에서의 파일시스템과 도커 컨테이너의 파일시스템을 연결해(디렉토리를 공유) 중요한 데이터를 저장하는 곳. 볼륨은 서로 다른 컨테이너끼리도 공유할 수 있다.
-v {Host의 공유디렉토리}:{컨테이너의 공유 디렉토리}
도커 소켓 (Docker Socket) : 도커데몬과 통신하기 위해 사용되는 Docker API의 진입점이다. 기본적으로 Docker CLI에 의해 도커 커맨드를 실행하기 위해 사용된다.
도커 사용중 아래와 같은 에러가 뜬다면
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/json": dial unix /var/run/docker.sock: connect: permission denied
sudo chmod 777 /var/run/docker.sock 명령어를 입력하면 된다.
도커 소켓 파일은 /var/run/docker.sock 에 위치한다.
이제 도커 데몬과 도커 클라이언트가 소통이 가능해진다.

터미널 명령어 모음

Dockerfile

Docker-Compose

Docker Network

Jupyter Notebook 실행