Сделать докер-машину по умолчанию вручную на Hyper-V

Иногда я сталкивался с этой ошибкой в ​​Docker для Windows.

Я погуглил и нашел причину.

В результате это связано с тем, что по умолчанию для докер-машины нет.

$docker ps
error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.38/containers/json: open //./pipe/docker_engine: The system cannot find the file specified. In the default daemon configuration on Windows, the docker client must be run elevated to connect. This error may also indicate that the docker daemon is not running.

Моя ОС — Windows 10, поэтому используется Hyper-V.

Итак, я попробовал это,

docker-machine create --driver hyperv default

Но показывает такую ​​ошибку.

Error with pre-create check: "no External vswitch found. A valid vswitch must be available for this command to run. Check https://docs.docker.com/machine/drivers/hyper-v/"

Я действительно часто зацикливался на этой ошибке.

Как я могу это исправить??


Я указал DockerNAT с опцией hyperv-virtual-switch.

docker-machine create --driver hyperv --hyperv-virtual-switch DockerNAT default

это выглядело прогрессом.

Running pre-create checks...
(default) Image cache directory does not exist, creating it at C:\Users\whitebear\.docker\machine\cache...
(default) No default Boot2Docker ISO found locally, downloading the latest release...
(default) Latest release for github.com/boot2docker/boot2docker is v18.06.0-ce
(default) Downloading C:\Users\whitebear\.docker\machine\cache\boot2docker.iso from https://github.com/boot2docker/boot2docker/releases/download/v18.06.0-ce/boot2docker.iso...
(default) 0%....10%....20%....30%....40%....50%....60%....70%....80%....90%....100%
Creating machine...
(default) Copying C:\Users\whitebear\.docker\machine\cache\boot2docker.iso to C:\Users\whitebear\.docker\machine\machines\default\boot2docker.iso...
(default) Creating SSH key...
(default) Creating VM...
(default) Using switch "DockerNAT"
(default) Creating VHD
(default) Starting VM...
(default) Waiting for host to start...
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Detecting the provisioner...
Provisioning with boot2docker...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Checking connection to Docker...
Docker is up and running!

Наконец, докер-машина работает.

PS C:\Windows\system32> docker-machine ls
NAME      ACTIVE   DRIVER   STATE     URL                        SWARM   DOCKER        ERRORS
default   -        hyperv   Running   tcp://192.168.1.118:2376           v18.06.0-ce

Однако docker ps пока не работает.

PS C:\Windows\system32> docker ps
error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.38/containers/json: open //./pipe/docker_engine: The system cannot find the file specified. In the default daemon configuration on Windows, the docker client must be run elevated to connect. This error may also indicate that the docker daemon is not running.

person whitebear    schedule 19.08.2018    source источник
comment
Первое сообщение об ошибке, по-видимому, связано не с докер-машиной, а скорее с остановленным Docker Engine. Вы убедились, что Docker для Windows запущен?   -  person gesellix    schedule 20.08.2018
comment
Да, это работает. Я подтвердил, что Docker for windows service были запущены в панели служб Windows, а также перезапущены. И команда docker -v возвращает Docker version 18.06.0-ce, build 0ffa825   -  person whitebear    schedule 20.08.2018
comment
docker -v печатает только версию клиента. Вы можете проверить версию движка с помощью docker version.   -  person gesellix    schedule 20.08.2018
comment
Что касается ваших обновленных данных о docker-machine: по умолчанию клиент пытается подключиться к движку через npipe (в Windows). При использовании альтернативной виртуальной машины, созданной docker-machine, вы должны сообщить клиенту, где найти движок. В этом случае двигатель будет работать на tcp://192.168.1.118:2376. Пожалуйста, попробуйте что-нибудь вроде docker -H tcp://192.168.1.118:2376 ps.   -  person gesellix    schedule 20.08.2018
comment
... это сказало: теперь вы, вероятно, столкнетесь с проблемами сертификата TLS. Я по-прежнему предполагаю, что вам не нужно создавать еще один механизм докеров с помощью docker-machine, и я по-прежнему предполагаю, что Docker для Windows на самом деле не работает.   -  person gesellix    schedule 20.08.2018


Ответы (1)


Вы можете вручную создать внешний vswitch, а затем выбрать его во время docker-machine create .... См. https://stackoverflow.com/a/51333650/372019 для аналогичного вопроса.

Блог по адресу https://rominirani.com/docker-machine-windows-10-hyper-v-troubleshooting-tips-367c1ea73c24 содержит дополнительные сведения о других возможных проблемах с docker-machine.

person gesellix    schedule 19.08.2018
comment
Это хороший документ для начала учебы. спасибо, я должен узнать больше. - person whitebear; 22.11.2018