노트북으로 작업하는 고양이
로딩 중

전체 글

5. Docker의 데이터 관리: Volume 완전 이해
·
Docker
1. 개요데이터가 사라지는 문제컨테이너는 기본적으로 휘발성이다 컨테이너 삭제시 (rm) 모든 데이터(로그, DB파일)도 같이 사라짐 → 해결책 Volume 외부에 저장 2. 볼륨2-1 정의도커에서 볼륨(Volume)은 컨테이너가 삭제되거나 재시작되어도 데이터를 안정적으로 보존하기 위해 호스트에 별도로 저장하는 영역 2-2 볼륨(Volume)의 특징컨테이너와 분리되어 있음컨테이너 재시작/삭제에도 데이터 유지여러 컨테이너가 동일한 볼륨을 공유가능2-3 볼륨의 종류 비교구분VolumeBind Mount정의Docker가 관리하는 독립 스토리지호스트의 특정 디렉터리를 직접 연결저장위치Docker가 직접 관리 (/var/lib/docker/volumes/)호스트의 특정 디렉토리관리주체Docker 엔진이 자동 관리사..
4-1. 도커 허브(Docker Hub)란?
·
Docker
도커 허브란?Docker Hub는 컨테이너 이미지를 저장하고 공유하는 공식 이미지 레지스트리 서비스다.쉽게 말해, Docker 이미지의 GitHub 같은 저장소라고 보면 된다. Docker Hub의 주요 역할 이미지 저장 (Push)→ 내가 만든 이미지를 업로드하여 보관이미지 다운로드 (Pull)→ 다른 사람이 만든 이미지를 가져와 바로 실행자동 빌드 (Automated Build)→ GitHub 등과 연동하여 코드 변경 시 Docker 이미지를 자동으로 빌드 및 업데이트공개/비공개 레포지토리 관리→ 누구나 사용 가능하게 공개하거나, 내부용으로 비공개 설정 가능Docker 이미지 기본 동작 흐름 (Build → Push → Pull)이미지 빌드 (Build)개발자가 Dockerfile을 기반으로→ 로컬 ..
4. Dockerfile Best Practices 8가지
·
Docker
개요Dockerfile은 컨테이너 이미지를 만드는 기준이 되는 파일이며, 작성 방식에 따라 이미지의 품질이 달라진다.비효율적인 Dockerfile은 이미지 용량 증가, 빌드 시간 지연, 보안 취약점 노출, 유지보수 어려움으로 이어질 수 있다.따라서 Dockerfile 작성 시에는 이미지 경량화, 캐시 최적화, 명확한 명령어 구성, 불필요한 요소 제거, 보안 강화를 고려해야 한다.Dockerfile Best Practices는 이러한 원칙을 기반으로 더 안정적이고 효율적인 컨테이너 환경을 만들기 위한 실무 기준이라고 볼 수 있다. Dockerfile Best Practices 핵심 선요약속도 최적화→ 캐시 활용 + 변경 적은 레이어 먼저 구성 + .dockerignore로 불필요 파일 제거이미지 경량화→ ..
3-1. [실습] 나만의 유틸리티 이미지 만들기 (Alpine 버전) / no cache관련
·
Docker
과제Dockerfile을 직접 작성하여 유틸리티 이미지를 만들어봅니다.1.베이스 이미지는 alpine:3.19 버전을 사용합니다. a.Alpine은 초경량 리눅스 기반 이미지로, 빠른 빌드 속도와 보안성을 위해 실무에서도 가장 많이 사용됩니다. 2.컨테이너 안에는 curl과 vim 도구가 설치되어 있어야 합니다. a.apk add 명령을 활용해 필요한 패키지를 추가하세요. b.캐시를 남기지 않도록 --no-cache 옵션을 함께 사용합니다. 3.컨테이너 실행 시 자동으로 셸(sh) 이 열리도록 설정합니다. a.CMD 명령을 이용해 컨테이너가 실행되면 바로 명령어를 입력할 수 있어야 합니다. 4.이미지를 빌드하고 이름은 mytools:1.0 으로 지정합니다. a.빌드 명령: do..
3. Dockerfile의 기본 구조
·
Docker
이미지의 구조 이해이미지가 단순한 파일이 아니라, 레이어(layer) 로 구성된 설계도입니다.image = 읽기 전용 레이어이미지 실행 후 = 쓰기 전용 레이어 ( image를 제외하고 저장 안하고 종료시 휘발) Dockerfile의 기본 구조 Dockerfile은 이미지를 “어떻게 만들지”를 정의하는 설계도 각 Dockerfile 명령은 하나의 레이어가 되며, 이 레이어들은 캐시로 재사용된다 Dockerfile 빌드 흐름 이해하기Dockerfile은 위에서 아래로 순차적으로 실행되며 각 줄마다 결과가 하나의 이미지 레이어로 저장된다. 레이어 설명레이어 2 환경변수 설정 → 메타데이터 기반레이어 3 작업디렉토리 설정레이어 4 부터 파일시스템이 변하는 레이어, info라는 폴더가 생성됨레이어 5 로컬에 ..
2-3. [실습] 이미지 관리 및 정리 실습
·
Docker
과제다음 조건을 모두 만족하는 웹 서버 컨테이너를 만들어보세요.docker images로 현재 로컬에 저장된 이미지 목록을 확인하세요.docker rmi nginx로 nginx 이미지를 삭제해봅니다.이후 docker run nginx를 다시 실행하면 무슨 일이 일어날까요?어떤 단계에서 자동으로 이미지를 다시 다운로드하는지 관찰하세요. 실습이미지 확인docker images nginx 이미지를 삭제docker rm -f myweb myweb2docker rmi nginx 결과 nginx 실행docker run nginx 결과 docker에 nginx가 없음 → registry에서 새로 가져와 다운 받음 정리로컬에서 이미지 확인 → 없으면 Docker Hub 또는 레지스트리에서 자동 다운로드 → 최신 ..
2-2. [실습] 컨테이너 재활용과 포트 변경 실습
·
Docker
과제다음 조건을 모두 만족하는 웹 서버 컨테이너를 만들어보세요.현재 실행 중인 myweb 컨테이너를 정지(stop) 합니다.새로운 이름 myweb2로 동일한 nginx 이미지를 실행하세요.이번엔 포트를 8085:80으로 바꿔서 실행합니다.브라우저에서 localhost:8085 접속 시 동일한 페이지가 뜨는지 확인하세요 실습도커 중지docker stop myweb 결과 동일한 nginx 이미지로 myweb2 생성docker run --name myweb2 -d -p 8085:80 nginx 결과 본 글은 강의 내용을 기반으로 학습한 내용을 정리한 글입니다.https://skilleat.com/class/?idx=14 Docker Essentials - 감 잡히는 컨테이너 & 도커 : 스킬잇기술을 가장 ..
2-1. [실습] 내손으로 웹페이지 바꿔보기
·
Docker
1. 과제다음 조건을 모두 만족하는 웹 서버 컨테이너를 만들어보세요.1.Nginx 이미지를 사용하여 컨테이너 이름은 myweb 으로 지정합니다.2.호스트의 8083 포트를 컨테이너의 80 포트로 연결합니다.3.컨테이너 내부로 들어가 /usr/share/nginx/html/index.html 파일 내용을 Hello Docker World! 로 바꿉니다. (echo “Hello Docker World!” > /usr/share/nginx/html/index.html)4.브라우저에서 localhost:8083 으로 접속했을 때 변경한 문구가 출력되어야 합니다.5.마지막으로, 서버 로그를 확인해 내가 접속한 기록이 남아 있는지 살펴보세요. 2. 실습2-1 도커 실행docker run -d --name myweb..
1. 쿠버네티스, 운영을 자동화하는 기술의 조타수
·
k8s
선요약1. 쿠버네티스는 단순히 컨테이너 실행기가 아닌 무중단 배포, 자동 복구, 자동 확장을 지원하는 현대적인 인프라 운영 플랫폼2. 클러스터는 Control Plane과 Data Plane 으로 나뉘어 실행을 분리한다.3. 리소스를 만들 때는 선언형 방식 중심으로 설계, 모든 길은 kube-apiserver로 통함4. 작성한 yaml 설정 파일이 api 서버를 통해 여러 단계를 거쳐 실제 컨테이너 실행 쿠버네티스란?컨테이너 애플리케이션을 자동으로 배포,확장,운영하는 오픈소스 플랫폼2014년 Google이 오픈소스로 공개하였으며, 현재는 CNCF(Cloud Native Computing Foundation) 주도로 활발히 발전하고 있다. 선언적 설정을 통해 사용자가 원하는 상태를 정의 쿠버네티스 사용 ..