Docker 15

그라파나를 컨테이너로 구축할 때, data source를 코드로 구성하는 방법

이 글은 그라파나를 컨테이너(예: docker, 쿠버네티스)로 구축할 때, data source를 코드로 구성하는 방법을 설명합니다. data source란?grafana에 연결할 데이터베이스 목록을 data source라고 부릅니다. 예를 들어 아래 그림에서는 그라파나에 influxDB를 연결했습니다. data source 설정방법data source의 설정은 datasource.yml에서 합니다. datasource.yml파일은 /etc/grafana/provisioning/datasources/datasource.yml 경로에 위치합니다. 아래 예제는 influxdb를 추가하기 위한 설정입니다.apiVersion: 1datasources:- name: InfluxDB type: influxdb..

Mac OS에서 Docker Desktop 악성코드 오탐지 문제 해결

1. 개요2025년 1.1 새해가 되자, macOS의 Docker Desktop  이 악성코드로 오탐지 되었습니다.Malware Blockedcom.docker.vmnetd was not opened because it contains malware 1.2.  문제원인Docker desktop 자체가 악성코드가 아니지만, 인증서 만료로 인해 발생한 오탐지되었습니다. macOS desktop은 무결성과 신뢰성을 보장하기 위해 디지털 서명과 인증서 체인 검증을 수행합니다. Docker Desktop 2024년 버전에서는 com.docker.vmnetd 파일이 유효 기간이 만료된 인증서로 서명되어 있었습니다애플 개발자 페이지에 방문하면 인증서 발급 절차가 있습니다. 1.3.  인증서 검사codesign, op..

chroot - 컨테이너는 어떻게 파일을 실행할까?

이 글을 이해하기 위해 mount namespace이해가 필요합니다. 저의 이전 글을 참고해주세요. 1. 최소 파일을 갖는 컨테이너컨테이너의 장점은 애플리케이션 실행에 필요한 최소 파일과 라이브러리를 관리합니다. 예를 들어 자바 8을 실행하는 컨테이너는 자바8실행파일과 자바8에 관련된 라이브러리가 있습니다. 자바11을 실행하는 컨테이너도 자바11실행파일과 자바11에 관련된 라이브러리가 있습니다. 서버에서 자바 8과 자바11을 실행한다면, 자바8과 11 실행파일 모두 가지고 있어야되고 관련 라이브러리를 설치해야 합니다. 최악의 경우 라이브러리 충돌로 인해 설치가 안되는 슬픈상황이 발생합니다. 2. 컨테이너가 개별적으로 최소 파일을 가질 수 있는 이유이전 글에서 설명한 것처럼 컨테이너는mount namesp..

linux의 mount namespace

1. mount namespace이란?mount namespace는 파일 시스템 마운트(mount)와 언마운트(umount) 작업을 격리할 수 있는 전용 공간을 생성합니다. 한 namespace에서 수행된 mount와 umount 작업은 다른 namespace에 영향을 미치지 않습니다. 예를 들어, A mount namespace에서 생성된 /test 마운트 포인트는 B mount namespace에서는 존재하지 않습니다. 왜냐하면 이 두 namespace는 서로 다른 파일 시스템 마운트 환경을 사용하기 때문입니다. 2. 컨테이너 관점에서 바라보는 mount namespace 역할컨테이너에서 mount namespace의 역할은 각 컨테이너가 자기만의 파일 시스템 환경을 가지도록 하는 것입니다. mou..

harbor저장소에 docker login할 때 발생하는 오류

harbor robot accountharbor저장소는 robot account라는 계정이 존재합니다. robot account는 "robot$name"형식으로 계정이 생성됩니다. docker login호환 문제docker login으로 harbor저장소를 로그인 할 때, robot account는 에러가 발생합니다. 에러메세지는 아래와 같습니다.msg="error authorizing context: authorization token required"  에러가 생기는 이유는 계정 이름에 특수문자 '$'가 있기 때문인데요. '$'를 회피하기 위해 따옴표(quote)를 계정으로 감싸주면 됩니다.docker login -u '' -p '' 참고자료github issue: https://github.com..

로컬 docker build&push 파이프라인 개선

개요 오늘 일을 하다가 우연히 아이디어가 떠올라 불편한 로직을 변경했습니다. docker-compose명령어인 build와 push를 사용하여 행위를 명시적으로 표현할 수 있어. 쉘 스크립트에 비해 의도를 명확하게 했습니다. # 변경 전 /bin/bash deploy.sh # 변경 후 docker-compose build docker-compose push 상세내용 로컬에서 약 40개의 dockerfile을 build하고 push 하는 간단한 쉘 스크립트가 있었습니다. 각 dockerfile이 위치한 경로가 있어 반복문으로 docker build를 수행하는 형태였습니다. TARGETS=" dir1 dir2 dir3 " for target in ${TARGETS}: do docker build -t IMA..

회고모음 2022.12.26

Dockerfile Multi Stage

안녕하세요. 이 글은 Dockerfile Multi Sstage(다단계 빌드)에 대해 설명합니다. 영상: https://youtu.be/RyildWeQ5rI 1. Multi Stage 활용사례 Multi Stage가 무엇인이 살펴보기전에 활용사례부터 볼게요! 활용사례부터 보면 나도 써봐야겠다는 마음이 들것같아서 글 도입에 소개하고자 합니다. 1.1 도커 이미지 크기 줄이기 가장 많이 활용하는 사례는 도커이미지 줄이기입니다. 모든 도커 이미지를 줄일 수 없고 빌드 단계가 있는 도커 이미지 등 단계가 분리되어 있는 Dockerfile만 적용가능합니다. 아래 예제는 Multi Stage를 사용했을 경우 도커 이미지 크기가 얼마나 줄었는지 보여주는 예입니다. 여기서 잠깐! 왜 도커 이미지 크기를 줄여야할 까요?..