기존 서버에서 프로그램이 실행되던 방식

- 하드웨어가 필요하고, 하드웨어에서 실행할 소프트웨어가 필요하다.
- 하지만 소프트웨어를 실행하기 위해서는 하드웨어 사용에 필수적인 OS가 필요하고,
일반적으로 소프트웨어는 특정 패키지나 라이브러리의 의존성을 갖고있음
- 또한 실행을 위해 JVM 과 같은 런타임이 필요할 수도 있음
=> 즉, 서버에서 프로그램을 실행하기 위해서는 OS, 설정에 필요한 언어, 라이브러리 등의 설정 구성,
실행시킬 프로그램이 필요
이미지란?
- 파일 시스템이 특정 시점을 저장해둔 압축 파일
- 제작 단계에서 소프트웨어뿐만 아니라, 소프트웨어가 실행하기 위해 필요한 모든 요소를 미리 압축해 놓은 파일
- 즉, OS, 설정에 필요한 구성요소, 실행시킬 프로그램이 포함되어 있다.

- 위 docker run nginx 명령을 통해, 해당 nginx가 압축된 이미지를 다운받고 격리된 공간에 컨테이너를 실행할 수 있다.
- 백업 상태를 이미지로 저장해두면 언제든지 해당 프로그램 실행 가능
- 컨테이너의 이미지는 스냅샷이나 압축파일보다 사이즈가 아주 작음
- 따라서 인터넷을 통한 저장 및 공유가 편리함
- 레지스트리를 통해 이미지를 다운받고 공유함
애플리케이션 서버와 이미지

- 도커 사용 목적 : 컨테이너 내에서 웹서버나 웹 애플리케이션과 같은 소프트웨어를 운영을 위해 사용
- 컨테이너는 이미지를 통해 실행할 수 있으며, 이미지는 특정 소프트웨어를 실행하기 위해 OS, 의존 요소와 같은 설정에 필요한 구성요소, 실행시킬 소프트웨어가 포함되어 있는 파일 시스템의 상태를 저장해놓은 압축 파일이다.
- 해당 이미지를 실행하면 Host Os 내에서 완전히 격리된 공간인 컨테이너가 만들어지고, 이 안에서 소프트웨어가 실행된다.
프로그램과 프로세스의 차이점
1) 프로그램 : CPU나 메모리같은 리소스를 사용하지 않고 스토리지의 디스크 공간만을 차지한 상태
2) 프로세스 : CPU나 메모리같은 리소스를 사용하면서 스토리지의 디스크 공간도 차지한 상태
- 즉, 프로그램이 실행되어 컴퓨터 리소스를 사용하게 되면 프로세스가 된다.
- 프로그램 한 개가 여러개의 프로세스로 실행이 가능하다.
이미지와 컨테이너의 차이점
1) 이미지 : 프로그램이 실행되기 위한 환경이 모두 포함되어 있는 파일 시스템으로 압축 파일이
Host 머신의 디스크 공간을차지하면서, CPU와 메모리같은 리소스를 사용하지 않는 상태
2) 컨테이너 : 이미지를 실행한 것으로 CPU와 메모리같은 리소스를 사용하면서 디스크 공간을 차지한 상태
- 프로그램과 프로세스와 비슷한 형태
- 하나의 이미지로 여러 컨테이너를 실행 가능
- 프로세스와의 차이점은 컨테이너는 가상화 기술이기 때문에 이미지를 컨테이너로 실행할 때, 격리된 공간이 만들어진다.
- 즉, 이미지를 컨테이너로 실행하면, 이미지 내부에 저장된 모든 요소들이 격리된 공간으로 만든 다음, 격리된 공간 안에서 프로그램을 프로세스로 실행시키는 단계를 거친다.
도커 명령어
도커 명령어는 Docker가 실행된 상태에서만 동작하므로, Docker를 실행한 후 명령해야한다.
1. 특정 이미지명을 가진 이미지 조회
docker image ls (이미지명)

- 이미지명을 입력하지 않으면 전체를 조회한다.
- REPOSITORY : 이미지의 이름. TAG : 이미지의 버전, IMAGE ID : 이미지의 고유 아이디
2. 가지고 있는 이미지를 백그라운드로 실행하기
docker run -d --name {컨테이너명} 이미지명
1) -d : 백그라운드로 실행
2) --name {컨테이너명} : 컨테이너의 이름 지정
- 도커의 이름은 시스템 내에서 중복될 수 없다.


- Docker Desktop에도 컨테이너들이 생성됨을 확인할 수 있다.
-
3. 실행 중인 컨테이너 리스트 조회
docker ps
- ps는 process의 줄임말

- 모두 동일한 nginx 이미지를 실행시킨 컨테이너지만,, CONTAINER ID가 모두 다름을 알 수 있다.
4. 실행 중인 컨테이너 삭제
docker rm -f
1) -f : 실행중인 컨테이너 삭제를 위한 옵션(사용하지 않으면 실행 중인 컨테이너 삭제가 불가하다.)

- 한 번의 명령으로 여러 개의 컨테이너를 삭제할 수도 있다.
- 삭제시 프롬프트에 삭제된 컨테이너의 이름이 출력된다.

- Docker Desktop에서도 컨테이너가 삭제된 것을 확인할 수 있다.
[이 블로그에 정리된 Docker 관련 자료는 인프런 데브위키님의 강의 내용을 바탕으로 작성되었습니다.]
'Docker > SECTION_2 이미지와 컨테이너' 카테고리의 다른 글
이미지의 메타데이터 (0) | 2024.07.24 |
---|
기존 서버에서 프로그램이 실행되던 방식

- 하드웨어가 필요하고, 하드웨어에서 실행할 소프트웨어가 필요하다.
- 하지만 소프트웨어를 실행하기 위해서는 하드웨어 사용에 필수적인 OS가 필요하고,
일반적으로 소프트웨어는 특정 패키지나 라이브러리의 의존성을 갖고있음
- 또한 실행을 위해 JVM 과 같은 런타임이 필요할 수도 있음
=> 즉, 서버에서 프로그램을 실행하기 위해서는 OS, 설정에 필요한 언어, 라이브러리 등의 설정 구성,
실행시킬 프로그램이 필요
이미지란?
- 파일 시스템이 특정 시점을 저장해둔 압축 파일
- 제작 단계에서 소프트웨어뿐만 아니라, 소프트웨어가 실행하기 위해 필요한 모든 요소를 미리 압축해 놓은 파일
- 즉, OS, 설정에 필요한 구성요소, 실행시킬 프로그램이 포함되어 있다.

- 위 docker run nginx 명령을 통해, 해당 nginx가 압축된 이미지를 다운받고 격리된 공간에 컨테이너를 실행할 수 있다.
- 백업 상태를 이미지로 저장해두면 언제든지 해당 프로그램 실행 가능
- 컨테이너의 이미지는 스냅샷이나 압축파일보다 사이즈가 아주 작음
- 따라서 인터넷을 통한 저장 및 공유가 편리함
- 레지스트리를 통해 이미지를 다운받고 공유함
애플리케이션 서버와 이미지

- 도커 사용 목적 : 컨테이너 내에서 웹서버나 웹 애플리케이션과 같은 소프트웨어를 운영을 위해 사용
- 컨테이너는 이미지를 통해 실행할 수 있으며, 이미지는 특정 소프트웨어를 실행하기 위해 OS, 의존 요소와 같은 설정에 필요한 구성요소, 실행시킬 소프트웨어가 포함되어 있는 파일 시스템의 상태를 저장해놓은 압축 파일이다.
- 해당 이미지를 실행하면 Host Os 내에서 완전히 격리된 공간인 컨테이너가 만들어지고, 이 안에서 소프트웨어가 실행된다.
프로그램과 프로세스의 차이점
1) 프로그램 : CPU나 메모리같은 리소스를 사용하지 않고 스토리지의 디스크 공간만을 차지한 상태
2) 프로세스 : CPU나 메모리같은 리소스를 사용하면서 스토리지의 디스크 공간도 차지한 상태
- 즉, 프로그램이 실행되어 컴퓨터 리소스를 사용하게 되면 프로세스가 된다.
- 프로그램 한 개가 여러개의 프로세스로 실행이 가능하다.
이미지와 컨테이너의 차이점
1) 이미지 : 프로그램이 실행되기 위한 환경이 모두 포함되어 있는 파일 시스템으로 압축 파일이
Host 머신의 디스크 공간을차지하면서, CPU와 메모리같은 리소스를 사용하지 않는 상태
2) 컨테이너 : 이미지를 실행한 것으로 CPU와 메모리같은 리소스를 사용하면서 디스크 공간을 차지한 상태
- 프로그램과 프로세스와 비슷한 형태
- 하나의 이미지로 여러 컨테이너를 실행 가능
- 프로세스와의 차이점은 컨테이너는 가상화 기술이기 때문에 이미지를 컨테이너로 실행할 때, 격리된 공간이 만들어진다.
- 즉, 이미지를 컨테이너로 실행하면, 이미지 내부에 저장된 모든 요소들이 격리된 공간으로 만든 다음, 격리된 공간 안에서 프로그램을 프로세스로 실행시키는 단계를 거친다.
도커 명령어
도커 명령어는 Docker가 실행된 상태에서만 동작하므로, Docker를 실행한 후 명령해야한다.
1. 특정 이미지명을 가진 이미지 조회
docker image ls (이미지명)

- 이미지명을 입력하지 않으면 전체를 조회한다.
- REPOSITORY : 이미지의 이름. TAG : 이미지의 버전, IMAGE ID : 이미지의 고유 아이디
2. 가지고 있는 이미지를 백그라운드로 실행하기
docker run -d --name {컨테이너명} 이미지명
1) -d : 백그라운드로 실행
2) --name {컨테이너명} : 컨테이너의 이름 지정
- 도커의 이름은 시스템 내에서 중복될 수 없다.


- Docker Desktop에도 컨테이너들이 생성됨을 확인할 수 있다.
-
3. 실행 중인 컨테이너 리스트 조회
docker ps
- ps는 process의 줄임말

- 모두 동일한 nginx 이미지를 실행시킨 컨테이너지만,, CONTAINER ID가 모두 다름을 알 수 있다.
4. 실행 중인 컨테이너 삭제
docker rm -f
1) -f : 실행중인 컨테이너 삭제를 위한 옵션(사용하지 않으면 실행 중인 컨테이너 삭제가 불가하다.)

- 한 번의 명령으로 여러 개의 컨테이너를 삭제할 수도 있다.
- 삭제시 프롬프트에 삭제된 컨테이너의 이름이 출력된다.

- Docker Desktop에서도 컨테이너가 삭제된 것을 확인할 수 있다.
[이 블로그에 정리된 Docker 관련 자료는 인프런 데브위키님의 강의 내용을 바탕으로 작성되었습니다.]
'Docker > SECTION_2 이미지와 컨테이너' 카테고리의 다른 글
이미지의 메타데이터 (0) | 2024.07.24 |
---|