✊ 필오의 개발일지
Back to Posts
2022년 2월 13일

도커 개념과 컨테이너

도커 개념과 컨테이너

도커 환경으로 구성된 인프라들을 최근들어 자주 접하게 되고, 프론트 리소스도 도커, 쿠버네티스 환경에서 운영됨에 따라, 프론트 개발자도 이에 대한 지식이 필요하다고 느껴 스터디를 진행합니다. 스터디는 “시작하세요 도커/쿠버네티스” 책으로 진행합니다.

왜 우린 도커를 써야하나요? 

도커? 🐋

리눅스 컨테이너에 여러 기능을 추가하여 → 어플리케이션을 컨테이너로서 좀더 쉽게 사용할 수 있게 만들어진 오픈소스 프로젝트

가상머신과 도커 컨테이너

가상머신 Hypervisor

hypervisor
hypervisor

참고 [네이버클라우드 기술&경험] 가상화 개념 이해하기#1, QEMU vs KVM 

Hypervisor의 단점 👎

커널? 운영 체제(OS)의 주요 구성 요소이며 컴퓨터 하드웨어와 프로세스를 잇는 핵심 인터페이스

VM vs Docker
VM vs Docker

도커 컨테이너 특징

  1. 성능 손실이 없다.
    • 가상화된 공간을 생성하기 위해 리눅스의 자체 기능인 chroot, 네임스페이스 namespace, cgroup을 사용,
    • → 프로세스 단위의 격리 환경을 만든다.
    • → 성능손실이 없다. 가상화된 공간을 사용할때의 성능손실도 없음.
  2. 용량이슈 없음
    • 컨테이너에 필요한 커널은 → 호스트의 커널을 공유해 사용
    • 컨테이너 안에는 어플리케이션을 구동하는 데 필요한 라이브러리 및 실행파일만 존재
    • 이미지로 만들어서 배포시, 시간이 가상머신보다 빠름.

💡 도커를 시작해야하는 이유!

  1. 어플리케이션의 개발과 배포가 편해진다.
  2. 여러 어플리케이션의 독립성과 확장성이 높아짐.

1. 어플리케이션의 개발과 배포가 편해진다.

2. 여러 어플리케이션의 독립성과 확장성이 높아짐.

예) 웹서비스

도커 이미지와 컨테이너

도커 이미지

{{ 저장소 }}/{{ 이미지 이름 }}:{{ 태그 }}

도커 컨테이너

도커 컨테이너 다루기

도커 GUI 클라이언트  사용하며 익히면 굳

  1. 컨테이너 생성: docker run -i -t ubuntu:14.04 (1. ubuntu:14.04 이미지 기준으로 pull, 2. 컨테이너 생성 create, 3. 내부 진입 attach)
  2. 컨테이너 나가기: exit (컨테이너 정지 + 나감), Ctrl+P,Q (그냥 나감 (정지 않함))
  3. 컨테이너 목록확인: docker ps (정지되지 않은 컨테이너만 출력) (-a 정지된 것까지 출력)
  4. 컨테이너 삭제: docker rm(복구 불가능/ 실행중인것은 삭제 불가능), docker container prune(모든 컨테이너 삭제)
  5. 컨테이너 외부에 노출: 가상 IP주소를 할당받으며 (eth0), 외부 노출 가능
    • eth0의 IP포트를 Host의 IP와 포트에 바인딩 해야함
    • docker run ... -p 81:80 ubuntu:14.04
      1. Host IP의 81번 호트로 컨테이너 접근
      1. 컨테이너 80번 포트로 port forwarding (컨테이너의 열려있는 80번 포트로 연결)

기타 cli

docker run -i -t --name joy ubuntu:14.04
docker run -d --name detach_test ubuntu:14.04
docker exec -it {{ 컨테이너 이름 }} /bin/sh
docker pull // 원격에 있는 이미지 풀받기 docker images // 로컬에 다운받은 이미지 확인 docker create // 컨테이너 생성시 사용 (반환값: 컨테이너 고유 ID) dokcer start // 컨테이너 띄우기 docker attach // 컨테이너 내부 들어가기

참고

Previous도커 볼륨, 네트워킹, 로깅
Next2021 회고

Related

© 2026 Felix