[infra] docker 의 기초 개념

orca·2022년 12월 23일

CS

목록 보기
37/46

Docker provides the ability to package and run an application in a loosely isolated environment called a container.
Docker는 컨테이너 환경에서 애플리케이션을 패키징하고 실행할 수 있는 기능을 제공합니다.

Virtualization

  • 컨테이너는 Virtialization 기술의 일종임! 자세히 알아보자
  • Virtialization : 하드웨어 기능을 시뮬레이트하는 소프트웨어를 사용하여 가상 시스템을 생성하는 것 ex> OS-level Virtialization, Host Virtialization

VirtualMachine vs Container

Container

  • OS-level Virtialization
  • Base OS의 자원을 나눠씀
  • aleady boot up : 자원을 나눠쓰기 때문에 순식간에 초기화됨

VM

  • Host Virtialization
  • OS above OS : Base OS 위에 Guest OS를 별도로 설치함 > 오버헤드가 크다
  • needs time to boot up : Guest OS의 부팅 과정이 필요함

Docker

  • 도커는 애플리케이션 개발과 실행을 위한 컨테이너 기술 기반 오픈 소스 플랫폼
  • 이미지를 빌딩 : 실행에 필요한 패키지, 라이브러리, 미들웨어, OS 등의 설정을 이미지로서 빌딩함
  • 높은 이식성
    ex> 온프레미스 서버에서 사용하던 도커 이미지를 쉽게 aws EC2에 적용 가능
  • Various Components
    ex> docker compose, docker engine, docker registry, docker machine, docker swarm

컨테이너를 만들어보자

베이직한 컨테이너 만들어보기

docker container create ubuntu:latest

내 로컬에 ubuntu:latest 이미지가 없기 때문에 pulling 하는 과정이 포함됨

docker ps -a 를 통해 결과 확인

CONTANER ID : 컨테이너의 식별자
IMAGE : 컨테이너의 베이스 이미지
COMMAND : 컨테이너가 현재 실행중인 명령
CREATED : 언제 만들어졌는지
STATUS : 어떤 상태인지
PORTS : Base OS와 도커 컨테이너 맵핑
ex> 0.0.0.0:8080->80/tcp : 외부 기기에서 Base 0S에 8080으로 접근하면 이 컨테이너 서비스에 연결됨
NAMES : 컨테이너의 이름! 따로 설정하지 않으면 디폴트로 형용사_사람이름으로 만들어준다고 한다

컨테이너에 직접 이름을 붙여보자

docker container create --name mylinux ubuntu:latest
docker ps -a

NAMES가 mylinux로 설정되어 컨테이너가 생성됨

컨테이너를 띄워보자

docker container start mylinux
docker ps -a

STATUS가 Created에서 Exited (0) * seconds ago 로 변경됨
컨테이너가 명령을 다 실행하고 종료되었다는 의미

좀 더 직관적으로 살펴보기 위해 터미널과 interaction 조건 추가해서 만들어봄
docker container create --name mylinux -it ubuntu:latest
docker container start -i mylinux
-i : 키보드 입력을 받겠다~
-t : 터미널을 쓰겠다

그 상태에서 다른 터미널 열어서
docker ps -a

STATUS가 Up 4 minutes

echo "test" > test.txt
ls

test.txt가 잘 생성됨!

exit
해당 터미널에서 나감

STATUS가 Up Exited (0) * seconds ago 로 다시 바뀜!

컨테이너 재실행

docker container start -i mylinux

동일한 root id > 동일한 환경에 재접속함

그 상태에서 다른 터미널 열어서
docker container stop mylinux

명령어가 먹히자마자 컨테이너에 접속된 터미널은 종료됨

아예 삭제하고 create를 다시 해보자
docker container rm mylinux

docker container create --name mylinux -it ubuntu:latest
docker container start -i mylinux
ls

root id와 test.txt가 없는 것으로 보아 아예 다른 컨테이너가 만들어졌다

컨테이너가 실행될 때 스냅샷이 만들어지고, 컨테이너가 삭제되면 해당 스냅샷도 삭제된다

docker container run

docker container run은 create와 start를 한번에 해주는 명령
docker container run --name mylinux -it ubuntu:latest
create + start 한 결과와 완전히 동일함

0개의 댓글