일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- c# winform
- 유니티
- 구조체
- C# delegate
- 다트 언어
- Python
- Data Structure
- C언어 포인터
- c# 윈폼
- dart 언어
- 플러터
- git
- HTML
- Houdini
- gitlab
- C++
- 포인터
- c# 추상 클래스
- Algorithm
- github
- c언어
- Unity
- 깃
- c#
- jupyter
- jupyter lab
- Flutter
- docker
- 도커
- vim
- Today
- Total
목록DevOps (40)
nomad-programmer
nvidia 도커 컨테이너 사용을 위한 패키지와 설정도 모두 하였는데... 다음과 같은 에러가 발생했다.도커가 nvidia 설정이 잘 되었는지 테스트할 겸 아래와 같이 명령을 실행했다. docker run --gpus all nvidia/cuda:11.5.2-base-ubuntu20.04 nvidia-smi그러나 "Failed to initialize NVML: Unknown Error" 에러가 나타났다... 어쩐지... ai가 응답하는 것이 영... 시원찮았다. GPU가 아닌 CPU로만 응답을 했었구나...아...Solutionsudo vim /etc/nvidia-container-runtime/config.toml위의 명령을 통해 config.toml 파일에 접근한다. 그 후 다음과 같이 변경해주자...
Docker Hub (https://app.docker.com/) 에 push & pull 을 하려면, 먼저 로그인을 해야 한다. 따라서 다음과 같이 로그인을 진행할 것이다.$ docker login위의 명령을 실행하면 ID & Password를 입력하라고 나온다. 계정 정보가 맞다면 로그인이 될텐데.. 그러면, `$HOME/.docker/config.json` 파일에 해당 비밀번호가 base64로 인코딩 돼어 다음과 같이 입력된다. { "auths" { "https://index.docker.io/v1/: { "author": "" } }}이곳에 비밀번호가 자동으로 들어가는 이유는, 다음 login할 때 조금 더 편하게 로그인하기 위함이다. 이것이 장점이 될 수 있지만 단점이 될..
location 경로 매칭하는 방식에는 크게 "=", "~" 이 두가지가 있다.정확한 매칭 (=)location = /api/ { # 요청 처리}location = /api/ { ... } 이것은 정확히 "/api/" 경로와 일치하는 요청만을 처리한다.즉, "/api/" 경로에 대한 요청만 이 블록에 의해 처리된다. 예를 들어, /api/, /api/?query=param 등이 해당된다./api/v5 또는 /api/something 과 같은 하위 경로에는 적용되지 않는다.정규 표현식 매칭 (~)location ~ /api/ { # 요청 처리}location ~ /api/ { ... } 이것은 "/api/" 로 시작하는 경로를 정규 표현식으로 매칭한다.예를 들어, /api/, /api/v5, /..
메일 서버를 운용하려면 DNS부터 설정해야 한다. DNS 설정은 아래의 블로그에 잘 정리되어 있어서 링크를 걸었다. https://gumu.kr/blog/185/mailplus2/ 시놀로지 NAS, 메일서버 구현하기 2탄(도메인DNS, SPF, DKIM, DMARC 설정) - Gumu's treasure box Read in: English 1탄에서는 Synology NAS내에 Mail Plus (1) 패키지 설치 (2) 패키지 설정을 다루었다. 2탄에서는 Mail Plus를 사용하기 위한 도메인 설정을 해보도록 한다. 먼저, 도메인과 연결할 실제 NAS의 외 gumu.kr 아래의 블로그가 더 잘 되어있는 듯! https://www.wsgvet.com/home/677 mail server https://..
Portainer는 Docker와 Kubernetes 관리를 WEB GUI에서 쉽게 관리할 수 있도록 도와주는 오픈 소스이다. https://github.com/portainer/portainer GitHub - portainer/portainer: Making Docker and Kubernetes management easy. Making Docker and Kubernetes management easy. Contribute to portainer/portainer development by creating an account on GitHub. github.com Portainer를 설치하기 앞서, Docker를 설치해야 한다. Docker 설치 개발사에서 알려주는 설치법이 가장 안정하니 아래의 ..
Docker Daemon의 옵션 및 기본 옵션 docker [옵션] --api-enable-cors=false : API를 사용할 때 CORS(Cross-origin resource sharing)를 활성화한다. -b, --bridge="" : 미리 만들어 놓은 네트워크 브릿지 인터페이스를 사용한다. none을 설정하면 컨테이너에서 네트워크를 사용하지 않는다. --bip="" : CIDR 표시법으로 docker0의 IP 대역을 설정한다. -b 옵션과는 함께 사용할 수 없다. --bit="192.168.0.1/24" -D, --debug=false : 디버그 모드를 활성화한다. -d, --daemon=false : 데몬 모드로 실행한다. --dns=[ ] : docker가 사용할 DNS 서버를 설정한다. ..
시스템은 개발만 하면 끝나는 그런 것이 아니다. 시스템 릴리즈 후에도 리소스 감시나 데이터의 백업, 장애 감시, 복구 대응 등 사용자가 쾌적하게 시스템을 이용할 수 있도록 시스템을 운용해야 한다. 시스템 개발 및 구축은 프로젝트가 발족한 후부터 실제 릴리즈를 향해 가는 작업이 메인이 되지만, 시스템 운용은 실제 릴리즈 이후 시스템이 사용자에게 서비스를 완전히 종료할 때까지 계속되는 작업이다. 시스템을 장기 가동하는 경우 운용의 좋고 나쁨이 시스템의 서비스 레벨을 정한다고 해도 과언이 아니다. 또한 온프레미스 환경과 클라우드 환경에서는 시스템 운용의 개념이나 수행해야 할 작업이 다르다. 가용성 관리 시스템에 있어서 가용성이란 시스템을 계속해서 가동시킬 수 있는 능력을 말한다. 가용성이 높은 시스템을 만들기..
이메일의 정기적인 일괄 송신이나 일별/주별/월별 집계 처리 등과 같은 배치 잡을 Kubernetes 클러스터에서 실행하고 싶을 때는 'CronJob'을 사용한다. CronJob은 애플리케이션의 실행 타이밍을 설정할 수 있다. 리눅스의 crontab 설정과 똑같다고 생각하면 된다. CronJob을 작동시키기 위한 정의 파일은 [kind]를 'CronJob' 으로 설정하고, [schedule]에 잡의 실행 타이밍을 설정한다. Schedule의 지정 방법은 다음과 같은 서식으로, Linux의 cron과 똑같다. // schedule의 서식 schedule: " '분' '시' '일' '월' '요일' " 설정 가능한 수치 설정 항목 값 분 0 - 59 시 0 - 23 일 1 - 31 월 1 - 12 요일 0=일,..
쿠버네트스란? kubernetes.io/ko/docs/concepts/overview/what-is-kubernetes/ 쿠버네티스란 무엇인가? 쿠버네티스는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식할 수 있고, 확장 가능한 오픈소스 플랫폼으로, 선언적 구성과 자동화를 모두 지원한다. 쿠버네티스는 크고 빠르게 성장하 kubernetes.io Kubernetes는 마스터, 데이터 스토어, 노드가 서로 협력하면서 컨테이너의 실행 환경을 관리하는데, 그 안에서 몇 가지 컴포넌트가 작동한다. 1. 마스터 (Master) 마스터는 다음과 같은 컴포넌트로 구성된다. API Server Kubernetes의 리소스 정보를 관리하기 위한 프론트엔드 REST API이다. 각 컴포넌트로부터 리소스 정보를 받아 데..
Kubernetes는 여러 개의 호스트를 하나로 묶어 docker를 이용하기 위한 오케스트레이션 툴이다. 분산 환경에서 '마치 한 대의 컴퓨터' 처럼 투과적으로 컨테이너에 액세스할 수 있다. 더욱이 시스템 이용자로부터 오는 부하의 급증에 대해서도 유연하게 스케일하는 장치나 여러 개의 컨테이너를 효율적으로 통합 관리하는 장치도 있다. 쿠버네티스의 주요 기능은 다음과 같다. 여러 서버들에서의 컨테이너 관리 컨테이너 간 네트워크 관리 컨테이너의 부하분산 컨테이너의 감시 무정지로 업데이트 Kubernetes의 서버 구성 Kubernetes의 전체 이미지는 다음과 같은데, 분산된 서버들이 협력하면서 각각의 처리를 수행한다. 이러한 덩어리를 "Kubernetes Cluster" 라고 한다. 마스터 서버 (Kuber..
docker 컨테이너는 개발 환경과 같이 한 대의 머신에서 가동시킬 때는 간편히 도입할 수 있다. 하지만 멀티-호스트로 구성된 실제 환경을 클러스터 구성으로 가동시키려면 컨테이너의 시작 및 정지와 같은 조작뿐만 아니라 호스트 간의 네트워크 연결이나 소토리지 관리, 컨테이너를 어떤 호스트에서 가동시킬지와 같은 스케줄링 기능이 필요하다. 더욱이 컨테이너가 정상적으로 작동하고 있는지의 대한 여부를 감시할 장치도 필요하다. 이러한 기능을 갖추고 컨테이너를 통합 관리할 수 있는 툴을 컨테이너 오케스트레이션 툴이라고 한다. 대표적인 컨테이너 오케스트레이션 툴이 무엇이 있는지 알아보자. Kubernetes kubernetes는 Google의 엔지니어를 중심으로 하는 커뮤니티에서 개발이 진행되고 있는 오픈소스 컨테이너..
Docker Machine의 기본 명령 docker-machine은 Docker for Mac 또는 Docker for Windows에 미리 설치되어 있다. Linux에서는 별로도 설치해야 한다. 2020/12/06 - [DevOps/Docker] - [Docker] 멀티호스트 환경에서 컨테이너 관리 다음의 명령을 실행하면 docker-machine의 버전 정보를 확인할 수 있다. $ docker-machine --version docker-machine 명령의 주요 서브 명령은 다음과 같다. 서브 명령 설명 create 실행 환경 작성 ls 실행 환경 목록 표시 status 실행 환경 상태 표시 url 실행 환경 URL 표시 ssh 실행 환경에 대한 SSH 연결 start 실행 환경 시작 stop 실행..
Django 서버와 DB 서버가 있다고 가정해보자. 이 서버들의 의존성은 다음과 같다. Django 서버는 DB 서버를 내부적으로 사용하기 때문에 DB 서버가 온전하게 구동된 후 Django 서버에서 DB서버를 사용해야 한다. 그런데 docker-compose 위의 서버 구성을 작성하여 실행하게되면 DB서버가 빨리 구동되면 문제가 없겠지만 DB서버가 구동되고 있는데 Django서버가 구동되면 문제가 발생한다. 그렇다고 DB서버를 먼저 실행한 후 온전히 구동되기를 기다렸다가 Django 서버를 구동시키는 수작업은 너무 귀찮을 일이다. 이것을 해결할 수 있는 방법이 있다. 그것은 아래의 스크립트를 이용하는 것이다. github.com/vishnubob/wait-for-it vishnubob/wait-for-..
버전 관리 서버를 private 하게 내부에서 관리할 필요가 있다는 판단하여 docker를 가지고 GitLab 서버를 구축하였다. 구축 과정을 블로그에 남긴다. DB서버를 사용하는 내부 서버가 있다. 그곳에다 GitLab서버를 구축하려고하였다. 그래서 다른것 하나 생각치않고 docker부터 떠올렸다. 이유는 해당 서버에 DB서버가 구축되어 있기 때문에 GitLab서버를 그대로 설치해버리면 기존에 사용하던 시스템이 망가질 우려가 있었기 때문이다. 따라서 기존의 시스템에 전혀 영향이 가지 않게끔 도커를 이용하여 GitLab 서버를 설치하였다. hub.docker.com/r/gitlab/gitlab-ce Docker Hub hub.docker.com GitLab 서버 설치 gitlab 서버 설치에 사용한 이미..
Docker에서 작동하는 웹 애플리케이션을 제품 환경에서 운용할 때는 애플리케이션이 사양대로 올바르게 작동할 뿐만 아니라 서비스 이용자가 항상 이용할 수 있도록 운용 관리를 해야 한다. 이러한 컨테이너 기반은 보통 멀티호스트 환경으로 구축한다. 멀티호스트 환경에서 컨테이너 관리의 개요 웹 시스템의 실행 환경은 웹 서버, 프록시 서버, 데이터 스토어 등 역할이 다른 여러 개의 서버 기능이 연계되어 작동한다. 제품 환경에서 이용자에게 서비스를 제공할 때는 여러 개의 물리 서버나 여러 개의 가상 머신(VM)으로 구성된 멀티호스트 환경으로 서비스를 제공하는 것이 일반적이다. 멀티호스트 환경과 클러스터링 하나의 호스트 머신에서 Docker를 설치하고 그 위에서 몇 개의 컨테이너를 가동시켜 서버를 작동시켰다고 가정..
Docker Compose의 버전 확인 Docker Compose는 Docker for Mac 또는 Docker for Windows에 미리 설치되어 있다. Linux는 아래의 링크를 통해 설치할 수 있다. docs.docker.com/compose/install/ Install Docker Compose docs.docker.com // Docker Compose 버전 확인 $ docker-compose --version compose 정의 파일의 지정 현재 디렉토리 안에 docker-compose.yml 파일이 없는 상태에서 docker-compose up 명령을 실행하면 다음과 같은 에러를 확인할 수 있다. $ docker-compose up ERROR: Can't find a suitable co..
여러 컨테이너를 실행시킬 때 컨테이너마다 구성이나 시작/정지를 관리하자면 운용이 번잡해진다. 여러 컨테이너를 일괄적으로 관리할 수 있는 'Docker Compose' 의 구성 관리 파일인 'docker-compose.yml' 을 작성하는 방법에 대해 알아보자. docker-compose.yml 파일의 개요 docker-compose는 'docker-compose.yml' 이라는 Compose 정의 파일에 시스템 안에서 가동하는 여러 서버들의 구성을 모아서 정의한다. 이 정의 파일은 YAML 형식으로 기술한다. YAML YAML은 구조화된 데이터를 표현하기 위한 데이터 포맷이다. YAML은 Python과 같이 들여쓰기로 데이터의 계층 구조를 나타낸다. 들여쓰기는 탭이 아닌 스페이스를 사용한다. 누가 써도 ..
Docker에서 움직이는 웹 애플리케이션을 제품 환경에서 운용할 때는 애플리케이션 서버, 로그 서버, 프록시 서버 등과 같이 여러 개의 컨테이너들을 연계하여 작동시킨다. 여러 컨테이너 관리 웹 시스템의 실행 환경은 웹 서버, 프록시 서버 등과 같이 역할이 다른 여러 개의 서버를 연계하여 작동시키는 것이 일반적이다. 그래서 Docker에서 여러 개의 컨테이너를 연계시켜 운용 관리할 때 알아두어야 할 기초 지식에 대해 설명한다. 웹 3계층 시스템 아키텍처 애플리케이션을 가동시키려면 여러 개의 서버에 기능과 역할을 분할하여 인프라의 전체 구성을 정한다. 이것을 인프라 아키텍처라고 한다. 아키텍처는 우리말로 '설계 사상' 이라는 뜻이다. 대규모 웹 시스템의 경우 몇 개의 서브 시스템/기능으로 나누어 시스템을 개..
Docker 이미지는 인프라 구성 요소에서 래플리케이션의 개발 환경 및 실행 모듈도 포함하기 때문에 용량이 큰 것도 있다. 이런 이미지를 모두 개발용 클라이언트 PC나 온프레미스 환경에서 관리하려면 비용과 시간이 많이 든다. 퍼블릭 클라우드에는 Docker 이미지를 프라이빗으로 관리할 수 있는 매니지드 서비스가 제공되므로 이것을 이용하는 것이 좋다. Google Cloud Platform (GCP) 은 Docker 이미지를 프라이빗으로 관리할 수 있는 'Google Container Registry' 를 제공하고 있다. 이 서비스는 GCP의 오브젝트 스토리지 서비스인 'Google Cloud Storage' 를 데이터 저장 장소로 사용하고 있다. Google Container Registry 를 사용하여..
Docker 이미지에는 인터넷상에 공개하고 싶지 않은 정보가 포함되는 경우도 있다. 이럴 때 하나의 방법으로 Docker 이미지 관리를 위한 저장소를 로컬 환경에 구축할 수 있다. Docker 데이터 저장 경로 변경 (선택 사항) docker 로컬 저장소 주의할 점 private 도커 저장소에서는 Docker 이미지를 영구 데이터로 관리할 필요가 있다는 점이다. Docker에서는 호스트 머신에 볼륨을 공유함으로써 영구 데이터를 일원 관리할 수 있다. 하지만 이 데이터를 관리하려면 신뢰성이 높고 용량이 충분한 스토리지를 마련해야 한다. 또한 만일의 장애에 대비해 다중화 구성을 검토할 필요가 있으며, 정기적으로 데이터 백업이나 서버 감시 등과 같은 운용도 필요하다. 로컬 환경에 Docker 저장소를 구축하기..