docker-machine ls 에서 왜 MobyLinuxVM 은 보이지 않는가?

Docker for windows 는 docker-machine ls 에서 안 보이는 것은 디자인이 원래 그렇다고 한다.

https://forums.docker.com/t/isnt-the-mobylinuxvm-the-default-docker-machine/17043

여튼 docker command 가 새로운 머신을 사용하기 위해서 설정하는 환경 변수를 얻기 위한 명령어를 실행하면 모든 docker 명령어가 새로운 docker machine을 향하게 되는데

C:\WINDOWS\system32>docker-machine env --shell cmd nzvm3
 SET DOCKER_TLS_VERIFY=1
 SET DOCKER_HOST=tcp://192.168.0.36:2376
 SET DOCKER_CERT_PATH=C:\Users\nzin4.docker\machine\machines\nzvm3
 SET DOCKER_MACHINE_NAME=nzvm3
 SET COMPOSE_CONVERT_WINDOWS_PATHS=true

C:\WINDOWS\system32>SET DOCKER_TLS_VERIFY=1
C:\WINDOWS\system32>SET DOCKER_HOST=tcp://192.168.0.36:2376
C:\WINDOWS\system32>SET DOCKER_CERT_PATH=C:\Users\nzin4.docker\machine\machines\nzvm3
C:\WINDOWS\system32>SET DOCKER_MACHINE_NAME=nzvm3
C:\WINDOWS\system32>SET COMPOSE_CONVERT_WINDOWS_PATHS=true

 C:\WINDOWS\system32>docker ps
 CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

그러다 보니 MobyLinuxVM 이 관리하던 docker 들이 검색이 안되게 된다. 다시 돌아가는 방법은 환경 변수를 모두 삭제 해 주면 된다.

SET DOCKER_TLS_VERIFY=
SET DOCKER_HOST=
SET DOCKER_CERT_PATH=
SET DOCKER_MACHINE_NAME=
SET COMPOSE_CONVERT_WINDOWS_PATHS=

docker-machine create –driver hyperv [vmname] windows10 에서 동작하지 않을 때

책 보고 docker-machine 좀 만들려는데 안되더라

C:\WINDOWS\system32>docker-machine create --driver hyperv nzvm
 Running pre-create checks…
 Creating machine…
 (nzvm) Copying C:\Users\nzin4.docker\machine\cache\boot2docker.iso to C:\Users\nzin4.docker\machine\machines\nzvm\boot
 2docker.iso…
 (nzvm) Creating SSH key…
 (nzvm) Creating VM…
 (nzvm) Using switch "Realtek PCIe GBE Family Controller \xb0\xa1\xbb\xf3 \xbd\xba\xc0\xa7ġ"
 (nzvm) Creating VHD
 Error creating machine: Error in driver during machine creation: exit status 1

무언가 안될 때 여러가지 이유가 있겠지만.. 안되는 이유를 알려면 디버그 모드가 필요한 법.

원인1. 관리자 권한 필요 – 관리자 모드에서 실행하라

(nzvm6) DBG | [stderr =====>] :
 (nzvm6) DBG | [executing ==>] : C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive @([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")
 (nzvm6) DBG | [stdout =====>] : False

원인2. hyper-v 의 가상 스위치에 한글을 제거하라.

docker-machine -D create --driver hyperv nzvm1
 ….
 (nzvm1) DBG | [executing ==>] : C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive Hyper-V\New-VM nzvm1 -Path 'C:\Users\nzin4.docker\machine\machines\nzvm1' -SwitchName 'Realtek PCIe GBE Family Controller          ġ' -MemoryStartupBytes 1024MB
 (nzvm1) DBG | [stdout =====>] :
 (nzvm1) DBG | [stderr =====>] : Hyper-V\New-VM : Hyper-V    ̸    "Realtek PCIe GBE Family Controller ???? ?????"             ġ   ã           ϴ .
 (nzvm1) DBG |   ġ   :1     :1
 (nzvm1) DBG | + Hyper-V\New-VM nzvm1 -Path 'C:\Users\nzin4.docker\machine\machines\n …
 (nzvm1) DBG | + ~~~~~~~~~~~~~~~~~
 (nzvm1) DBG |     + CategoryInfo          : InvalidArgument: (:) [New-VM], VirtualizationException
 (nzvm1) DBG |     + FullyQualifiedErrorId : InvalidParameter,Microsoft.HyperV.PowerShell.Commands.NewVM
 (nzvm1) DBG |
 (nzvm1) DBG |
 Error creating machine: Error in driver during machine creation: exit status 1

뭔가. hyper-v 의 랜카드 설정에 한글이 잔뜩 깨지는 모양이었다.

Hyper-v 관리자 화면에서 가상스위치 이름중 한글 부분을 vswitch 로 교체 하였다.

이제 정상 가동 되었다. 아직도 많은 컴퓨터 세계에 한글 문제가 존재 하는구나.

C:\WINDOWS\system32>docker-machine ssh nzvm3
    ( '>')
   /) TC (\   Core is distributed with ABSOLUTELY NO WARRANTY.
  (/----)           www.tinycorelinux.net
 docker@nzvm3:~$ uname -a
 Linux nzvm3 4.14.134-boot2docker #1 SMP Mon Jul 22 20:22:16 UTC 2019 x86_64 GNU/Linux