상태:
저는 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_HOST
docker 명령 참조 에 설정된 변수를 사용하여 ~/.bashrc
해당 변수의 존재를 확인하고 싶습니다.$ echo $DOCKER_HOST
현실:
Docker는 활성 셸 세션 내에서 설정되지 않으면 이 변수/값을 인식하지 못합니다. 실제로 docker가 이를 인식할 수 있도록 변수 자체에 변수를 할당해야 하며(예: export DOCKER_HOST=$DOCKER_HOST
) 그런 다음에만 docker 명령이 원격 데몬에 대해 실행됩니다.
내 질문:
DOCKER_HOST
docker가 변수를 인식할 수 있도록 변수를 재설정해야 하는 이유는 무엇입니까 ?
내가 이것을 잘못하고 있다면 올바른 방법은 무엇입니까?
내 질문이 잘못된 위치에서 요청되었다는 소식을 듣고 싶습니다. 나는 이것이 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>