ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 도커 세번째
    프로그래밍/Docker 2024. 1. 4. 00:15

    도커 이미지 관련 명령어들

     

     

     

    도커이미지의 특징 

    1. 바이너리, 라이브러리 및 설정값 포함

    2. 변경되는 상태값을 보유하지않음  stateless

    3. 변하지 않음  immutable, RO (Read Only)

     

     


     

    도커 이미지 받을때 팁

    프로젝트 요구사항이 특별히 debian에 초점을 맞추지 않았다면 

    alpine 권장

     

    만약 debian에 초점이 되어있다하더라도 특정 설정의 제약이 없다면

    slim  키워드가 있는 버전을 쓰는것을 권장

     

     


     

    이미지 구조

    이미지는 기본적으로 계층구조(Layer)이다.

    레이어로 만드는 이유 -> 기존의 이미지 재활용 가능 (공간효율성, 모듈화 가능)

    여러개의 layer를 하나의 FS로 사용하게 해주는 기능을 UFS (union filesystem) 이라고 한다.

     

     

    docker image inspect [이미지이름]

    docker image history [이미지이름]

    으로 정보를 볼 수 있다.

     

    Digest

      이 값으로 저장된 도커이미지를 구분

     

    ContainerConfig 

          정보를 보면 컨테이너 값이 있는데 이미지를 빌드하는 과정을 거치며 최종 컨테이너 id가 만들어 지고

          ContainerConfig에서 그 id값을 가져와서 사용한다.

     

    CMD 

      이미지는 정적이고, 컨테이너는 동적이다.

      동적 컨테이너에서는 반드시 내부애 daemon이 돌아가야 서비스를 할 수 있다.

     

    Dockerfile로 만들 때 항상 하단에 CMD 키워드로 daemon을 돌리는 명령어를 포함시킨다.

    그것을 통해 정적 -> 동적으로 변경

     

    이미지에서 컨테이너로 바뀌면 환경이 정적에서 동적으로 바뀌는 것이다.

    (컨테이너에서 프로세스가 동작하는 것이 동적환경)

    그래서 CMD 키워드는 대부분 실행 명령이 들어간다. 

     

     

     

      

     

    이미지를 docker run을 통해 실행하게 되면 이 이미지에 대한 스냅샷이 컨테이너 내부에 기본적으로 저장이 되고,

    컨테이너가 실행되면 Read Write가 가능한 컨테이너 레이어가 씌워진다.

     

    이미지는 불변이기 때문에 RO

    거기에 컨테이너의 RW가 올라가서 레이어가 따로 잡히게 된다.

     

    컨테이너 내부에선 RW가 가능하기 때문에  새 정보를 update한 후 컨테이너를 stop 시키면 컨테이너 내부에만 적용될 뿐

    이미지엔 전혀 적용이 되지 않는다.

     

    docker commit을 하면 컨테이너 내부에서 변경된 정보를 포함하는 신규 이미지를 생성한다.

     

     

     

    '프로그래밍 > Docker' 카테고리의 다른 글

    도커 여섯번째  (1) 2024.01.15
    도커 다섯번째  (0) 2024.01.14
    도커 네번째  (1) 2024.01.14
    도커 두번째  (1) 2024.01.02
    도커  (0) 2023.12.31
Designed by Tistory.