도커의 파일시스템도커(Docker)은 컨테이너 기술을 제공하는 플랫폼으로, 핵심적인 특징 중 하나가 바로 레이어(layer) 개념과 유니온 파일시스템(Union Filesystem)을 활용한 독특한 파일시스템 구조임.도커 파일시스템 구조를 정확히 이해하면 도커 이미지가 어떻게 구성되는지, 컨테이너 내부에서 파일 변경이 어떻게 처리되는지, 다양한 스토리지 드라이버는 어떤 방식으로 동작하는지 등을 심도 있게 파악할 수 있음. 도커 이미지와 레이어도커 이미지는 여러 개의 읽기 전용 레이어(읽기 전용 파일시스템)를 유니온 파일시스템으로 합쳐서 하나의 논리적인 파일시스템을 구성한 형태임.도커 이미지는 전통적인 VM 이미지를 생각했을 때와 달리 매우 가볍고, 변경점만을 새로운 레이어로 관리함으로써 이미지를 효율적으..
도커 볼륨 구조도커(Docker) 볼륨(Volume)은 컨테이너의 파일시스템 외부에 위치하는, 데이터를 영구적으로 저장하기 위한 특별한 메커니즘임.도커 볼륨은 컨테이너가 재시작되거나 삭제되더라도 데이터를 유지할 수 있고, 여러 컨테이너 간에 손쉽게 데이터 공유도 가능함. 도커의 파일시스템1. 레이어(Layer) 기반 이미지 구조도커 이미지는 여러 읽기 전용 레이어(RO layer)의 합으로 이루어지며, 컨테이너를 실행할 때 읽기/쓰기(RW) 레이어가 추가됨.컨테이너 내부에서 파일이 변경되면 RW 레이어에만 해당 변경 사항이 저장되고, 원본 이미지는 변경되지 않음.이 RW 레이어는 일반적으로 일시적(휘발성)이기 때문에 컨테이너가 삭제되면 데이터도 함께 삭제됨. 2. 영속 데이터 문제데이터베이스나 로그, 업..
컨테이너 실시간 모니터링 방법도커 컨테이너가 사용하는 CPU, 메모리와 같은 자원 사용량은 운영 환경에서 중요한 지표임.이 지표를 실시간으로 모니터링하여 병목 현상을 사전에 파악하거나, 장애 상황을 빠르게 진단할 수 있음. docker stats 명령어 활용1. 개요도커는 기본적으로 docker stats라는 CLI 명령을 제공함.이 명령을 사용하면 실행 중인 모든 컨테이너의 CPU, 메모리, 네트워크, 블록 I/O 사용량을 실시간으로 볼 수 있음. 2. 사용 방법docker stats별다른 인자가 없으면, 모든 컨테이너의 상태를 실시간으로 표시함.특정 컨테이너만 보고 싶으면, 컨테이너 이름이나 ID를 지정함.docker stats ... 3. 출력 정보CONTAINER ID: 컨테이너 IDNAME: ..
도커 컨테이너의 자원과 로컬의 자원도커(Docker) 컨테이너는 가상머신(VM)과 달리 호스트 OS의 커널을 직접 공유하면서 애플리케이션을 격리하는 방식으로 동작함.이로 인해 가볍고 빠른 실행 환경을 제공하지만, 동시에 호스트 머신(로컬) 자원과 긴밀히 연결되어 있음. 도커 컨테이너의 기본 아키텍처1. 호스트 커널 공유컨테이너는 호스트 OS(또는 VM 내부)의 커널을 그대로 공유함.가상머신(VM)처럼 별도의 OS 커널을 갖지 않으므로, 프로세스 수준에서 격리가 이루어짐.이를 통해 오버헤드가 적고, 리소스를 효율적으로 사용할 수 있음. 2. Namespaces (네임스페이스)리눅스 커널의 네임스페이스 기술을 활용해 프로세스, 네트워크, 파일시스템, 사용자, IPC, UTS 등을 격리함.예를 들면,PID N..
Dockerfile 작성하는 방법Dockerfile은 Docker 이미지를 빌드하기 위한 청사진(Blueprint)이자 레시피임.컨테이너 환경을 어떻게 설정하고 동작시킬지 정의함.조직적이고 효율적으로 Dockerfile을 작성하면 이미지를 더 작고 빠르게 만들 수 있으며, 재사용성과 유지 보수성도 높아짐. Dockerfile의 기본 개념 이해1. Docker 이미지Docker 이미지는 레이어(layer)로 구성된 불변(immutable) 데이터임.각 명령어(Instruction)는 새로운 레이어를 생성함.이미지가 커지면 빌드와 배포 속도가 느려지므로, Dockerfile 작성 시 레이어를 적절히 최적화하는 것이 중요함. 2. Docker 컨테이너이미지를 실행(run)하면 컨테이너가 만들어지고, 이는 격리..
도커도커는 애플리케이션을 컨테이너화하여 개발, 배포 및 실행을 간소화하는 오픈 소스 플랫폼임.컨테이너는 소프트웨어를 실행하는 데 필요한 코드, 런타임, 시스템 도구, 시스템 라이브러리 및 설정을 포함하는 표준화된 유닛임.도커를 사용함으로써 개발자는 애플리케이션이 다양한 환경에서도 일관되게 동작할 것임을 확신할 수 있음. 도커의 주요 구성 요소1. 도커 엔진1.1 설명도커의 핵심 소프트웨어로서, 도커 이미지를 실행하여 도커 컨테이너를 생성하는 역할을 함.1.2 구성서버(도커 데몬), REST API, 클라이언트(CLI 인터페이스)로 구성됨 2. 도커 이미지2.1 설명읽기 전용 템플릿으로서, 컨테이너를 생성하는 데 사용됨.2.2 특징이미지는 여러 계층으로 구성되며, 각 계층은 이전 계층의 변경 사항만을 저장..
.env IMAGE_NAME=docker-pgt/ubuntu_1804 IMAGE_TAG=0.01 CONTAINER_NAME=ubuntu_1804 test.sh if [[ "$(docker ps -a -q -f "name=${CONTAINER_NAME}" 2> /dev/null)" != "" ]]; then echo "There is a container." if [[ "$(docker container ls -q --filter "name=${CONTAINER_NAME}" 2> /dev/null)" != "" ]]; then echo "Container is running." echo "Shut down and remove the container." docker stop $(docker containe..
다음과 같은 에러가 발생 bash: add-apt-repository: command not found 다음 명령어로 패키지 설치 apt-get install software-properties-common -y 다시실행 add-apt-repository ppa:deadsnakes/ppa -y 정상적으로 동작한다!! 원하는 패키지 설치 apt-get install python3.10 -y
현재 상태 확인 ls pwd 디렉토리 만들기 mkdir my_dir 에러 발생시키기 mkdir my_dir 에러 출력하지 않기 mkdir my_dir > /dev/null 2>&1 표준 출력하기 echo aaa 표준 출력시 출력하지 않게하기 echo aaa > /dev/null 2>&1