에스에스에이치는 연결되지만 도커 명령이 데몬을 찾지 못한다면, 먼저 도커 데스크톱을 다시 설치하지 마십시오.

앱 상태, 사용자 로그인 세션, 도커 컨텍스트와 소켓, 권한 설정을 순서대로 확인한 뒤, 같은 맥 사용자로 그래픽 세션에서 최초 승인을 완료하고 명령줄 도구로 재검증하는 것이 가장 빠른 해결법입니다.

이 글은 윈도우나 리눅스 컴퓨터에서 에스에스에치로 원격 맥의 컨테이너 환경을 사용하는 개발자를 위한 안내입니다. 도커 빌드와 테스트를 맡은 맥오에스 노드 관리자, 장기 실행 가능한 원격 컨테이너 환경을 평가하는 데브옵스 엔지니어에게도 적합합니다.

먼저 증상과 장애 계층을 분리합니다

에스에스에치 접속 성공은 맥의 원격 로그인 기능이 작동한다는 뜻일 뿐입니다. 도커 데스크톱의 가상 머신, 사용자 세션, 도커 소켓이 준비되었다는 증거는 아닙니다. 애플은 원격 로그인을 켜면 다른 컴퓨터에서 에스에스에치나 에스에프티피로 맥에 접근할 수 있다고 설명합니다. (애플 원격 로그인 안내)

원격 셸에서 다음 명령을 실행해 첫 번째 분기점을 잡습니다.

whoami
uname -m
command -v docker
docker context ls
docker info

결과는 다음처럼 해석합니다.

<
관찰된 증상우선 확인할 증거다음 조치
docker 명령 자체가 없음command -v docker, echo "$PATH"현재 사용자의 명령줄 도구 경로 확인
도커 데스크톱이 실행되지 않음docker desktop status, 프로세스 목록같은 사용자 세션에서 앱 시작
클라이언트가 데몬을 찾지 못함docker context show, 소켓 경로컨텍스트와 사용자별 소켓 대조
컨테이너는 시작되지만 접근되지 않음포트, 프록시, 인증서, 로그컨테이너 네트워크와 저장소 인증 분리
도커의 공식 명령줄 도구는 시작, 중지, 재시작, 상태 확인 기능을 제공합니다. 따라서 화면이 보이지 않는다는 이유만으로 프로세스를 강제로 종료하기보다 상태 명령의 결과를 먼저 보존해야 합니다. ([도커 데스크톱 명령줄 도구 문서](https://docs.docker.com/desktop/features/desktop-cli/?utm_source=openai))

설치와 앱 무결성을 증거로 확인합니다

원격 맥의 칩 종류와 운영체제가 현재 도커 데스크톱 지원 조건에 맞는지 확인합니다.

uname -m
sw_vers
ls -ld /Applications/Docker.app
ls -l /Applications/Docker.app/Contents/Resources/bin/docker

도커 공식 설치 문서 기준으로 맥용 도커 데스크톱은 현재 운영체제와 이전 두 개의 주요 운영체제 버전을 지원하며, 최소 메모리 요구량은 4 GB입니다. 애플 실리콘에서 엑스팔십육 계열 이미지를 사용할 때는 로제타 설치 여부도 확인해야 합니다. 지원 범위는 버전에 따라 바뀔 수 있으므로 설치 전 공식 요구 사항과 릴리스 기록을 함께 확인하십시오. (도커 맥 설치 요구 사항)

명령줄 도구가 설치되어 있어도 현재 에스에스에이치 셸의 경로에 포함되지 않을 수 있습니다.

echo "$PATH"
ls -l "$HOME/.docker/bin/docker"
ls -l /usr/local/bin/docker

도커 데스크톱은 시스템 경로 또는 사용자 홈 아래에 명령줄 도구를 설치할 수 있습니다. 사용자 경로를 선택했다면 셸 설정 파일에 $HOME/.docker/bin을 추가해야 합니다. (도커 명령줄 도구 경로 설정)

앱이 손상되었다고 판단하려면 다음 증거가 필요합니다.

  • /Applications/Docker.app이 존재하지 않습니다.
  • 앱 내부 실행 파일이나 번들이 누락되었습니다.
  • 실행 시 손상된 앱 또는 게이트키퍼 오류가 반복됩니다.
  • 최근 업데이트 직후 같은 오류가 재현됩니다.
  • 도커 공식 릴리스 기록에 해당 버전의 시작 문제가 기록되어 있습니다.
이 증거가 없으면 재설치하지 마십시오. 사용자 세션이나 소켓 문제를 설치 손상으로 오인하면 이미지, 컨테이너, 설정을 불필요하게 잃을 수 있습니다. 도커는 앱 복사 과정이 중단되면 손상된 앱 오류가 나타날 수 있다고 별도로 안내합니다. ([도커 손상된 앱 오류 안내](https://docs.docker.com/desktop/troubleshoot-and-support/troubleshoot/mac-damaged-dialog/?utm_source=openai))

그래픽 로그인 세션을 먼저 복구합니다

도커 데스크톱은 화면 없이 시작할 수 있습니까?

일부 명령은 에스에스에이치에서 실행할 수 있지만, 최초 실행과 권한 승인까지 순수한 비그래픽 셸만으로 완료된다고 가정해서는 안 됩니다. 도커 데스크톱의 로그인 시 시작 설정은 시스템 전체 데몬이 아니라 특정 사용자의 로그인 동작과 연결됩니다.

애플 문서에서 로그인 항목과 사용자 실행 에이전트는 현재 로그인한 사용자의 세션에서 실행되는 구성 요소로 설명됩니다. 반면 시스템 데몬은 사용자가 로그인하기 전에도 실행될 수 있는 별도 계층입니다. (애플 서비스 관리 문서)

따라서 다음 순서로 확인합니다.

  1. 에스에스에치로 현재 사용자 이름을 기록합니다.
   whoami
   id
   echo "$HOME"
  1. 브이엔씨로 같은 사용자 계정에 로그인합니다.
  2. 도커 데스크톱을 직접 실행합니다.
  3. 최초 권한 요청, 설정 이전, 파일 공유 승인, 로그인 절차를 화면에서 완료합니다.
  4. 앱이 대시보드에 표시될 때까지 기다립니다.
  5. 다시 에스에스에치로 접속합니다.
  6. 동일한 사용자로 상태와 데몬 연결을 확인합니다.
docker desktop status
docker context show
docker info

다른 계정으로 브이엔씨에 로그인하거나 sudo open -a Docker를 실행하면 홈 디렉터리, 키체인, 컨텍스트가 갈라질 수 있습니다. 도커 데스크톱은 일반 사용자 권한으로 실행되며, 일부 시스템 설정에만 제한적인 관리자 권한을 사용합니다. (도커 맥 권한 요구 사항)

사용자, 컨텍스트, 도커 소켓을 맞춥니다

에스에스에이치 로그인 뒤 왜 도커 데몬에 연결되지 않습니까?

가장 흔한 원인은 에스에스에치 사용자가 도커 데스크톱을 시작한 사용자와 다르거나, 셸이 다른 도커 컨텍스트를 사용하거나, 기본 소켓 링크가 재부팅 뒤 사라진 경우입니다.

먼저 다음 값을 한 번에 저장합니다.

printf 'user=%s\nhome=%s\n' "$USER" "$HOME"
docker context show
docker context ls
docker context inspect "$(docker context show)"
ls -l "$HOME/.docker/run/docker.sock"
ls -l /var/run/docker.sock
env | grep '^DOCKER_'

도커 데스크톱이 시작되면 기본 컨텍스트가 desktop-linux으로 전환될 수 있습니다. 사용자별 소켓은 일반적으로 다음 경로에서 확인합니다.

$HOME/.docker/run/docker.sock

기본 소켓 링크를 설치한 경우에는 다음 경로도 확인합니다.

/var/run/docker.sock

도커 공식 문서에 따르면 /var/run은 재부팅 때 내용이 삭제되는 임시 파일 시스템이므로, 기본 소켓 링크를 사용하려면 시작 작업이 다시 링크를 만들어야 합니다. 설치 때 이 기능을 켜지 않았다면 DOCKER_HOST를 사용자별 소켓으로 지정해야 하는 클라이언트도 있습니다. 임의의 빈 소켓 파일을 만드는 것은 복구가 아닙니다. (도커 소켓과 권한 설정)

수정 전에는 현재 상태를 백업합니다.

mkdir -p "$HOME/docker-diagnosis-$(date +%Y%m%d)"
docker context inspect "$(docker context show)" \
  > "$HOME"/docker-diagnosis-$(date +%Y%m%d)/context.json
env | grep '^DOCKER_' \
  > "$HOME"/docker-diagnosis-$(date +%Y%m%d)/docker-env.txt

그 다음 도커 데스크톱을 실행한 동일 사용자로 컨텍스트와 소켓을 다시 확인합니다. sudo docker info로 성공했다고 해서 일반 사용자 셸도 정상이라고 판단하면 안 됩니다.

주의: /var/run/docker.sock을 직접 삭제하거나 새 파일로 덮어쓰지 마십시오. 현재 설치가 관리하는 링크인지 확인하고, 설정 변경 전 기존 대상과 컨텍스트 정보를 별도 파일에 보존해야 합니다.

권한, 프록시, 저장소 인증을 따로 검증합니다

permission denied는 하나의 원인을 뜻하지 않습니다. 다음 네 계층을 나누어 확인해야 합니다.
  • 명령줄 도구 경로가 현재 사용자에게 읽기와 실행 권한을 갖는지 확인합니다.
  • 1,024 미만의 특권 포트를 사용하려는지 확인합니다.
  • 도커 데스크톱의 보조 프로세스와 내부 소켓이 같은 사용자 소유인지 확인합니다.
  • 개인 저장소 인증 정보와 프록시 설정이 원격 사용자의 키체인과 셸 환경에 존재하는지 확인합니다.
도커 공식 문서에서도 특권 포트 연결, 명령줄 도구 링크, 기본 소켓, 보조 프로세스 소켓을 별도 권한 항목으로 구분합니다. 컨테이너 안에서 root로 실행된다고 해서 맥 호스트의 관리자 권한을 얻는 것도 아닙니다. ([도커 권한 모델 설명](https://docs.docker.com/desktop/setup/install/mac-permission-requirements/?utm_source=openai))

저장소 인증은 실제 비밀값을 명령줄에 넣지 않는 방식으로 시험합니다.

docker logout
docker login
docker pull hello-world
docker run --rm hello-world

자동화 노드에서는 대화형 비밀번호나 토큰을 셸 기록에 남기지 말고, 운영 중인 비밀 저장 방식과 도커의 인증 도우미를 사용해야 합니다. docker pull이 실패할 때는 도커 데스크톱 장애가 아니라 저장소 인증 또는 프록시 문제일 수 있습니다.

최소 이미지가 내려받아지고 실행되면 데몬과 기본 네트워크는 살아 있는 것입니다. 그 뒤에야 사설 저장소, 업무 이미지, 포트 공개 문제를 조사하십시오.

재시작과 복구를 실제 작업으로 검증합니다

도커 데스크톱의 상태가 실행 중이지만 응답하지 않는다면 다음 순서로 재시작합니다.

docker desktop status
docker desktop restart
docker desktop status
docker info

상태가 계속 바뀌지 않으면 로그와 진단 기능을 확인합니다.

docker desktop logs
docker desktop diagnose

명령의 세부 옵션은 설치된 버전의 도움말과 공식 명령줄 문서를 우선합니다. 도커의 릴리스 기록에는 특정 맥 운영체제, 가상화 방식, 네트워크, 소켓과 관련된 시작 문제가 버전별로 기록될 수 있으므로, 재설치 전 현재 버전의 알려진 문제를 확인하십시오. (도커 데스크톱 릴리스 기록)

재부팅 뒤 소켓이 사라진 경우에는 다음을 순서대로 확인합니다.

  1. 맥이 다시 켜졌는지 확인합니다.
  2. 에스에스에치 원격 로그인이 다시 가능한지 확인합니다.
  3. 동일한 사용자로 브이엔씨 로그인 세션을 복구합니다.
  4. 도커 데스크톱 상태를 확인합니다.
  5. 사용자별 소켓과 기본 소켓 링크를 확인합니다.
  6. 컨텍스트가 예상한 값인지 확인합니다.
  7. 테스트 컨테이너를 실행합니다.
  8. 업무 컨테이너가 정책에 따라 자동 복구되는지 확인합니다.

원격 맥 장기 실행 가능성을 판단하는 점검표

  • [ ] 재부팅 뒤 에스에스에치 원격 로그인이 다시 됩니다.
  • [ ] 도커 데스크톱을 실행한 사용자와 에스에스에치 사용자가 같습니다.
  • [ ] docker desktop status가 실행 상태를 반환합니다.
  • [ ] docker context show가 의도한 컨텍스트를 반환합니다.
  • [ ] 사용자별 도커 소켓이 존재하고 현재 사용자에게 접근 권한이 있습니다.
  • [ ] 기본 소켓 링크를 사용하는 외부 도구가 있다면 재부팅 뒤에도 대상이 유효합니다.
  • [ ] docker info가 오류 없이 데몬 정보를 반환합니다.
  • [ ] 최소 테스트 이미지의 내려받기와 실행이 성공합니다.
  • [ ] 사설 저장소 인증이 비밀값 노출 없이 재현됩니다.
  • [ ] 업무 컨테이너의 복구 정책이 문서화되어 있습니다.
  • [ ] 브이엔씨에서 수동 승인해야 하는 절차가 있다면 담당자와 복구 시간을 정해 두었습니다.
  • [ ] 사용자 로그인 없이 완전한 무인 복구가 필요한지 별도로 판정했습니다.
이 목록에서 그래픽 로그인이나 수동 승인이 필수라면, 해당 노드는 완전한 무인 서버가 아닙니다. 사용자 실행 에이전트가 로그인한 사용자 세션에 종속될 수 있으므로, 장기 실행 작업은 세션 의존성을 포함해 운영 경계를 정해야 합니다.

현재 윈도우나 리눅스 컴퓨터에서 가상 맥 환경을 억지로 유지하는 방식은 호스트 재부팅, 그래픽 승인, 파일 공유 권한, 애플 실리콘 이미지 호환성에서 각각 다른 관리 부담을 만듭니다. 특히 에스에스에치만 복구되고 도커 데스크톱은 복구되지 않는 구조라면 자동 빌드 노드로 쓰기 어렵습니다.

반대로 실제 원격 맥을 사용하면 브이엔씨로 최초 승인과 복구를 처리하고, 에스에스에치로 빌드와 테스트를 운영하는 식으로 역할을 나눌 수 있습니다. 임시 개발 환경이나 재현 테스트 노드가 필요하다면 원격 맥 컨테이너 개발 환경을 먼저 확인하고, 재부팅 복구 절차까지 필요한 경우에는 맥 주문 환경 살펴보기에서 연결 방식과 운영 조건을 비교해 보십시오. 장기 운영 전에 서울 원격 맥 환경처럼 실제 접속 경로를 확인할 수 있는 구성을 선택하면 현재 환경을 고칠지, 새 노드로 옮길지 판단하기가 쉬워집니다.