Dockerfile을 작성할 때 Amazon Linux 2 이미지를 사용하려면, 보통 Docker Hub에서 다음과 같은 명령어를 사용해 가져옵니다:

FROM amazonlinux:2

 

이 명령어는 Docker Hub에서 Amazon Linux 2 이미지를 다운로드합니다. 하지만 이미지 요청 수 제한으로 인해 에러가 발생할 수 있습니다.

 

요청 수 제한 문제

Docker Hub는 익명 사용자와 무료 계정 사용자의 이미지 풀 요청 수에 제한을 두고 있습니다. 이에 따라 다음과 같은 에러 메시지를 볼 수 있습니다:

toomanyrequests: too many requests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit

익명 사용자는 6시간 동안 100개의 요청 제한, 무료 계정 사용자는 6시간 동안 200개의 요청 제한을 받습니다.

 

해결 방법: AWS ECR Public Gallery 사용

이 문제를 해결하는 한 가지 방법은 Docker Hub 대신 AWS ECR Public Gallery에서 이미지를 가져오는 것입니다. AWS ECR은 이미지에 대한 요청 제한이 없으며, 특히 Amazon Linux 이미지를 제공하는 신뢰할 수 있는 리포지토리입니다. 다음과 같이 Dockerfile을 수정하여 AWS ECR에서 이미지를 가져올 수 있습니다:

FROM public.ecr.aws/amazonlinux/amazonlinux:2

 

 

이 오류는 원격 저장소에 이미 존재하는 커밋이 있고, 그 내용이 로컬 저장소와 충돌하기 때문에 발생한 것입니다. 이런 상황에서는 로컬 저장소와 원격 저장소의 변경 사항을 통합해야 합니다. 이를 해결하는 방법은 git pull 명령어로 원격 저장소의 변경 사항을 로컬에 가져온 후, 충돌을 해결하고 다시 push하는 것입니다.

다음 절차로 진행하세요:

1. 원격 변경 사항을 로컬로 가져오기 (pull)

먼저, 원격 저장소에서 최신 변경 사항을 로컬로 가져옵니다.

git pull origin main --rebase



2. 다시 Push

변경 사항을 통합하고 나서, 이제 다시 push합니다.

git push origin main

 

 

 

전제 조건

  • Windows 버전: Windows 10 버전 2004 이상 (빌드 19041 이상) 또는 Windows 11이 필요합니다.

 

CMD창에 아래 명령어를 입력합니다.

wsl --shutdown

 

 

bios에서 가상화 기술(VT-x / AMD-V) 활성화

 

가상화 기술 활성화 방법 (일반적인 단계)

  1. 컴퓨터를 재부팅합니다:
    • 컴퓨터를 완전히 종료한 후 다시 켭니다.
  2. BIOS 설정으로 들어갑니다:
    • 부팅 과정에서 BIOS 설정으로 들어가기 위해 특정 키를 눌러야 합니다. 일반적으로 사용하는 키는 F2, F10, Del, Esc, 또는 F12입니다. 제조사마다 다를 수 있으므로 부팅 시 화면에 표시되는 메시지를 참고하세요.
  3. BIOS 메뉴 탐색:
    • BIOS 설정에 들어가면 키보드의 방향키를 사용하여 메뉴를 탐색합니다. Advanced, Configuration, Security, 또는 System Configuration 같은 메뉴를 찾습니다.
  4. 가상화 옵션 찾기:
    • 가상화 기술을 활성화하는 옵션은 Intel Virtualization Technology, VT-x, Vanderpool, AMD-V, SVM 등으로 표시될 수 있습니다. 이는 CPU의 제조사에 따라 다릅니다.
    • Advanced 또는 CPU Configuration 섹션에 위치해 있을 가능성이 높습니다.
  5. 가상화 기술 활성화:
    • 해당 옵션을 찾은 후 Disabled로 설정되어 있으면 이를 Enabled로 변경합니다. 이를 위해 Enter 키를 눌러 설정을 변경합니다.
  6. 변경 사항 저장 및 종료:
    • 설정을 변경한 후 BIOS 메뉴에서 Save & Exit 또는 Exit를 선택하여 변경 사항을 저장하고 BIOS 설정에서 나옵니다. 일반적으로 F10 키를 눌러 저장하고 종료할 수 있습니다.
  7. 컴퓨터 재부팅:
    • 변경 사항을 저장하고 BIOS 설정에서 나가면 컴퓨터가 재부팅됩니다. 이제 가상화 기술이 활성화된 상태에서 운영체제가 부팅됩니다.

참고 이미지 예시

  1. Intel BIOS 예시:
    • Advanced > CPU Configuration > Intel Virtualization Technology로 이동하여 Enabled로 설정합니다.
  2. AMD BIOS 예시:
    • Advanced > CPU Configuration > SVM Mode 또는 Advanced > Advanced Chipset Settings > SVM로 이동하여 Enabled로 설정합니다.

BIOS 메뉴에서 가상화 기술 활성화

  • ASUS:
    • Advanced > CPU Configuration > Intel Virtualization Technology > Enabled
  • Gigabyte:
    • M.I.T. > Advanced Frequency Settings > Advanced CPU Core Features > Intel Virtualization Technology > Enabled
  • HP:
    • Security > System Security > Virtualization Technology > Enabled
  • Dell:
    • Virtualization Support > Virtualization > Enabled

위 절차를 통해 BIOS에서 가상화 기술을 활성화하면, 가상 머신 소프트웨어(VMware, VirtualBox 등)에서 가상화를 사용할 수 있게 됩니다. BIOS 메뉴는 제조사와 모델에 따라 다를 수 있으므로, 정확한 메뉴 위치는 해당 메인보드나 노트북의 사용자 매뉴얼을 참고하는 것이 좋습니다.

 

가상화 기술(VT-x / AMD-V) 활성화 후 cmd창에서 아래 명령어를 입력합니다.

wsl --install

 

1. jenkins 배포 중 No space left on device 발생

2.  /var/lib/docker/overlay2 용량 문제 확인

원인

/var/lib/docker/overlay2 가 용량이 큰 경우 diff/tmp 에 컨테이너 내부 파일구조 변경 사항들이 과도하게 쌓였기 때문.

 

  1. Docker 컨테이너는 여러 레이어로 구성된 이미지를 기반으로 실행됩니다. 각 레이어는 독립적인 파일 시스템을 가지며, Docker는 이를 효율적으로 관리하기 위해 스토리지 드라이버를 사용합니다.
  2. 이번 문제의 원인인 overlay2 드라이버는 Linux의 OverlayFS를 활용해 여러 디렉토리를 하나로 겹쳐 사용하는 유니온 파일 시스템입니다. 컨테이너 실행 중 기존 레이어에 변경 사항이 생기면, 해당 변경 사항만 새로운 레이어에 저장하는 Copy-on-Write(CoW) 전략을 사용하여 필요한 부분만 저장합니다. overlay2의 diff/tmp에 변경 사항이 과도하게 쌓이면 /var/lib/docker/overlay2 경로의 용량이 커질 수 있습니다.

해결

  1. 미사용 이미지, 컨테이너, 볼륨 정리: docker system prune -a --volumes 명령어를 사용하면 중지된 컨테이너와 사용하지 않는 이미지, 네트워크, 볼륨을 안전하게 삭제할 수 있습니다.
  2. 특정 이미지 또는 컨테이너 삭제: 더 이상 필요하지 않은 이미지나 컨테이너만 개별적으로 삭제할 수 있습니다 (docker rmi와 docker rm 명령어 사용).

이처럼 안전하게 정리할 수 있는 명령어로 overlay2의 공간을 확보하는 것이 좋습니다.

사전 체크리스트

  • 포트 설정 확인
    • 6379 기본 redis 포트 확인 → 다음 단계로 진행
  • 방화벽 설정 확인
    • EC2 보안그룹, iptables 확인 6379 port open 확인 → 다음 단계로 진행
  • redis 설치 확인
    • EC2 ubuntu계정 redis-server 명령어 실행

 

체크 리스트 확인 후 docker 내 redis 설치

  • docker 컨테이너 redis 설치
docker exec -it realjeans bash      # realjeans 자리에 컨테이너 name 입력으로 컨테이너 접속
apt-get update -y
apt install redis-server -y
redis-server --daemonize yes

 

 

sudo certbot --nginx

Nginx SSL 설정 중 위 명령어 실행 시 발생 할 수 있는 에러.

 

sudo snap install certbot --classic
이후 

sudo apt-get install python3-certbot-nginx
설치 하지 않아 발생한다.

sudo snap install certbot --classic
설치 시 python이 같이 설치 되는데 nginx와 묶이지 않아 발생하는 것으로 보인다.

 

  • 결론
sudo snap install certbot --classic
sudo apt-get install python3-certbot-nginx

* ubuntu 18.03버전 이하는 sudo apt-get install python-certbot-nginx

+ Recent posts