Docker 데몬이 실행 중인지 확인하는 쉘 스크립트 - OSx의 공식 docker

Docker 데몬이 실행 중인지 확인하는 쉘 스크립트 - OSx의 공식 docker

이 Mac El Capitan에는 공식 Docker가 설치되어 있습니다. Bash 파일을 실행할 때 명령 중 하나는 docker 데몬이 아직 실행되고 있지 않은 경우 시작하는 것입니다.

    [[ $(docker-machine status) == "Stopped" ]] && docker-machine start
    eval $(docker-machine env)

아래 출력을 얻고 있기 때문에 실행되지 않는 것 같습니다. 위 코드가 제대로 처리할 것으로 기대합니다. 이를 위해서는 무엇이 필요합니까?

Starting "default"...  
(default) Check network to re-create if needed...  
(default) Waiting for an IP...  
Machine "default" was started.  
Waiting for SSH to be available...  
Detecting the provisioner...  
Started machines may have new IP addresses. You may need to re-run the `docker-machine env` command.  
Error checking TLS connection: Error checking and/or regenerating the certs:   There was an error validating certificates for host "192.168.99.100:2376": tls: DialWithDialer timed out  
You can attempt to regenerate them using 'docker-machine regenerate-certs [name]'.  
Be advised that this will trigger a Docker daemon restart which will stop running containers.  

두 번째로 스크립트 파일을 실행하면 모든 것이 원활하게 진행됩니다.

답변1

OS X(또는 현재 macOS)의 Docker는 일반적으로 VirtualBox를 하이퍼바이저로 사용하여 Linux 가상 머신 내에서 실행됩니다. 따라서 docker 를 사용하여 docker 를 시작하면 docker-machine start가상 머신과 그 안에 있는 모든 서비스가 시작되어 사용 가능해지는 데 시간이 걸립니다. 따라서 이 문제를 해결하려면 다음을 수행할 수 있습니다.

[[ $(docker-machine status) == "Stopped" ]] && docker-machine start
sleep 10
eval $(docker-machine env)

sleep가상 머신을 사용할 수 있게 되는 데 걸리는 시간은 OS X 호스트의 하드웨어와 가상 머신이 Docker 게스트에 할당된 하드웨어에 따라 다르므로 시간이 너무 많거나 충분하지 않은 경우 전달된 값을 조정해야 할 수 있습니다 . .

관련 정보