본문 바로가기

직접 만든 소프트웨어, 두 가지 개발 기록

구현 구조와 적용 범위, 확인한 기능과 남은 한계를 함께 기록합니다.

docker25

Docker·CI Git dubious ownership 해결: UID·마운트·safe.directory 점검 Docker나 CI에서 detected dubious ownership in repository가 나오면 Git 실행 사용자와 저장소의 실제 소유자를 먼저 비교하세요. UID·GID와 마운트 설계를 맞추는 것이 우선이며, 의도적으로 공유하는 신뢰된 저장소만 정확한 경로의 safe.directory 예외로 검토합니다. 모든 저장소를 신뢰하는 와일드카드 설정은 사용하지 않습니다. 이 글은 Git 소유권 검사이며 Docker 소켓 권한이나 파일 쓰기 권한 오류와는 별도입니다.원인: 쓰기 권한과 저장소 소유권 검사는 다르다호스트의 저장소를 컨테이너에 bind mount하면 컨테이너가 보는 경로와 실행 사용자가 호스트 작업 환경과 다를 수 있습니다. 파일을 읽거나 쓸 수 있어도 Git이 다른 소유자의 저장소를 신.. 2026. 10. 16.
Docker port is already allocated 해결: Compose 호스트 포트 충돌 점검 Docker 시작 과정의 port is already allocated는 먼저 오류에 표시된 호스트 포트를 누가 사용하는지 확인해야 합니다. 컨테이너 안의 앱 포트를 무작정 바꾸거나 서버를 재부팅하기 전에 Docker 컨테이너와 호스트 리슨 프로세스를 구분하세요. 다른 서비스가 정상 사용 중이면 새 서비스의 호스트 매핑을 변경하는 것이 가능한 해결책입니다.적용 범위는 Docker Engine·Docker Desktop과 Compose V2의 일반적인 bridge 포트 공개입니다. network_mode: host는 같은 ports 예제로 처리하지 않습니다. 명령은 2026-10-10 공식 문서 확인에 기반한 예시이며 실제 운영 서버에서 실행한 기록이 아닙니다. Linux의 ss와 macOS의 lsof는 .. 2026. 10. 12.
Docker DNS 오류 해결: Temporary failure in name resolution·서비스 이름·VPN 점검 Docker 컨테이너에서 “Temporary failure in name resolution”, “Could not resolve host”, “getaddrinfo EAI_AGAIN”이 보이나요? DNS 오류라고 해서 공용 DNS 주소를 바로 덮어쓰는 것은 해결 순서가 아닙니다. Compose 서비스 이름이 안 풀리는지, 외부 도메인이 안 풀리는지, 이름은 풀렸지만 포트 연결이 실패하는지를 나누어 확인하면 문제 범위를 좁힐 수 있습니다.1. 오류가 발생한 이름과 실행 위치를 먼저 기록하기호스트 터미널에서 성공한 이름 조회가 컨테이너 안에서도 성공한다는 보장은 없습니다. 컨테이너의 네트워크·리졸버 경로를 따로 확인해야 합니다. 같은 URL이라도 앱 컨테이너, 빌드 단계, CI 작업 중 어느 위치에서 실패.. 2026. 10. 7.
Cannot connect to the Docker daemon 해결: Docker Desktop·context·서비스 점검 터미널에서 docker ps를 실행했는데 “Cannot connect to the Docker daemon” 오류가 나오나요? Docker 명령이 설치되어 있다는 사실만으로 컨테이너 엔진이 실행 중인 것은 아닙니다. 엔진이 멈췄거나, 명령줄 클라이언트가 다른 엔진 주소를 바라보는 경우부터 구분해야 합니다. 이 글은 Docker Desktop을 사용하는 macOS·Windows와 Docker Engine을 사용하는 Linux의 점검 순서를 나누어 설명합니다. 처음부터 재설치하거나 데이터를 초기화하기 전에 연결 대상과 서비스 상태를 확인하세요.1. 오류 메시지에서 연결 대상부터 읽기Docker 데몬 문제 해결 문서는 엔진이 실행 중인지와 클라이언트가 올바른 주소로 연결하는지를 나누어 확인하도록 안내합니다. .. 2026. 10. 5.
Docker bind mount permission denied 해결: 경로·UID·GID·SELinux 점검 Docker 컨테이너에서 /app/data에 파일을 저장할 때 permission denied가 발생한다면 Docker 소켓 권한과 파일 마운트 권한을 먼저 구분하세요. 컨테이너가 이미 실행되고 앱의 파일 쓰기만 실패한다면 연결한 호스트 경로, 실제 프로세스의 사용자 ID, 읽기 전용 설정과 SELinux 정책을 차례로 확인하는 편이 좋습니다. 디렉터리 전체에 chmod 777을 적용하면 증거와 접근 범위를 함께 잃을 수 있습니다.1. 오류가 난 경로와 시점을 먼저 나누세요발생 상황확인할 대상docker.sock 접근에서 거부Docker 데몬 연결 권한·context컨테이너 생성 중 소스 경로 오류데몬 호스트의 실제 경로·경로 생성 권한앱이 마운트 파일을 열 때 거부프로세스 ID·파일 소유자·상위 경로·.. 2026. 10. 4.
Docker exec format error 해결: amd64·arm64·멀티플랫폼 이미지 점검 Mac에서 만든 Docker 이미지를 Linux 서버에 올렸더니 exec format error로 시작하지 않는다면 실행 파일의 CPU 아키텍처부터 확인하세요. Apple Silicon의 arm64와 일반적인 x86 서버의 amd64가 다를 수 있습니다. 다만 같은 오류가 시작 스크립트의 실행 형식에서도 생길 수 있으므로 “무조건 amd64로 설정”하는 해결법으로 끝내면 재발합니다. 이미지 플랫폼 → 실제 실행 파일 → ENTRYPOINT 순서로 점검하는 방법을 정리합니다.1. 오류가 난 실행 파일과 Docker 서버 위치를 확인하기먼저 오류에 나온 경로가 /bin/sh인지, 애플리케이션 바이너리인지, entrypoint.sh인지 기록합니다. Docker 명령을 실행하는 노트북과 실제 Docker 데몬의.. 2026. 10. 1.