본문 바로가기

Docker8

섹션4. 네트워킹:(교차) 컨테이너 통신 컨테이너 내부에서 네트워크를 사용하는 방법 다수의 컨테이너를 연결 서로 통신하게 하는 방법 ### 컨테이너 만들기 & 웹 통신하기(WWW) - 컨테이너 내부에서 WWW 로 요청을 보내는 것은 작동한다. ( 특별한 설정 필요 없음 ) ### 호스트 통신 작업을 위한 컨테이너 만들기 - 컨테이너와 로컬 MongoDB 와의 연결하는 법 - 특수 도메인을 이용한다. -> host.docker.internal 'mongodb://localhost:27017/swfavorites' 코드에서 해당 부분을 아래와 같이 바꾼다. 'mongodb://host.docker.internal:27017/swfavorites' ### 컨테이너와 컨테이너 간의 통신: 기본 솔루션 - 모든 컨테이너는 한 가지에만 집중하도록 하는 것.. 2023. 11. 28.
섹션3. 데이터 관리 및 볼륨으로 작업하기 학습내용 도커 내장볼륨 다른 종류의 데이터 인수 및 환경변수 ### Npm install 의 의미 run npm install run npm intsall express - 패키지명을 명시해 특정 패키지를 설치하는 동작 - 패키지명을 명시하지 낳고 package.json 파일의 의존성을 설치하는 동작 ### 데이터 카레고리/다양한 종류의 데이터 이해하기 - 이미지는 읽기만 가능 ( read-only ) - 컨테이너는 읽기 쓰기 가능 (read - write ) - 이미지에서 변경하지 않고 부가 레이어에서 변경 - 컨테이너나 이미지와 로컬 파일 시스템 간에는 연결되어 있지 않다. - Application : 읽기만 가능 - Temporary App Data : 읽기 + 쓰기 가능 - Permanent Ap.. 2023. 11. 26.
섹션2. Docker 이미지 & 컨테이너: 코어 빌딩 블록 ### 이미지 모든 설정 명령과 모든 코드가 포함된 공유 가능한 패키지 이미지는 멀티 레이어를 포함한다. ### 컨테이너 이미지의 구체적인 실행 인스턴스 이미지를 기반으로 컨테이너를 실행한다. 이미 존재하는 이미지를 사용한다. -> Docker Hub - Docker run node - Docker ps -a - Docker run -it node -> 대화형 세션을 노출하고 싶을 때 ( 터미널로 들어감 ) ### Dockerfile 을 사용하여 자체 이미지 빌드하기 ==이미지는 컨테이너의 템플릿이어야 한다.== ==이미지를 실행하는 것이 아니라, 이미지를 기반으로 컨테이너를 실행한다.== - DockerFile 파일 생성 FROM node WORKDIR /app // 작업 디렉토리 설정 -> 이후 명령.. 2023. 11. 24.
섹션 1:시작하기 ### 도커란 무엇인가 ? 컨테이너 기술 = 피크닉 바구니 컨테이너를 생성하고 관리하기 위한 도구 ### 왜 우리는 독립적인 표준화된 애플리케이션 패키지를 원할까 ? - 내가 작성한 프로젝트가 다른 환경에서 작동이 안될 수 있다. - 팀이나 회사에서 각자 다른 환경에서 작업할 수 있다. ### 가상머신 vs 도커 가상머신 - 내 OS 위에 다른 OS 를 띄운다. - 장점 : 환경분리, 특정 환경 구성 가능 - 단점 : 중복 복제, 낭비 공간 발생, 성능 저하, 운영체제에 많은 영향을 끼친다. 도커 - 컨테이너를 사용하면 나의 OS 위에 내장 컨테이너를 사용. - OS 에 미치는 영향이 적고 빠르다. - 분리, 리빌딩, 공유가 쉽다. - OS / Emulated Container Support / Dock.. 2023. 11. 21.
Springboot docker GitHub Action 연동하여 자동 배포하기 지난 번 로컬배포 및 ec2 배포에 이어서 GitHub Action 을 연동하려고 한다. ( nginx 사용 X ) cicd 경험이 없어서 테스트겸 테스트 해보려고 레포지토리를 만들어서 간단한 github action + s3 를 이용해보았다. https://github.com/dbswhd4932/cicdproject 환경변수도 없어서 금방 진행할 수 있었는데 프로젝트에 적용해보려고 하니 정말 많은 오류가 많았고 구글링을 해보아도 내 프로젝트랑 환경이 달라서 금방 적용할 수 없어 많은 시행착오를 겪었다. 먼저, 아주 간단히 플로우를 정리하면 아래와 같다. 1. 개발자가 코드를 main 브랜치에 푸시 ( PR 도 가능 ) 2. deploy.yml 에서 설정한 flow 대로 실행 3. gradle build.. 2023. 1. 20.
ec2 linux + docker + spirngboot 프로젝트 + mysql 연동 후 서버 띄우기 이전에 도커 허브에 이미지를 push 하는 방법까지 진행한 후, ec2 에 배포하는 과정에 또 많은 시간이 걸렸다. 도커를 통해 배포가 계속 실패하니, 다른방법이 없을까 하고 찾아보았는데 ec2 서버에 git clone 을 해서 build 후 생성한 dockercompose 파일을 실행시키는 방법도 있었다. 해봤는데 프리티어라 그런지 용량이 초과되어서 서버가 그냥 먹통이되어버렸다. 그만큼 도커에서 하면 그런 부담없이 배포가 가능하며, 어떤 OS 환경에서도 같은 환경을 사용할 수 있는점이 가장 큰 장점이 아닐까 직접 느낄 수 있었다. 목표는 ec2 에 배포 후 설정한 탄력적 IP 를 통해 swagger 를 배포하는 것이다. 먼저, 도커 허브에 올려져 있는 이미지를 생성한 ec2에서 pull 해주어야 한다... 2023. 1. 16.
도커허브 - docker requested access to the resource is denied 도커 허브에 이미지를 올릴 때 docker requested access to the resource is denied 라는 에러가 발생할 수 있다. 먼저 도커허브에 이미지를 올리려면 도커 허브 사이트에 회원가입을 진행해야 한다. https://hub.docker.com/ Docker Hub Container Image Library | App Containerization Deliver your business through Docker Hub Package and publish apps and plugins as containers in Docker Hub for easy download and deployment by millions of Docker users worldwide. hub.docke.. 2023. 1. 14.
Docker-compose를 작성해서 SpringBoot + MySql DB 서버 구동 프로젝트 중 Docker를 이용해서 로컬서버로 띄우는데까지만 4일? 이 꼬박걸렸다. 인텔리제이에서 실행하면 잘되었는데, 도커로 실행하면 도무지 이해가 안되는 에러가 많이 발생했다. 구글이랑 스택오버플로우랑 다찾아보고 컨테이너를 몇십개는 삭제하고 실행해봤다. 정말 많은 삽질을 했는데 구글에는 정말 많은 코드가 있어서 복붙해서 사용하더라도 자신의 환경에 맞추어 사용할 줄 알아야 한다. 또한 실행되는 코드를 찾더라도 코드를 망가뜨려보는? 것도 계속해야 조금 더 이해할 수 있는 계기가 될 수 있다. docker-compose 를 사용하는 이유는 여러 컨테이너들을 묶어서 관리하기 위해서이다. 먼저 확인하고 주의해야할 점 - Dockerfile 과 docker-compose는 꼭 같은 경로에 있어야 한다. - ja.. 2023. 1. 14.