Docker에서 컨테이너와 이미지의 차이점은 무엇입니까?



Answers

이미지는 라이브 컨테이너의 고정 된 불변 스냅 샷입니다. 컨테이너는 일부 이미지의 인스턴스를 실행 (또는 중지)합니다.

'우분투'라는 기본 이미지로 시작하십시오. 우분투 이미지에서 bash를 대화식으로 실행하고 파일을 만듭니다. 대화 형 bash 쉘을 제공하기 위해 -i-t 플래그를 사용합니다.

$ docker run -i -t ubuntu  /bin/bash
root@48cff2e9be75:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@48cff2e9be75:/# cat > foo
This is a really important file!!!!
root@48cff2e9be75:/# exit

이미지를 종료하고 다시 시작할 때 파일이 계속 붙어있을 것으로 예상하지 마십시오. 이전에 시작한 것과 완전히 동일한 정의 된 상태에서 다시 시작합니다. 중단 한 부분이 아닙니다.

$ docker run -i -t ubuntu  /bin/bash
root@abf181be4379:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@abf181be4379:/# exit

그러나 더 이상 실행되지 않는 컨테이너는 상태를 가지며 이미지에 저장 (커밋) 될 수 있습니다.

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                CREATED              STATUS                          PORTS                      NAMES
abf181be4379        ubuntu:14.04        /bin/bash              17 seconds ago       Exited (0) 12 seconds ago                                  elegant_ardinghelli    
48cff2e9be75        ubuntu:14.04        /bin/bash              About a minute ago   Exited (0) 50 seconds ago                                  determined_pare        
...

컨테이너 ID 48cff2e9be75에서 파일을 생성 한 이미지를 만듭니다.

$ docker commit 48cff2e9be75 ubuntu-foo
d0e4ae9a911d0243e95556e229c8e0873b623eeed4c7816268db090dfdd149c2

이제 우리는 정말로 중요한 파일을 가지고 새로운 이미지를 갖게되었습니다 :

$ docker run ubuntu-foo /bin/cat foo
This is a really important file!!!!

명령 docker images 사용해보십시오. 새 이미지 ubuntu-foo 가 우리가 시작한 ubuntu 표준 이미지와 함께 나열되어야합니다.

Question

Docker에서 컨테이너와 이미지의 차이점은 무엇입니까? Docker 시작하기 자습서 에서는이 두 용어가 모두 사용되지만 차이점을 이해하지 못합니다.

아무도 약간의 빛을 비출 수 있습니까?




DockerFile - (빌드) -> DockerImage - (실행) -> DockerContainer

DockerFile 은 개발자 또는 개발자가 코드를 작성하는 것입니다 (예 - 설치).

Docker Image 도커 파일을 만들면 이미지 가 나타납니다.

Docker 컨테이너 는 Docker 이미지를 실행할 때 얻을 수 있습니다.

Docker Image를 도커 허브에서 가져 와서 컨테이너로 가져올 수 있습니다.




그것은 꽤 똑바로입니다.

(더 깊은 이해를 위해 this. 읽으십시오 this. )

이미지 -

컨테이너를 만드는 데 사용되는 응용 프로그램의 파일 시스템 및 구성입니다. 자세한 세부 사항..

컨테이너 -

이것들은 Docker 이미지의 실행중인 인스턴스입니다. 컨테이너는 실제 응용 프로그램을 실행합니다. 컨테이너는 응용 프로그램과 모든 종속성을 포함합니다. 커널을 다른 컨테이너와 공유하고 호스트 OS의 사용자 공간에서 격리 된 프로세스로 실행됩니다. 자세한 세부 사항..

주의해야 할 기타 중요 용어 :

도커 데몬 -

건물을 관리하고 Docker 컨테이너를 실행 및 배포하는 호스트에서 실행되는 백그라운드 서비스.

도커 클라이언트 -

사용자가 Docker 데몬과 상호 작용할 수있는 명령 줄 도구.

도커 스토어 -

저장소는 무엇보다도 Docker 이미지의 레지스트리입니다. 레지스트리를 사용 가능한 모든 Docker 이미지의 디렉토리로 생각할 수 있습니다.

그림은 천 단어의 가치가있다.

개요:

  • 이미지 양식 도커 허브를 당기거나 Dockerfile에서 빌드 => 도커 이미지를 제공합니다 (편집 할 수 없음).
  • 이미지 실행 ( docker run image_name:tag_name ) => 실행중인 이미지 즉 컨테이너를 제공합니다 (편집 가능).



컨테이너는 이미지를 기반으로합니다. 이미지는 dockers run 명령으로 전달되어야합니다. 예 : - 비지 박스 이미지

http://i.stack.imgur.com/eK9dC.png

여기서 우리는 busybox라는 이미지를 지정합니다. docker는이 이미지가 로컬에 없으며 공용 레지스트리에서 가져옵니다. 레지스트리는 도커 클라이언트가 통신하고 이미지를 다운로드 할 수있는 도커 이미지의 카탈로그입니다. 이미지를 가져 오면 dockers는 컨테이너를 시작하고 echo hello world 명령을 실행합니다.




이미지 [좋아하는 VM]

  • 컨테이너를 만드는 데 사용되는 읽기 전용 템플릿
  • 너 또는 다른 Docker 사용자가 작성한
  • Docker 허브 또는 로컬 레지스트리에 저장 됨

컨테이너 [러닝 머신처럼]

  • 고립 된 애플리케이션 플랫폼
  • 애플리케이션을 실행하는 데 필요한 모든 것을 포함합니다.
  • 이미지 기반




Links