웹관련프로그래밍(web programming)/Docker(도커)

[도커] Docker Image와 Container란?(이미지, 컨테이너)

끄적끄적아무거나 2024. 3. 25. 08:38
반응형

 

목차

     

     

     

     

     

    Image로 Container생성

     

    도커 이미지 (Docker Image)

     

    • 도커 이미지는 컨테이너를 생성하기 위한 템플릿 역할을 합니다. 이미지는 응용 프로그램을 실행하는 데 필요한 모든 것을 포함하고 있습니다. 예를 들어, 특정 소프트웨어 또는 서비스를 실행하는 데 필요한 코드, 런타임, 라이브러리, 환경 변수, 설정 파일 등이 이미지 안에 포함됩니다.
    • 이미지는 불변의(read-only) 특성을 가지고 있으며, 이미지 자체를 수정하는 대신 새로운 이미지를 생성하여 업데이트합니다.
    • 이미지는 Dockerfile이라는 스크립트를 통해 생성되며, 이 Dockerfile에는 이미지를 만들기 위한 명령어들이 담겨 있습니다.
    • 이미지는 도커 허브(Docker Hub)와 같은 레지스트리에 저장되며, 여기서 이미지를 다운로드하여 사용할 수 있습니다.

     

     

    도커 컨테이너 (Docker Container)

     

    • 도커 컨테이너는 도커 이미지를 실행한 인스턴스입니다. 컨테이너는 이미지를 기반으로 하여 실제로 실행되고 있는 응용 프로그램입니다.
    • 컨테이너는 격리된 환경에서 실행되므로, 다른 컨테이너와 시스템의 나머지 부분으로부터 독립적입니다.
    • 컨테이너는 생성, 시작, 중지, 이동, 삭제 등을 할 수 있으며, 이러한 동작들은 도커 CLI나 도커 API를 통해 관리됩니다.
    • 컨테이너는 실행 중에 데이터를 저장할 수 있는 쓰기 가능한 레이어를 가지고 있지만, 컨테이너를 삭제하면 이 데이터도 함께 사라집니다. 영구 데이터 저장이 필요한 경우, 볼륨이나 바인드 마운트를 사용해야 합니다.

     

     

    1. 아래와 같이 ls로 이미지를 검색합니다. 

    ubuntu@ip-172-31-4-29:~$ docker image ls
    REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
    ubuntu        latest    ca2b0f26964c   2 weeks ago     77.9MB
    hello-world   latest    d2c94e258dcb   10 months ago   13.3kB
    ubuntu@ip-172-31-4-29:~$

     

     

     

    2. create와 이미지명을 입력 해서 콘테이너를 만들어 줍니다. 만들면 아래와 같이 id값이 출력 됩니다.

    ubuntu@ip-172-31-4-29:~$ docker create ubuntu
    3aa7ae8b50f938304f7c71adbb340f2f9f2c9ccb29f77b15c028cede7f178803

    .

     

     

     

    3. ps 명령으로 현재 실행 중인 도커 컨테이너를 보여 줍니다.

    ubuntu@ip-172-31-4-29:~$ docker ps -a
    CONTAINER ID   IMAGE         COMMAND       CREATED         STATUS                  PORTS     NAMES
    3aa7ae8b50f9   ubuntu        "/bin/bash"   2 minutes ago   Created                           laughing_chebyshev
    7fc5d1fcff44   hello-world   "/hello"      8 days ago      Exited (0) 8 days ago             great_cerf

     

     

    • CONTAINER ID: 컨테이너의 고유 식별자입니다. 이 ID는 도커 시스템 내에서 컨테이너를 구분하기 위해 사용됩니다. 예시에서는 3aa7ae8b50f9와 7fc5d1fcff44가 컨테이너 ID입니다.
    • IMAGE: 컨테이너를 생성할 때 사용된 도커 이미지입니다. 이 이미지는 컨테이너 실행에 필요한 코드, 라이브러리, 환경 설정 등을 포함하고 있습니다. 예시에서는 ubuntu와 hello-world 이미지가 사용되었습니다.
    • COMMAND: 컨테이너가 시작될 때 실행되는 기본 명령어입니다. 이 명령은 이미지 내부에 정의되어 있거나, 컨테이너를 시작할 때 명시적으로 지정할 수 있습니다. 예시에서는 ubuntu 컨테이너가 /bin/bash를, hello-world 컨테이너가 /hello를 실행하도록 설정되어 있습니다.
    • CREATED: 컨테이너가 생성된 시간입니다. 이 정보는 얼마나 오래전에 컨테이너가 만들어졌는지를 나타냅니다. 예시에서는 ubuntu 컨테이너가 2 minutes ago에, hello-world 컨테이너가 8 days ago에 생성되었습니다.
    • STATUS: 컨테이너의 현재 상태를 나타냅니다. 상태에는 Created, Running, Exited, Paused 등이 있을 수 있으며, Exited 상태일 경우 종료 코드와 함께 표시됩니다. 예시에서 ubuntu 컨테이너는 아직 시작되지 않은 상태(Created)이며, hello-world 컨테이너는 Exited (0) 상태로 정상 종료되었음을 나타냅니다.
    • PORTS: 컨테이너가 사용하는 네트워크 포트와 관련된 매핑 정보입니다. 외부에서 컨테이너 내부의 애플리케이션에 접근하기 위해 사용됩니다. 예시에서는 포트 매핑이 설정되지 않았습니다.
    • NAMES: 컨테이너의 이름입니다. 도커는 컨테이너를 구분하기 위해 사용자가 지정하거나, 자동으로 생성된 재미있는 이름을 할당합니다. 예시에서는 laughing_chebyshev와 great_cerf가 컨테이너 이름으로 사용되었습니다.

     

     

     

     

     

    반응형