728x90
반응형
  • Docker 사용시 발생한 문제 및 해결책들에 대해 공유 하도록 하겠습니다. 

ERROR: Failed to Setup IP tables

  • 에러: ERROR: Failed to Setup IP tables 에러 
Creating network "dblink_default" with the default driver
ERROR: Failed to Setup IP tables: Unable to enable SKIP DNAT rule:
  • 해결책 : systemctl restart docker.service 수행
$ docker-compose up                                
Creating network "dblink_default" with the default driver
ERROR: Failed to Setup IP tables: Unable to enable SKIP DNAT rule:  (iptables failed: iptables --wait -t nat -I DOCKER -i br-b50eacddd935 -j RETURN: iptables: No chain/target/match by that name.
 (exit status 1))

$ systemctl restart docker.service

$ systemctl status  docker.service
* docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since 화 2022-04-12 12:07:44 KST; 7min ago
     Docs: https://docs.docker.com
 Main PID: 20828 (dockerd)
    Tasks: 11
   Memory: 83.8M
   CGroup: /system.slice/docker.service
           `-20828 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --data-root=/data300G/docker-image


[Podman] 실행 에러 해결: "current system boot ID differs from cached boot ID" 

  • 에러 
    • 비정상 재부팅으로 인해 Podman의 임시 상태 파일이 꼬일때 종종 아래 에러 발생 
$ podman images
Error: current system boot ID differs from cached boot ID; an unhandled reboot has occurred. Please delete directories "/tmp/storage
-run-1017/containers" and "/tmp/storage-run-1017/libpod/tmp" and re-run Podman
  • 해결 방법 : 문제가 되는 임시 디렉토리를 삭제
# 에러 메시지에 나온 경로를 강제 삭제합니다.
sudo rm -rf /tmp/storage-run-1017/containers
sudo rm -rf /tmp/storage-run-1017/libpod/tmp

[Podman] podman logs 내용 미출력 현상 (빈 화면 출력 해결 방법)

Podman 환경에서 docker-compose.yml (또는 podman-compose)을 이용해 컨테이너를 정상적 기동 되었으나 , podman logs [컨테이너명] 명령어를 실행해도 아무런 로그가 출력되지 않고 빈 화면만 나오는 현상이 발생 하는경우 아래 내용이 원인 일수 있습니다.

  • 원인 파악 (Root Cause)

원인은 바로 journald 로그 드라이버 일수도 있다. 

시스템 설정을 확인해 본 결과, Podman의 컨테이너 로그 드라이버가 기본값인 journald로 설정되어 있었습니다.

 

podman inspect myweb --format '{{.HostConfig.LogConfig.Type}}'
journald
  • journald 드라이버를 사용하면 컨테이너의 표준 출력(stdout) 로그가 리눅스 시스템의 systemd-journald 데몬으로 전달 된다.
  • 이때 Root 권한이 아닌 일반 사용자(Non-root User) 권한으로 podman logs를 실행할 경우, 시스템 로그를 읽어올 권한이 부족하여 출력이 안 되거나 빈 화면만 반환 되게 된다. 
  • 해결 방법 : YML 파일에 logging 정보 추가 
# 수정 전
  client:
    # ... 생략 ...
    restart: "no"
    environment:
      - TEST_ENV=1

# ========================================== #

# 수정 후 (logging 추가)
  client:
    # ... 생략 ...
    restart: "no"
    logging:
      driver: k8s-file  # 파일 기반 로그 드라이버 강제 지정
    environment:
      - TEST_ENV=1

 

[Podman]빌드시  no space left on device  에러 발생 

  • write /var/tmp/buildah816211196/layer: no space left on device
    • 원인 :
      • Podman(내부적으로 Buildah 사용)이 이미지를 빌드할 때 임시 파일을 생성 한다.  현재 서버의 /var/tmp 파티션 용량이 꽉 차서 빌드 도중 정상적으로 이미지를 빌드 하지 못하고 종료 하는에러 이다. 
    • 해결 : 
      • 방안1 : /var/tmp/ 디렉 토리 를 삭제하고 용량을 확보하는 방법 
      • 방안2 : 넉넉한 공간으로  tmp 디렉토리를 변경 하는 방법 
        • export TMPDIR=/mnt/nvme/podman_tmp
        • mkdir -p /mnt/nvme/podman_tmp
      • 기존 podman 찌거기 데이터 도 같이 삭제 해준다 . 
#Podman 캐시 및 사용하지 않는 찌꺼기 삭제
podman system prune -a --volumes

#비정상 종료한 Buildah 임시 컨테이너 강제 삭제
buildah rm --all

#/var/tmp 내부의 빌드 찌꺼기 수동 삭제
sudo rm -rf /var/tmp/buildah*
728x90
반응형

+ Recent posts