Docker

박윤택·2022년 8월 4일
0

Docker

목록 보기
1/2

장점

  1. 개발과 배포 환경을 일치
  2. 쉬운 수평 확장
  3. 각 서버에 쉽게 새로운 내용을 배포

특징

컨테이너에 의해 격리되어 개별적으로 소유할 수 있는 자원

  • 프로세스
  • 네트워크
  • 파일 시스템
  • 리눅스 커널

용어

  • 컨테이너 : 도커에 의해 관리/제공되는 애플리케이션 단위
  • 이미지 : 도커 컨테이너를 생성하는 데 사용되는 템플릿
  • 레지스트리 : 도커 이미지를 저장하고 배포/공유하는 데 사용
  • 레포지토리 : 레지스트리 내에 도커이미지가 저장되는 공간
  • 태그 : 이미지를 설명하는 버전 정보를 주로 입력

docker/whalesay:latest
Docker Hub라는 레지스트리에서 docker라는 유저가 등록한 whalesay 이미지 혹은 레포지토리에서 latest 태그를 가진 이미지


명령어

  • docker hub에서 이미지 불러오기
    docker image pull <user>/<이미지>:<태그>

  • 이미지 목록 확인
    docker images

  • docker container에 파일 복사
    docker container cp <로컬 경로> <컨테이너 이름>:<컨테이너 경로>

  • container background에서 실행
    docker container run -- name <컨테이너_이름> -d -p <로컬 포트>:<컨테이너 포트> <이미지 이름>

  • 현재 경로에 있는 Dockerfile 빌드
    docker build --tag <이미지 이름>:<태그> .

  • docker-compose.yml 파일 작성

version: '<버전>'

services:
	<서비스 이름>:
    	iamge: <이미지 이름>
        restart: '<no/on-failure/always/unless-stopped>'
        ports:
        	- '<로컬 포트>:<컨테이너 포트>'
        container_name: <컨테이너 이름>
        volumes:
        	- '<로컬 경로>:<컨테이너 경로>'
        environment:
        	<환경변수 이름>: <환경변수 >

Container와 VM 비교

[좌(VM), 우(Container)]

왼쪽의 VM의 구성 요소에 OS가 존재하는데 비해, 오른쪽의 도커 컨테이너에는 OS를 포함하고 있지 않다. 각 컨테이너는 호스트 OS의 커널(Kernel, 시스템 콜과 같이 OS의 핵심 기능을 구현한 프로그램)을 공유한다. 윈도우나 macOS는 근본적으로 리눅스 커널을 쓰고 있지 않으므로, 해당 운영체제의 경우 리눅스 커널을 VM의 형태로 실행시키는 하이퍼바이저(Hyper-V, LinuxKit, HyperKit)를 자체적으로 구동한다.


0개의 댓글