Image vs Container

서재환·2022년 2월 11일
0

Docker

목록 보기
4/12

Image vs Container

Image file

설치 파일, 파일 시스템, 스냅샷 등을 기록하여 그 상태를 저장한 아카이브 파일이다.

Docker Image

도커 이미지도 위와 유사하다. 필요한 프로그램, 소스코드, 라이브러리, 디펜던시 등 앱을 
설치한 뒤 만든 하나의 파일 이미지이다. 여러 환경을 구축한 후 그 상태 값을 카피한 설치
파일이기에 해당 환경을 나중에 또 활용하고 싶을 때 요긴하다.
 
이러한 특성으로 개발자가 동일하고 안정된 환경에서 앱을 테스트해 볼 수 있다.

Container

컨테이너는 독립된 공간에서 파일을 실행시킬 수 있게 해주는 가상환경 요소이다. 개발자가 개발하고자
하는 서로 다른 서비스가 서로 다른 환경을 요구할 때 컨테이너는 독립적인 가상 환경에서 실행하기 때
문에 각각 앱을 실행할 수 있다.
그럼 여기서 프로그램은 파일 시스템에 존재하는 실행파일이라면 프로세스는 실행 중인 
프로그램입니다. 프로그램을 실행시키는 실행 주체를 프로세스 또는 인스턴스

크롬이라는 프로그램을 실행시켜 안에서 여러개의 창을 킬 수 있는 이유는 바로 여러개
의 프로세스가 있기 때문입니다.

Docker Registry

설치할 수 있는 이미지를 모아둔 곳을 레지스트리라고 한다. 사용자는 레지스트리에서 필요한 이미지를
찾아 다운 받으면 된다.

https://hub.docker.com 으로 접속하면 레지스트리에 있는 이미지를 확인할 수 있다. 경로 없이
이름만 있을 경우 공식 이미지 파일이고 '/' 가 있는 경우 일반 사용자가 올린 이미지이다.

Foreground vs Background

Foreground

사용자가 상호작용하는 응용프로그램
Background

대개 사용자에게 보이지 않는 컴퓨터의 연산 활동이다. 

Port Forwarding

포트 포워딩이란 사설 네트워크망에 있는 컴퓨터를 사설 또는 공용 네트워크에 있는 컴퓨터와 연결
하는 것을 일컫는다. 이를 통해 접속하고자 하는 컴퓨터에 접속할 수 있게 된다.

port forwarding 개념 참고

Docker Basic Commands

docker container run --publish 80:80 nginx 

1. Downloaded image 'nginx' from Docker Hub
2. Started a new container from that image
3. Open port 80 on the host IP
4. Routes that traffic to the container IP, port 80
docker container run --publish 80:80 --detach nginx

>>> run application on the background
docker container ls -a

>>> show all images which were created
docker rm -f a, b ... z

>>> delete all the containers which user created

What really happens in 'docker container run'

1. Looks for that image locally in image cache, doesn't find anything

2. Then looks in remote image repository (defaults to Docker Hub)
   Docker Hub는 image와 관련된 모든 것을 처리한다. 

3. Download the latest version (nginx:latest by default)

4. Creates new container based on that image and prepares to start

5. Gives it a virtual IP on a private network inside docker engine

6. Opens up port 80 on host and forwards to port 80 in container

7. Starts container by using the CMD in th image Dockerfile

0개의 댓글