본문 바로가기

[DevOps]

(18)
[Docker] 내가 복붙해서 쓰려고 적는 도커 설치 스크립트 [ AWS EC2 Ubuntu 환경에서 Docker 설치 ] #!/bin/bash # 패키지 업데이트 sudo apt-get update -y # 기존에 있던 도커 삭제 sudo apt-get remove docker docker-engine docker.io # 도커 설치 sudo apt-get install docker.io -y # docker 서비스 실행 sudo service docker start # /var/run/docker.sock 파일의 권한을 666으로 변경하여 그룹 내 다른 사용자도 접근 가능하게 변경 sudo chmod 666 /var/run/docker.sock # ubuntu 유저를 docker 그룹에 추가 sudo usermod -a -G docker ubuntu 참고로 새로..
[Docker] Buildx: Multi-Arch images 빌드하기 (linux/amd64, arm64) [사용중인 모델에 딱 맞는 '가성비 갑' 인스턴스를 찾아서...] 프로젝트를 하면서 자연어 감정분류 모델로 BERT를 썼다. 이놈을 돌리기 위해 좀 비싼 모델(Linux t2.xlarge )을 사용했는데, 얼마 쓰지 않았는데도 요금 폭탄의 조짐이 보이기 시작했다. 아무래도 아직 취준생 신분이라... 용돈을 까먹으면서 살아가기 때문에 절약할 수 있는 비용은 최대한 절약해야 했다. 이대로 가다간 EC2 대여비용으로 파산할 지도 모르는 상황이;; 그래서 일단 이 모델이 도대체 얼마나 자원을 잡아먹는지를 알아봤다. 기존의 대여중이였던 (BERT모델이 돌아가는 중이던) 서버에서 top명령어로 찾아보니 사용중인 RAM 용량이 거의 8GB에 육박했다.... 젠장...최소 8GB의 RAM을 보유하는 인스턴스 모델은 내..
[Docker] 이미 실행한 컨테이너 포트포워딩 재설정하기 [ jenkins...bye.. ] 프로젝트가 거의 끝물에 이르면서, 벡엔드 서버는 정리+마무리 단계다. jenkins를 도커 컨테이너로 만들어서 쓰면 기본포트가 8080인데, 포트번호를 바꿔줄수 있냐는 팀원 요청이 있었다. 해본적이 없어서 간단한 방법을 찾았는데 유용할 것 같아 기록으로 남긴다. Wrong solution !! -> 먼저 시도한 방법은 ..... 커밋하고, 포트포워딩 바꿔서 다시 실행! (예상은 했지만 역시 실패... ) docker stop jenkins-container-name docker commit jenkins-container-name jenkins-image-name docker run -p 8081:8080 -d jenkins-image-name 그리고 다시 접속해보면...
[AWS EC2 + Docker + Jenkins ] FastAPI 배포 자동화 [AWS EC2 + Docker + Jenkins ] Spring Boot 배포 자동화 - Jenkins 설치 [ 시작하며.. ] 언제 한번 쭉 정리할까 고민이였는데, 마침 배포 자동화를 할 일이 생겨서 기록으로 남기기로 한다. 한번 해보고 나면 과정은 그렇게 어렵지 않다. PC와 깃헙(혹은 깃랩 등)에서 작 buildabetterworld.tistory.com [FastAPI 배포] EC2에 docker, docker-compose, jenkins 를 설치하는 과정은 이전과 동일하다. 다만 이번에는 새로운 커밋이 발생하면-> 이미지를 빌드해서 허브에 올리고 -> 허브에서 다시 해당 이미지를 당겨와서 -> compose로 실행하는 형태이다. 사실 Spring-boot를 배포 자동화 할 때랑 별 차이가 없..
[AWS EC2 + Docker + Jenkins ] Spring Boot 배포 자동화 - Jenkins 설치 [ 시작하며.. ] 언제 한번 쭉 정리할까 고민이였는데, 마침 배포 자동화를 할 일이 생겨서 기록으로 남기기로 한다. 한번 해보고 나면 과정은 그렇게 어렵지 않다. PC와 깃헙(혹은 깃랩 등)에서 작업한 내용을, jenkins에서 빌드하고 docker hub에 올리면, server는 그걸 가져와서 실행한다. 나는 조금 기형적으로, 배포가 되는 서버와 jenkins용 서버가 통합되어 있다. 정상적인 형태는 아니지만 환경이 열악해서... 혹시나 이 기록을 참고하는 사람들은 참고하면 좋겠다. 더불어 사용하는 EC2 인스턴스의 Ram은 16GB이며, 인스턴스 내부의 인바운드 규칙을 포함한 방화벽은 그때그때 열어주기 바란다. 원래 간략한 과정은 이렇다. -> 이 중에서 필요한 부분만을 사용하면 된다! 1. Je..
[Docker] 컨테이너 인프라를 위한 DevOps 환경 구축-3.Docker volume(feat. 정보산업진흥원) 개념 설명 : 컨테이너에 생성되는 모든 파일은 컨테이너 레이어에 저장된다. 이 데이터들의 런타임은 컨테이너와 동일하다. 따라서 컨테이너가 종료되는 즉시 컨테이너에 생성된 파일들은 사라지게 되므로, 이 데이터를 영구적으로 저장하기 위해서는 볼륨을 반드시 사용해야 한다. 1) Bind Mount : docker 초기부터 사용한 방법. host의 특정 디렉토리와 컨테이너의 디렉토리를 연결하는 방식이다. 쉽게 사용할 수 있지만 docker에 의해 관리되는 것이 아니기 때문에 따로 관리하지 않으면 관리하기가 쉽지 않다. 또한 마찬가지 보안문제와 호스트 파일시스템에 대한 의존성 문제가 발생 할 수 있는 것이 단점이다. 2) Volume : v..
[Docker] 컨테이너 인프라를 위한 DevOps 환경 구축-2.Docker Command(feat. 정보산업진흥원) Image Download : 1) Docker hub를 통한 다운로드 -> hub.docker.com/ Docker Hub Docker Certified:Trusted & Supported Products Certified Containers provide ISV apps available as containers. Certified Plugins for networking and volumes in containers. Certified Infrastructure delivers an optimized and validated Docker platform for enterp hub.docker.com docker hu..
[Docker] 컨테이너 인프라를 위한 DevOps 환경 구축-1.개요와 설치(feat. 정보산업진흥원) 그동안 포스팅도 뜸했고, Docker를 독학으로 배웠어서 부족한 부분을 땜질 할 방법을 찾다가, 부산정보산업진흥원에서 무료로 docker 교육을 받게 되었다. 해당 포스팅은 교육과정 중 배운 내용을 개인적으로 정리하기 위함이다. (간단 주의) 가상화의 종류 : 서버 가상화, 네트워크 가상화, 스토리지 가상화, 컨테이너 가상화가 있다. 1) 서버 가상화 : 가장 일반적인 가상화 기술, 리소스 활용률을 높이고자 cpu나 memory를 나누어 사용하는 것. 2) 네트워크 가상화 : 물리적으로는 통합된 환경의 네트워크를 가상의 SW형태로 변환해 나누어 관리하는 것. 3) 스토리지 가상화 : 여러개의 물리 드라이브를 하나의 논리 드라이브처럼 사용하는 기술. 근래..
[ML/Lecture] Docker로 실습환경 구축 www.docker.com Empowering App Development for Developers | Docker Learn how Docker helps developers bring their ideas to life by conquering the complexity of app development. www.docker.com 이번에 'call for code'를 참여하면서 배운점은 Block-chain에 대한 아주 초보적인 기술적 이해, 리눅스 커널 명령어의 효용성과 더불어, docker를 통한 이미지,컨테이너 환경의 유용성이다. (ibm에서 소개하는 block0-chain tutorial 또한 로컬에서 도커를 통해 hyperledger fabric..
[Qwiklabs] Kubernetes in Google Cloud [ Continuous Delivery with Jenkins in Kubernetes Engine ] 아니 내가 이 귀찮은걸 왜 시작해가지고 [ Continuous Delivery with Jenkins in Kubernetes Engine ] www.jenkins.io Jenkins Jenkins – an open source automation server which enables developers around the world to reliably build, test, and deploy their software. www.jenkins.io Jenkins 는 CI (Continuous Integration) tool 이다. 이번 실습에는 kubernetes engine에서 jenkins로 어떻게 지속적인 delivery pipeline을 구축하는지를 실습해본다. gcp에서 jenkins를 사용..