목록DevOps & Infra/Docker (19)
오늘도 한 뼘 더
1. docker 그룹 확인하기 docker 그룹 확인$ cat /etc/group | grep -i docker docker:x:221:root 아무 결과도 나오지 않는다면 docker 그룹이 없는 것이기 때문에 docker 그룹을 생성해줘야 한다.$ sudo groupadd docker$ sudo systemctl restart docker 2. 사용자 계정을 docker 그룹에 추가$ sudo usermod -aG docker [user] -G 옵션사용자 계정의 소속 그룹을 변경하는 데 사용하는 옵션여러 그룹을 지정할 때는 , 로 구분한다 -a 옵션사용자 계정을 변경하지 않고 추가하는 옵션 3. 사용자 계정이 잘 추가되었는지 확인$ id -a [user]> uid=1001(user) gid=100..
# Docker stats Docker 컨테이너의 사용량을 확인하고 싶다. 이때 Docker stats를 사용하면 CPU, 메모리 등을 확인할 수 있다. docker [container] stats {container name} CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 12dbewgewt1 name 1.21% 87.58MiB / 1.892GiB 4.52% 72.7MB / 3.2MB 126MB / 391MB 8 Container ID : 컨테이너 아이디 Name : 컨테이너 이름 CPU : CPU 사용률 Mem Usage / Limit : 메모리 사용량 / 컨테이너에서 사용 가능한 메모리 제한량 Mem : 메모리 사용량 ..
# 문제 Docker Image를 빌드하는데 sending build context to Docker daemon에 찍히는 수가 5GB가 넘어가고 있었다. 그래서 일단은 진행 중인 빌드를 중지시키고 해당 내용에 대해 검색해 보았다. # 원인 도커가 빌드를 할 때 해당 디렉터리의 모든 콘텐츠를 불러와 빌드를 하기 때문에, 루트 디렉터리에서 실행을 하게 되면 이런 경우가 발생한다고 한다. Docker 공식문서에도 루트 디렉토리는 피하라고 되어있었다. 실제로 루트 디렉토리에 디렉터리를 만들어서 그 안에서 실행했는데 그게 원인이었던 것 같다. # 해결 방법 루트 디렉토리가 아닌 home 디렉터리에 작업용 디렉터리를 만들어서 그 안에서 Dockefile을 복사해 주었다. 복사해 준 Dockerfile로 Docke..
# 배경 2023.01.16 - [DevOps & Infra/Docker] - [Docker] Dockerfile 이용해 wkhtmltopdf 설치하기 [Docker] Dockerfile 이용해 wkhtmltopdf 설치하기 # 배경 html파일을 pdf로 변환해 주는 `wkhtmltopdf` 명령어를 사용하기 위해서 Docker Container 내부에 wkhtmltopdf를 설치해야 한다. 직접 설치를 하는 방법도 있지만, 직접 설치를 하면 Docker 컨테이너를 배 baekji919.tistory.com wkthmltopdf를 사용하여 html을 pdf로 변경하는 코드가 있는데 Dockerfile에 해당 패키지를 설치하는 명령어를 진행한 뒤 한글이 깨지는 문제가 발생하였다. 한글 폰트를 적용하기 위..
# 배경 html파일을 pdf로 변환해 주는 `wkhtmltopdf` 명령어를 사용하기 위해서 Docker Container 내부에 wkhtmltopdf를 설치해야 한다. 직접 설치를 하는 방법도 있지만, 직접 설치를 하면 Docker 컨테이너를 배포할 때마다 설치를 해줘야 하기 때문에 Dockerfile에 설치 명령어를 작성하여 Docker 컨테이너가 올라갈 때마다 설치가 될 수 있도록 해야 한다. # 기존의 Dockerfile 변경 기존의 Dockerfile은 alpine 환경으로 올라가도록 작성되어 있었다. 근데 alpine 3.14버전 이상부터 wkhtmltopdf을 지원하지 않아 alpine이 아닌 ubuntu를 사용해야 했다. # Dockerfile 작성 FROM golang:1.19 AS b..
# 배경 $ curl -X GET {registry_url}/v2/_cataglog Docker Registry에 올라간 이미지를 삭제해야 하는데 이미지 조회가 되지 않고 301 에러가 발생 # 원인 및 해결 방법 Registry를 조회할 때 https로는 조회가 되지 않는 문제이다. url이 https로 리다이렉트 되는 설정을 해제하거나 로컬 주소에서 5000번 포트로 보는 방법이 있다. $ curl -X GET localhost:5000/v2/_catalog
# 배경 갑자기 운영 중이던 개발계가 502 Bad Gateway가 뜨면서 동작되지 않았다. 확인을 해보니 mysql docker가 멈췄는데 시작을 하려고 하니 다음과 같은 에러 메시지가 떴다. write /var/lib/docker/image/overlay2/~ no space left on device # 해결 방법 서버 스토리지를 늘려 해결하려고 했는데 스토리지를 늘리는 명령어조차 여유 공간이 없어 작동이 되지 않았다. 결국은 불필요한 파일을 삭제해야 했다. 불필요한 도커 관련 파일 삭제하기 prune 명령어 사용방법을 확인 $ docker system prune --help 불필요한 volume을 삭제하고자 하여 다음과 같은 명령어를 실행하였다. $ docker system prune --all ..
# 배경 사설 Docker Registry의 이미지를 누구나 사용할 수 없도록 아이디, 비밀번호를 설정하고자 한다. # Htpasswd 설정 1. id, pw기반으로 사용하기 위해서는 htpasswd를 사용할 수 있어야한다. 이를 위한 디렉토리를 생성 $ mkdir -p /mnt/docker/auth 2. htpasswd파일을 생성한다 $ docker run --entrypoint htpasswd registry:latest -Bbn {user} {PW} > /mnt/docker/auth/htpasswd 이렇게 진행을 했을 때 htpasswd에 대한 에러가 났다. 확인을 하니 registry 2.7이상부터는 registry 이미지에 htpasswd가 포함되지 않는다고 한다. 3. htpasswd를 직접 ..
Docker Registry에 주소를 지정하고 이 주소를 사용하기 위해서 https 설정(SSL 설정)을 해줘야 한다. 이를 진행하는 방법은 두 가지 (1) certbot을 사용 (2) openssl을 사용한다. [1] certbot 사용 실제 사용 방법 # Nginx 설정 2022.01.17 - [DevOps & Infra/Nginx] - [Nginx] Ubuntu 서버에 Nginx 설치하기 [Nginx] Ubuntu 서버에 Nginx 설치하기 # 배경 - AWS ElasticBeanstalk으로 배포하고 있는 Service(Backend) 프로젝트를 도커 컨테이너로 배포하여 사용하기 위해서 도커 컨테이너가 올라가는 서버에 Nginx를 설치하고 도메인과 연결할 수 있도록 baekji919.tistory..
# 배경 Backend 서비스를 배포한 뒤에 로컬에서 잘 동작한 API가 동작하지 않는 것을 확인하였다. 계속해서 404 Not Found에러가 뜨는 것을 확인하였다. # 문제 원인 Jenkins로 배포를 진행하는데 Console Output을 보니 Go module이 Dockerfile에 지정된 Go 버전에서는 지원하지 않아서 생긴 문제였다. # 해결방법 Dockerfile에서 golang 이미지를 받는 버전을 바꾸어주면 해결이 된다. 수정 전 FROM golang:1.15.6 AS builder 수정 후 FROM golang:1.16 AS builder