본문 바로가기

전체 글34

[docker] container networking 도커 가이드 5편: Container networking 도커 컨테이너의 네트워크에 대해서 알아보겠습니다. 도커 사용시 네트워크를 어떻게 관리할 수 있을까? 도커 컨테이너는 호스트와 격리된 자신만의 네트워크 환경을 가지고 있다. 도커 컨테이너 내부에서 외부 인터넷으로 요청을 보내는 것은 기본값으로 허용되어있다. 도커 컨테이너 내부에서 로컬호스트머신과 통신시 localhost 도메인을 사용할 수 없다. 도커 컨테이너는 외부 네트워크와 격리되어있기 떄문에 localhost는 도커 컨테이너 자체를 가리키기 때문이다. 대신 컨테이너는 도커에서 제공하는 특별한 도메인인 host.docker.internal 을 사용해서 호스트 머신과 통신할 수 있다. 컨테이너간 네트워킹은 어떤 방식으로 이루어지는가? 기본적으로 컨.. 2024. 3. 24.
docker volume, bind mount, tmpfs mount 도커 가이드 4편: 데이터 관리하기 - volumes, bind mounts, tmpfs mounts 지난 가이드에서 도커 컨테이너 각각은 격리된 파일 시스템을 가지고 있다는 것을 알아보았습니다. 컨테이너 내부에서 생성된 모든 파일은 컨테이너 내부의 writable container layer 에 저장됩니다. 그러므로 컨테이너를 삭제하면 내부에 저장된 데이터도 같이 삭제됩니다. 컨테이너 종료시 애플리케이션이 생성한 데이터가 삭제된다면 제대로 서비스를 운영할 수 있을까요? 애플리케이션은 로그 파일을 생성합니다. 유저는 게시글을 작성하면서 이미지 파일을 첨부합니다. 이러한 중요한 파일은 컨테이너가 종료되어도 유지되어야할 데이터입니다. 반드시 컨테이너 외부에 따로 저장하고 관리해야합니다. docker 에서는 .. 2024. 3. 10.
Docker Image 도커 가이드 3편: 도커 이미지 이번 시간에는 도커 이미지와 이미지를 공유하는 방법에 대해서 알아보겠습니다. (이미지 출처: https://docs.docker.com/build/guide/layers/) 도커 이미지란? 이미지는 읽기 전용이다. 동일한 이미지를 기반으로 격리된 컨테이너를 생성할 수 있다. Dockerfile 에 작성한 각각의 명령은 Docker Image 의 레이어를 의미한다. 이미지 빌드시 이미지 파일시스템에 변화를 주는 명령어는 새로운 이미지 레이어를 생성한다. 생성된 이미지 레이어는 캐시된다. 이미지 빌드시 이미지 파일시스템에 변화를 주지 않는 명령어는 새로운 이미지 레이어를 생성하지 않고 캐시된 레이어를 재사용한다. 이미지 레이어가 변경된 경우 그 이후 레이어의 캐시는 무효화되고.. 2024. 3. 3.
Dockerfile 기반 이미지 생성 도커 가이드 2편: Dockerfile 기반 이미지 생성 도커 가이드 1편: 컨테이너 소개와 기본 사용법 지난 1편에서는 도커 이미지와 컨테이너의 기본적인 사용법을 다루었습니다. 2편에서는 실제로 우리의 애플리케이션을 도커 컨테이너로 만들어서 사용해보겠습니다. 스프링부트 애플리케이션으로 실습을 진행합니다. 아래는 기존의 스프링부트 애플리케이션 프로젝트를 일반적인 배포 프로세스입니다. 1. 변경 사항 git push 2. Jenkins 같은 CI 도구를 사용해서 build 해서 jar 파일 생성 3. jar 파일을 서버 전송한 후 shell 스크립트로 실행 도커를 프로젝트에 적용시 배포 프로세스는 다음과 같습니다. 1. 변경 사항 git push 2. Jenkins 같은 CI 도구를 사용해서 build 해.. 2024. 2. 25.
자바8 날짜 및 시간 API 간략 정리 Java 날짜와 시간 정리 코드 확인 자바 8에서 새롭게 도입된 날짜와 시간 API 클래스 특징 불변 객체 Thread Safe LocalDate 날짜 @Test void localDate() { LocalDate localDate = LocalDate.of(2024, 2, 17); System.out.println("localDate = " + localDate); LocalDate now = LocalDate.now(); System.out.println("now = " + now); int year = now.getYear(); int month = now.getMonthValue(); int day = now.getDayOfMonth(); System.out.println("year = " + y.. 2024. 2. 18.
도커 컨테이너 소개와 기본 사용법 도커 가이드 1편: 컨테이너 소개와 기본 사용법 안녕하세요 최근에 개발 서버를 세팅하고 있습니다. 세팅한 기록을 남겨서 운영서버 세팅시 할 때 참고해야합니다. 아마 운영서버도 환경변수만 약간 다르고 동일하게 세팅해야될 겁니다. 그런데 이런 과정을 반복하다보면 실수할 수도 있지 않을까요? 세팅해야하는 운영서버가 많다면 그만큼 시간도 오래걸릴 겁니다. 모든 세팅 과정을 프로젝트 내부에 파일 형태로 관리하면서 재활용을 할 수 있으면 좋지 않을까요? 네, 도커를 사용한다면 개발 환경 설정을 관리하고 재사용도 아주 쉽게 할 수 있습니다. 도커를 활용할 경우 세팅을 반복할 필요도 없고 배포도 간단해질 수 있을 것으로 기대하고 있습니다. 도커에 대해 더 학습해보고 검토 후에 프로젝트에 적용해볼 계획입니다. 도커는 컨.. 2024. 2. 4.