Backend&Devops/Docker
[Kafka] Docker compose 설치
백엔드 로직에 최적화가 필요해서 메시지 큐를 써야할 것 같은 상황에, Kafka를 쓰면 어떨까해서 고민해보다가 시간이 생겨 구현을 해보았습니다!쉽게 구현이 될줄 알았는데, 생각보다 카프카 쪽 설정이 신경쓸 것들이 많더라구요. 1. 구성환경 배포를 같은 환경에서 자유롭게 진행하고자 카프카 컨테이너를 도커 안에 배치하도록 구성환경을 짰습니다. 모든 환경이 저랑 같을 수는 없겠지만, 저는 이런 시퀀스 구조로 카프카를 사용하도록 했어요.1) 웹 사용자가 요청하면 Next.js 서버 사이드 단에서 Kafkajs를 호출2) kafkajs는 도커 컨테이너에 있는 kafka broker에 publish3) 같은 도커 컨테이너에 있는 Express.js에서 kafka를 subcribe하고 있는 상황에서 퍼블리싱이 일어..
[리눅스] docker, docker-compose 설치
리눅스(우분투) 설치 버전입니다. 1. 도커 설치 리눅스에 도커를 설치하려면 아래 명령어를 따라가야합니다. 1. 리눅스 SSH 접속 2. 패키지 최신 업데이트 sudo apt update 3. 도커 다운로드를 위한 https 관련 패키지 설치 sudo apt install apt-transport-https ca-certificates curl software-properties-common 4. 도커 레포지토리 접근을 위한 GPG Key 설정 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - 5. 도커 레포지토리 등록 sudo add-apt-repository "deb [arch=amd64] https://downl..
[Docker] 도커 안에 젠킨스 설치 (도커 인 도커, Docker In Docker, D in D)
1. 개요 젠킨스와 같이 CI/CD 툴을 컨테이너에 설치하고 젠킨스에서 프로젝트를 생성하고, 프로젝트에서 컨테이너를 관리하는 환경을 구축하고 싶을 때 도커 인 도커라고 불리우는 방법을 사용해서 구축합니다. 컨테이너는 독립된 환경인데, 컨테이너에 설치된 젠킨스가 컨테이너들을 관리하려면 도커 볼륨을 연동해서 아래와 같은 느낌으로 구성해줍니다. 컨테이너에 젠킨스를 설치할 때 '/var/run/docker.sock:/var/run/docker.sock' 볼륨에 위와 같은 옵션을 주어서 호스트와 컨테이너가 같은 장소를 공유할 수 있도록 해줍니다. 2. 도커 인 도커 구성 도커 인 도커를 구성하는 방법은 간단합니다. 여러가지 요구되는 옵션이나 dependency가 많기는 하지만, 컨테이너에 젠킨스를 설치할 때 Do..
[Docker] Docker Compose 문법 정리
docker compose 문법 정리 도커 컴포즈는 여러 개의 도커 이미지 + 여러 개의 도커파일을 순차적으로 실행시켜 컨테이너로 만들어주는 명령어 파일을 말합니다! 도커 파일이 이미지를 만드는 거니까... 여러 개의 이미지를 실행 할 때 필요한 환경설정 값들을 도커 컴포즈에서 모두 관리한다고 생각하시면 됩니다! 1. image docker-compose 안에서 베이스 이미지를 지정할 수 있는데, docker build를 할 때와 마찬가지로 이미지가 로컬 환경에 없다면 해당 이미지를 다운받아서 base 이미지로 사용합니다. : services: proxy: image: nginx:latest # nginx 이미지 2. build build는 docker-compose에서 dockerfile을 이용해 자동..
[Dockerfile] Dockerfile express 연동하기
dockerfile을 이용해서 node.js 기반, express로 구현한 웹 서버를 docker에 올리는 방법을 테스트해보겠습니다. 먼저 전체적인 파일의 구조는 아래와 같습니다. 테스트한 운영체제는 window 10 환경입니다! 도커도 window 버전을 사용했습니다. 전체적인 소스는 아래 github에서 확인할 수 있습니다. https://github.com/kimdongjang/dockerfile_nodejs_test1 GitHub - kimdongjang/dockerfile_nodejs_test1 Contribute to kimdongjang/dockerfile_nodejs_test1 development by creating an account on GitHub. github.com 1. exp..
[Dockerfile] Dockerfile이란? Dockerfile 옵션
Dockerfile은 인프라 구성을 효을적으로 관리하기 위한 파일로, 쉘 파일과 비슷한 dockerfile을 작성해서 해당 도커 이미지를 사용자의 환경에 맞춰서 운영할 수 있도록 합니다. 위 도커 파일을 build하게 되면 도커의 이미지를 생성할 수 있습니다! 웹서버를 도커에서 구동하려면 1) 특정 웹서버 이미지를 도커를 통해 다운 2) 웹서버 이미지를 컨테이너로 실행 3) 컨테이너에 웹서버에 빌드할 서버파일을 import 4) 서버를 구동 이러한 순서로 진행했는데, dockerfile을 사용하게 되면 이 순서가 엄~청 단축됩니다! 1) 서버파일 측에서 dockerfile을 작성 2) dockerfile build해서 웹서버 이미지를 생성 3) 방금 빌드한 이미지를 컨테이너로 실행하면 자동으로 서버가 구..
[Docker] 도커에 젠킨스 설치, 도커에 젠킨스 연동
도커에 빌드 관리 도구인 젠킨스를 설치(연동)해보겠습니다. 도커는 현재 윈도우에 설치한 상태로 진행하고 있습니다! 1. 젠킨스 이미지 다운로드 윈도우 power shell을 여시고 아래와 같은 명령어를 입력해 젠킨스 이미지를 다운로드 해줍니다. 젠킨스는 lts 버전을 사용합니다. # docker pull jenkins/jenkins:lts 저는 여기서 편의상 포트번호를 8085번으로 지정했습니다. docker 컨테이너의 이름은 jenkins로 지정했고요! 2. 젠킨스 컨테이너 설치 및 실행 # docker run -itd -p 8085:8080 -v /jenkins:/var/jenkins_home –name jenkins -u root jenkins/jenkins:lts 이미지에서 컨테이너가 잘 실행되면..
[Docker] 도커 명령어 정리
docker 명령어 정리 1. 도커 이미지 검색 # docker images 현재 Host에 다운받은 이미지들을 출력하는 명령어 1-1. 도커 단일 이미지 삭제 # docker image rm 추가적으로 해당 이미지를 컨테이너에서 사용하고 있으면 이미지를 삭제할 수 없습니다. 1-2. 도커 모든 이미지 삭제 # docker rmi $(docker images -q) -f (docker image -q)라는 명령어는 이미지의 ID를 출력하는 명령어입니다. 2. 도커 컨테이너 생성 생성과 동시에 실행까지! # docker run --name 옵션 -i : 사용자가 입출력을 할 수 있는 상태 -t : 가상 터미널 환경을 에뮬레이션하겠다는 말 -d : 컨테이너를 일반 프로세스가 아닌 데몬프로세스(백그라운드) 형..
[Docker] 도커란? 도커 개념 정리
도커는 컨테이너 기반의 오픈소스 가상화 플랫폼입니다. 도커는 다양한 프로그램, 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공해 프로그램의 배포 및 관리를 단순하게 해줍니다. 백엔드 프로그램, 데이터베이스 서버, 메시지 큐등 프로그램과 관련된 모든 것들을 컨테이너로 추상화할 수 있고, 클라우드 서버에서도 이를 작동시킬 수 있습니다. 쉽게 말해서… 집에서 Maria db를 설치하고, Maria db port를 33306 같은 느낌으로 변경하고, 구성 정보를 기획한 프로그램에 알맞게 변경했다고 합니다. 이 db를 다른 곳에도 설치를 해야 하는데 만약 도커를 사용하지 않는다면 포트 번호를 33306로 변경하고, 구성 정보도 변경해야하고… 귀찮은 작업을 반복해서 해야하는 것이지요. 이를 해결하기 위해 ..