WSL(Linux용 Windows 하위 시스템)은 실제로 $DOCKER_HOST를 저장하지 않습니다.

WSL(Linux용 Windows 하위 시스템)은 실제로 $DOCKER_HOST를 저장하지 않습니다.

상태:

저는 WSL을 사용하여 Docker를 실행하는 Windows VDI에서 개발 중이며 실제로 Red Hat 서버에서 실행되는 원격 Docker 데몬을 사용하고 있습니다. 로컬에서는 DOCKER_HOST변수를 내 docker 데몬( )의 올바른 경로로 설정했지만 tcp://<userid>@<my server running the remote docker daemon>이 환경 변수는 설정된 직후에만 인식됩니다.

즉, 지금은 docker 명령을 실행하면 오류가 발생 하지만 이를 나 자신에게 Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?할당하면 향후 docker 명령은 이제 해당 변수를 사용하여 내가 지시한 원격 데몬을 인식하게 됩니다.DOCKER_HOST$ export DOCKER_HOST=$DOCKER_HOST

DOCKER_HOST이 할당을 내 할당에 추가했으며 ~/.bashrc셸을 다시 시작하고 실행하면 올바르게 설정되었음을 확인할 수 있습니다 $ echo $DOCKER_HOST.

예상되는 동작:

DOCKER_HOSTdocker 명령 참조 에 설정된 변수를 사용하여 ~/.bashrc해당 변수의 존재를 확인하고 싶습니다.$ echo $DOCKER_HOST

현실:

Docker는 활성 셸 세션 내에서 설정되지 않으면 이 변수/값을 인식하지 못합니다. 실제로 docker가 이를 인식할 수 있도록 변수 자체에 변수를 할당해야 하며(예: export DOCKER_HOST=$DOCKER_HOST) 그런 다음에만 docker 명령이 원격 데몬에 대해 실행됩니다.

내 질문:

DOCKER_HOSTdocker가 변수를 인식할 수 있도록 변수를 재설정해야 하는 이유는 무엇입니까 ?

내가 이것을 잘못하고 있다면 올바른 방법은 무엇입니까?

내 질문이 잘못된 위치에서 요청되었다는 소식을 듣고 싶습니다. 나는 이것이 Linux/WSL 문제이거나 docker 자체의 문제라고 가정할 수 있습니다.

답변1

이 글을 게시한 후 곧 해결책을 찾았는데 약간 어리석은 느낌이 들었습니다.

~/.bashrc문제는 환경 변수를 내보내는 대신 쉘 변수를 설정했다는 것입니다 .

해결책:

~/.bashrc사용하도록 수정 export:

export DOCKER_HOST=tcp://<userid>@<my server running the remote docker daemon>

뿐만 아니라:

DOCKER_HOST=tcp://<userid>@<my server running the remote docker daemon>

관련 정보