본문 바로가기

DevOps/Docker6

Docker Registry와 Docker 실행 구조 (Harbor, Desktop, Engine, WSL2) 최근 Docker에 대해 학습하며 Harbor를 이용해 Private Registry 서버를 구축해보았다. 이 과정에서 Docker Registry 개념과 Docker Hub, Docker Desktop에 대해 궁금증이 생겼고, Docker Desktop 없이 Windows 환경에서 어떻게 Docker Engine을 실행하는지 정리하게 되었다.Docker Harbor에 아주 간단한 PR로 올렸다!Docker Registry란?Docker Registry는 Docker Image를 저장하고 배포하는 저장소 서버이다.Docker는 컨테이너 실행 시 이미지를 Pull 하거나 Push 하는데, 이때 Registry 서버를 이용한다.Docker HubDocker Hub는 Docker에서 공식 제공하는 퍼블릭 Re.. 2026. 1. 24.
[Docker] DinD(Docker in Docker) 와 DooD(Docker out of Docker) 프로젝트를 진행하며 EC2에 Jenkins를 배포하여 CI/CD 파이프라인을 구축하였다. 이 과정에서 컨테이너 환경에서 실행 중인 Jenkins에서 docker-compose: not found 오류가 발생하는 문제가 있었고, 이를 해결하는 과정에서 DinD(Docker-in-Docker)와 DooD(Docker-out-of-Docker) 방식에 대해 학습하게 되었다. CI/CD 파이프라인 흐름개발자가 GitLab에 코드를 push한다.GitLab에 설정된 webhook을 통해 push 이벤트가 Jenkins로 전달된다.Jenkins는 GitLab의 최신 코드를 가져와 테스트 및 빌드를 수행한다.빌드 과정에서 docker-compose up -d --build 명령을 실행하여 새로운 코드 기반으로 컨테이.. 2025. 2. 2.
[Docker] Container의 불변성과 Volume, Bind Mount 결론Docker 컨테이너는 이미지 기반으로 운영되며 불변성을 유지하는 구조를 갖는다.이는 환경의 일관성을 유지하고 배포 및 롤백을 용이하게 하며, 버전 관리를 최적화하는 등의 장점을 제공한다.그러나 이러한 불변성으로 인해 컨테이너 내부의 데이터는 기본적으로 휘발성이며, 컨테이너가 삭제되면 데이터도 함께 사라지는 문제가 발생할 수 있다. 이를 해결하기 위해 Docker Volume을 사용하면 컨테이너의 수명과 관계없이 데이터를 지속적으로 유지할 수 있다. 또한, 바인드 마운트를 활용하면 호스트 시스템의 특정 디렉터리를 컨테이너와 공유하여 영구적인 데이터 저장이 가능하다. 따라서 컨테이너의 불변성을 유지하면서도 데이터를 보호하고 지속적으로 활용하기 위해서는 Docker Volume과 바인드 마운트를 잘 활용.. 2025. 1. 29.
[Docker] docker compose - redis 연결 불가 오류 저번글에서 docker-compose를 이용해서 spring+mysql 컨테이너를 만들었었다. 이번에는 redis를 세션 저장소로 이용하기위해 docker-compose에 redis관련 설정을 추가해줬다.my-redis: image: redis:latest restart: always ports: - 6379:6379 networks: - my-network 위 코드를 docker-compose 파일에 추가해줬고 spring: session: store-type: redis yml파일에 해당 코드를 추가한뒤 docker-compose 실행했고 잘 실행되었다. 다음날 학원에 가서 학원 컴퓨터에 집에서 작성했던 코드를 받아서 컨테이너를 다시 만들었는데  redis 연결이 안되는 오류.. 2024. 2. 27.
[Docker] docker compose로 Spring + MySQL 배포 환경 만들기 docker compose를 통해 하나의 네트워크에 Spring, MySQL 컨테이너를 띄워서 실행시켜보자 일단 spring, mysql의 Dockerfile을 작성하고 docker-compose.yml을 작성해 spring과 mysql을 도커로 띄워서 실행시켜 보았다. 코드는 얼마전 스프링 시큐리티 실습을 할때 사용했던 프로젝트를 사용했다. 이 과정에서 몇가지 오류가 발생했고 이를 정리하고자 한다. 1. ./gradlew clean build 오류 - (1) 2. ./gradlew clean build 오류 - (2) 3. 3306 포트 사용중으로 인한 오류 4. db폴더에 있는 store 폴더에 의한 오류 1. ./gradlew clean build 오류 - (1) RUN ./gradlew clean.. 2024. 2. 22.
[Docker] 도커 개념, 기본 명령어 정리 도커란?도커, 컨테이너,쿠버네티스가 무엇일까? 도커는 컨테이너를 관리하기 위한 도구로 일종의 프로그램이다.컨테이너를 통해 한대의 서버에 여러개의 소프트웨어를 안전하고 효율적으로 운영할 수 있다.쿠버네티스는 서버가 여러 대 있는 환경에서 각각의 서버의 도커에게 대신 지시를 해주는 오케스트레이션 도구이다.vm과의 차이vm이란?VM(virtual machine)의 정의는 컴퓨팅 환경을 소프트웨어로 구현한 것으로 즉 컴퓨터 시스템을 에뮬레이션(가상현실화)하는 소프트웨어라고 하며, 가상머신상에서 운영 체제나 응용 프로그램을 설치 및 실행할 수 있다고 한다.  VM과 도커의 공통점Docker와 Virtual Machine은 기본 하드웨어에서 격리된 환경 내에 애플리케이션을 배치하여 실행한다. VM과 도커의 차이점D.. 2024. 2. 19.