본문 바로가기

반응형

IT 인프라

(15)
MySQL Aborted Connections 현상 운영중인 서버의 에러로그에 지속적으로 아래와 같은 경고 메시지가 남았다. [Warning] Aborted connection xxxxxxx to db: 'database' user: 'user' host: 'xxx.xxx.xxx.xxx' (Got an error reading communication packets) 원인 클라이언트가 정상적으로 연결되었지만 이후 부적절하게 또는 강제적으로 종료되었을 때 Aborted_clients 상태값의 카운트를 증가한 후 에러 로그에 남게 된다. 이때 에러 로그에 기록을 남기려면 --log-warnings 옵션을 활성화해야 한다. MySQL Client에서 Aborted_clients 상태값을 확인하니 다음과 같이 나왔..
Docker 이미지 용량을 줄이는 Tip FromLatest.io 사용하기 FromLatest에서 Dockerfile Lint를 하고, 이미지를 작게 할 수 있는 다양한 팁을 얻을 수 있다. https://www.fromlatest.io/#/ 더 작은 Base 이미지 사용하기 alpine 이미지를 사용하면 이미지 용량을 줄일 수 있다. DockerHub에서 이미지 태그에 alpine이 명시된 것들을 볼 수 있다. https://hub.docker.com/_/alpine/ Application De-Coupling 하기 하나의 컨테이너는 단 하나의 어플리케이션 / 용도로만 사용한다. (객체지향 원칙의 SRP와 같이) 한 이미지에 다수의 애플리케이션/컴포넌트가 들어있다면 이를 각각의 컨테이너로 나눈다. 이를 통해 이미지 사이즈 감소, 더 나은 확장..
나만의 Docker Compose Cheat Sheet Docker Compose 구성 파일 (docker-compose.yml) 일반적으로 어플리케이션은 여러 컴포넌트(웹 서버, 어플리케이션 서버, 캐시, DB 등)와 함께 구동된다. 또한 한 어플리케이션도 다수의 서비스로 분리하고, 이것들이 모여 하나의 어플리케이션으로 역할을 하기도 한다. 각각의 구성요소를 컨테이너로 만들어 개별로 운영하는 것은 매우 번거로울 것 이다. Docker Compose를 이용하면 여러 컨테이너를 일괄 관리하고, 설정하고, 의존성을 관리할 수 있다. Compose 정의 파일은 사용할 Docker Engine에 맞는 Compose File Format Version을 지정해야 한다. 호환되는 버전은 https://docs.docker.com/compose/compose-file/ ..
나만의 Dockerfile Cheat Sheet 명령어 키워드들은 대/소문자를 구분하지는 않지만, 관례적으로 대문자를 사용한다. 주석은 #을 사용한다. 기본 명령어 FROM Base Image를 지정한다. ### # 사용법 ### FROM [이미지명] FROM [이미지명]:[태그명] FROM [이미지명]@[다이제스트] ### # 사용 예시 ### FROM ubuntu:xenial RUN (이미지를 작성하기 위해 실행하는) 명령을 실행한다. ### # 사용법 ### RUN [실행하고 싶은 명령] ### # 사용 예시 : Shell 형식 # - /bin/sh -c를 사용하는 것과 동일 # - 기본 쉘을 변경하려면 SHELL 명령 사용 ### RUN apt-get install -y nginx ### # 사용 예시 : Exec 형식 # - 쉘을 경유하지 않..
나만의 Docker Cheat Sheet 초창기 Docker 명령어들은 docker --help 입력 시 그룹화 없이 쭉 나열해 보여줬다. 때문에 처음 봤을 때 보기 어려울 뿐만 아니라 내가 사용한 명령어임에도 불구하고 기억에 잘 남지 않았다. Docker 개발자들도 이를 인지했는지 Docker 1.13 버전부터 Management Commands라는 것을 발표했다. Docker Command가 제공하는 기능들을 conatiner, image, network, service, volume, system 등으로 Top-Level에서 분류하고, 각 하위 명령어가 관련 명령어들을 포함하는 기능이다. 기존 사용자를 위해 예정 명령어들도 그대로 유지하는 것 같다. 그러나 실제로 사용해보니 Management Commands를 사용한 지 얼마 안 되었음에..
일반 계정으로 docker 명령어 사용하기 콘솔에서 docker 명령어는 root 권한을 가진 사용자만 사용할 수 있습니다. 그래서 docker 명령어 실행시 항상 sudo를 붙여야 합니다. 만약 일반 계정으로 sudo를 붙이지 않고 docker 명령어를 실행하면 다음과 같은 메세지를 출력합니다. Cannot connect to the Docker daemon. Is the docker daemon running on this host? 그러나 docker 그룹을 생성한 후 일반 사용자를 포함하면 일반 계정도 sudo를 붙이지 않고 docker 명령어를 사용할 수 있습니다. $ sudo groupadd docker $ sudo usermod -aG docker ${USER} 또는 sudo gpasswd -a ${USER} docker
git-secret git-secret 이란? 비밀번호, Secret Key 값과 같이 보호되야 하는 데이터가 포함된 파일을 그냥 Git Commit & Push 하면 개인적인 데이터가 노출되는 문제점이 발생합니다. git-secret 을 사용하면 개인적인 데이터가 포함된 파일을 암호화 한 후에 Git 저장소에 저장함으로써 문제점을 해결할 수 있습니다. git-secret 은 Git 저장소에 개인적인 데이터를 gpg 를 기반으로 암호화하여 저장하는 Bash Tool 입니다. 즉, 암호화 대상 파일은 Public Key로 암호화하고, 복호화는 Private Key를 소유한 사용자만 할 수 있습니다. 이를 통해 실수로 비밀번호, Secret Key와 같이 노출되면 안되는 데이터를 그대로 Git 저장소에 업로드하는 실수를 막을 ..

반응형