✔️Docker 13

Windows 11 WSL2 및 Ubuntu 22.04에서 GPU 활용 Docker 실행 환경 세팅

찾아본 대부분의 자료와 공식 문서가 영어로 되어있었기도 했고, 스위스 엔지니어에게 해당 방법을 알려줘야 했기 때문에 정리해 본 것이라 중간 중간 영어로 적힌 부분이 있다. Environment Ubuntu 22-04 혹은 Window WSL(Windows Subsystems for Linux) wsl 설치 방법 $ wsl --list --online $ wsl --install -d Ubuntu-22.04 Prerequisite Check Hardware 아래의 모든 작업을 진행하기 전에 정말 기본적이지만 GPU 하드웨어가 있는지, 또한 사용가능한 형태로 설치되어있는지 확인해야 한다. 시스템에 어떤 그래픽 카드가 설치되어있는지 확인하려면 다음과 같은 명령어를 사용한다. $ sudo lshw -C disp..

Dev/DevOps, Infra 2023.10.26

[Kubernetes] 쿠버네티스 Intro. 필요성, 구성, 동작 방식

대세는 쿠버네티스 강의와 Kubernetes와 Docker로 한 번에 끝내는 컨테이너 기반 MSA를 참고하여 공부한 바를 정리하였습니다. 1. 쿠버네티스 공부를 시작하는 이유 내가 해온 일 들 중 서비스 운영에 대해 고민했던 시기들을 그려본 것이다. Docker를 이용한 서비스 배포 과정에 CI/CD와 service alert 기능을 추가한 이후에도, 여러 서버에 container를 효과적으로 모니터링하고 관리하는데 어려움이 있었다. 예를 들면, 서버 health check는 정상이지만 그 안에 container가 지속적으로 down되는 문제가 발생했을 때 이를 알아차리기란 쉽지 않다. 그리고 많은 연산에 리소스가 들어가는 서비스의 경우 리소스를 효율적으로 관리하고 분배하도록 인프라를 직접 관리하는 것도..

Dev/DevOps, Infra 2022.03.04

[Docker, AWS] Docker log를 AWS Cloudwatch에서 보기

EC2에서 docker를 실행시키는 경우 container의 log가 EC2 자체에 저장된다. 즉, container의 로그는 /var/lib/docker/containers/[contianer ID]/container-cached.log 에 모이게 되는데, 이렇게 되면 instance에 직접 들어가서 docker logs [container ID] 로 확인하거나 저 파일에 들어가서 로그를 하나하나 확인해야 한다. 그래서 효율적인 로그 관리를 위해서는 container의 log를 cloudwatch로 실시간 export 하는 과정이 필요하다. 그리고 추가적으로 Cloudwatch에는 Log groups이 있고 그 안에 Log Streams이 있고 각 stream안에 log들이 모이게 되는데 이 때 Log..

Dev/DevOps, Infra 2021.10.22

211021) docker-compose --exit-code-from

name: ML application unittest on: push: branches: [test] jobs: test: runs-on: [self-hosted, gpu] steps: - uses: actions/checkout@v2 - name: ML inference code Unittest run: docker-compose -f docker-compose-unittest.yml up 이런 github actions workflow script가 있다고 하자. 그런데 docker-compose 을 통해 실행된 unittest가 실패해서 FAILED (errors=1) [container] exited with code 1 으로 실행이 종료되어도 docker-compose가 정상적으로 작동하였다면 ..

211014) Docker multi-stage build

https://www.hahwul.com/2020/10/07/docker-multistage-build-for-optimazation/ Docker multi-stage build를 통해 이미지 경량화하기 Why? 보통 베이스가 되는 도커 이미지는 생각보다 큰 용량을 가지고 있습니다. 거기에 의존성으로 추가적인 도구를 설치하고, 빌드하게 되면 생각보다 엄청 큰 용량으로 탄생합니다. 이런 경우에 www.hahwul.com https://docs.docker.com/develop/develop-images/multistage-build/ Use multi-stage builds docs.docker.com

[Milestone 그 이후] Hosting the Docker container on Heroku for TFserving

we built deep learning model classifies pills images, and then deploy the model using TFserving with Docker. ([Milestone 그 이후] Tensorflow Model Serving) In this post, Our main focus will be on model deployment on Heroku using TFserving with Docker. Why Docker ? Because Docker containers encapsulate everything an application needs to run (and only those things), they allow applications to be shut..

[Docker] Docker Compose

Docker Compose란 다중 컨테이너 도커 애플리케이션을 정의하고 실행하기 위한 도구 Docker Compose를 사용해서 이러한 구조의 애플리케이션을 정의하고 실행해보고자 한다. 1. Redis 1) Redis(REmote Dictionary Server)는 메모리 기반의 키-값 구조 데이터 관리 시스템이며, 모든 데이터를 메모리에 저장하고 빠르게 조회할 수 있는 비관계형 데이터베이스(NoSql)이다. 2) Redis를 쓰는 이유는 - 데이터를 메모리에 저장해주는 특성상 Mysql과 같은 데이터베이스에 저장하는 것 보다 데이터를 불러 올 때 훨씬 빠르게 처리 할 수가 있다. - 메모리에 저장하지만 영속적으로 보관이 가능하며 서버를 재부팅해도 데이터를 유지 할 수 있다는 장점이 있다. 2. Node..

Dev/DevOps, Infra 2021.01.28

[Docker] 도커 환경에서 실행되는 Nodejs 애플리케이션

// index.js const express = require('express') const PORT = 8080; const HOST = '0.0.0.0'; const app = express() app.get('/', (req, res =>{ res.send('Hello World') } app.listen(PORT, HOST); console.log(`Running on http://${HOST}:${PORT}`) 이런 간단한 nodejs 애플리케이션이 도커환경에서 실행될 수 있도록 해보자. 즉, nodejs 앱을 만든 후, 그를 실행하기 위한 도커 이미지 생성 후 컨테이너에서 앱이 실행되도록 해볼 것이다. 1. 먼저 Node.js 앱을 만든다. // index.js const express = ..

Dev/DevOps, Infra 2021.01.28

[Docker] 도커 이미지 생성

도커 이미지란 도커 컨테이너를 만들기 위해 필요한 설정이나 종속성들을 가지는 소프트웨어 패키지이다. 참고한 한 블로그에서는 이미지를 붕어빵 도면, 컨테이너는 이 붕어빵 도면을 통해 만든 붕어빵 틀로 비유한다. 그러면 이 붕어빵 틀로 만든 붕어빵들은 어떤 환경이든, 우리나라에서 만들어지든, 미국에서 만들어지든,.. 같은 규격으로 동일하게 만들어질 것이다. 이러한 도커 이미지는 [Docker] 도커의 기본 이해에서 에서 적었듯이 이미 다른 사람이 만들어 놓은 이미지를 도커 허브에서 pull받아서 이용할 수도 있고, 직접 도커 이미지를 만들 수도 있고, 이 직접 만든 이미지를 도커 허브에 업로드 할 수도 있다. 나만의 도커 이미지를 어떻게 생성할 수 있을까? 1. 우선 도커 이미지를 만들기 위한 설정 파일인 ..

Dev/DevOps, Infra 2021.01.28

[Docker] 기본 도커 클라이언트 명령어 알아보기

1. 도커 이미지 내부에 파일 시스템 구조를 보는 명령어 $ docker run [이미지 이름] ls docker: 도커 Client 언급 run: 컨테이너 생성 및 실행 [이미지 이름]: 해당 컨테이너를 생성하기 위한 이미지 ls: 현재 디렉터리의 파일 리스트를 출력 ※ 현재 ls가 있는 이 4번째 자리는 원래 이미지가 가지고 있는 시작 명령어를 무시하고 이 4번째 명령어를 실행하게 한다. ※ 위의 명령어를 입력했을 때 excutable file not found. 라는 에러가 발생할 수도 있다. 이는 이미지 파일 스냅샷에 ls를 사용가능하게 하는 파일이 없기 때문이다. 2. 현재 실행중인 컨테이너들을 나열하는 명령어 $ docker ps docker: 도커 Client 언급 ps: process st..

Dev/DevOps, Infra 2021.01.27