Docker 백엔드에서 VMware Workstation Player 사용
10017 단어 DockerWindowsworkstationplayertech
이 기사는 SGG(Advent Calendaar) 2020 22일차 기사다.
21일be bound to "꼭~해야 돼" 잖아요.
23일Firebase Authentication 로그인을 G Suit 조직으로 제한
개시하다
올해 상반기에도 Windows 10 Home은 WSL2를 Docker Desktop for Windows의 백엔드로 사용하기 시작했다.Docker를 WSL2에서 실행하려면'Windows 슈퍼서버 플랫폼'을 유효성화해야 하지만 Hyper-V와 마찬가지로 VMware Workstation Player의 VT-x/EPT의 가상화[1] 기능이 적용되면 시작할 수 없습니다[2].따라서 VT-x/EPT의 유효한 가상 머신을 시작하기 위해 Docker Desktop for Windows 백엔드에서 VMware Workstation Player를 사용하고 싶습니다.
VT-x/EPT 가상화가 활성화되어 있으면 시작할 수 없습니다.
컨디션
항목
값
VM용 OS
ArchLinux
VM의 NetBIOS 이름
dockersrv
Docker의 포트 번호
2375
절차.
1. 초진동기 기능의 무효화
우선 초진동기 기능을 무효화한다.Hyper-V의 무효화와 같은 명령입니다.
명령 프롬프트/PowerShell(관리자)
> bcdedit.exe /set hypervisorlaunchtype off
명령을 실행한 후 PC를 다시 시작합니다.2. VM을 사용하여 [VM]Docker 이동
VMware Workstation Player에서 모바일 Docker의 가상 머신을 만듭니다.리눅스 계열이라면 어떤 발행을 사용하든 변하지 않을 것 같다[3].또한 자세한 OS 설치, Docker 설치 단계는 생략합니다.
네트워크 어댑터를 브리지로 설정하는 것이 좋습니다[4].
3. [VM]Docker의 시작 설정 변경
Windows에서 액세스할 수 있도록 Docker의 서비스 시작 설정(docker.service)을 변경합니다.
docker.service
경로는 릴리스에 따라 다릅니다.다음 명령을 사용해도 표시될 수 있습니다. 사용하십시오.Shell(root)
# systemctl show docker | grep ^FragmentPath | sed -e "s/FragmentPath=//"
docker.service[Service]
# ExecStart=で始まる行の、 -H の次の引数を変更します
# ポート番号は2375とします
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 --containerd=/run/containerd/containerd.sock
# tcp://0.0.0.0:ポート番号
변경 후 Docker를 다시 시작합니다.Shell(root)
# systemctl restart docker
Docker 자동 시작을 설정합니다.Shell(root)
$ systemctl enable docker
Docker의 시작을 확인합니다.Shell
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:1a523af650137b8accdaed439c17d684df61ee4d74feac151b5b337bd29e7eec
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
4. [VM]NetBIOS 이름 설정
NetBIOS 이름을 설정하면 가상 시스템의 IP 주소에 신경 쓰지 않고 Docker를 사용할 수 있습니다.
NetBIOS 이름을 설정하는 대신 IP 주소를 고정하는 경우 이 작업은 필수가 아닙니다.
삼바를 설치하고 편집
/etc/smb.conf
(발매에 따라/usr/local/samba/lib/smb.conf
.smb.conf
[global]
# NetBIOS名をdockersrvとしています
netbios name = dockersrv
변경 후 nmbd를 다시 시작합니다.Shell(root)
# systemctl restart nmb
5. [Windows] 환경 변수의 설정
DOCKER_HOST=tcp://dockersrv:2375
# tcp://NetBIOS名もしくはIPアドレス:ポート番号
Docker의 CLI를 가상 시스템에서 실행 중인 서버에서 사용할 수 있도록 이상의 값을 설정합니다.명령 프롬프트/PowerShell(관리자)
> setx.exe DOCKER_HOST tcp://dockersrv:2375
# システム環境変数として設定する場合は末尾に -m を追加
(6. [Windows] VM이 자동으로 시작되는 설정)
가상 머신을 Docker 전용 머신으로 만들면 가상 머신은 Windows의 시작에 따라 설정할 수 있어 편리하다.
지정할 명령행
"C:\Program Files (x86)\VMware\VMware Player\vmrun.exe" -T player start "vmxファイルのパス" nogui
매개 변수에 지정된 vmx 파일은 가상 머신 설정 > 옵션 탭 > 일반 작업 디렉터리에 저장됩니다.확인
명령 프롬프트/PowerShell
> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
> docker run hello-world
docker run hello-world의 실행 결과Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
가상 머신에서 한 번 실행된 적이 있기 때문에Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:1a523af650137b8accdaed439c17d684df61ee4d74feac151b5b337bd29e7eec
Status: Downloaded newer image for hello-world:latest
대화 상자.총결산
지금까지 Docker를 이동하면서 가상 시스템에서 가상 시스템을 이동했습니다.
가상 머신에서 QEMU와 KVM 등을 조합하려면 반드시 사용 방법을 모색해 보십시오.
잡담
이 방법을 모색할 때 나는 내가 왜 VT-x/EPT의 가상화를 효과적으로 해야 하는지 잊어버렸다.
각주
가상 시스템에서 Intel의 가상화 기술인 VT-x/EPT를 사용하면 가상 시스템에서 KVM을 사용할 수 있습니다.또한 AMD↩︎
여러 가상화 소프트웨어가 동시에 VT-x/EPT를 사용할 수 없기 때문이라고 합니다.↩︎
Docker 전용인 경우 GUI가 없는 배포를 선택하면 CPU/메모리 사용량이 억제됩니다.↩︎
내 환경에서 NAT를 설정하면 잘 돌아가지 못하는데...↩︎
Reference
이 문제에 관하여(Docker 백엔드에서 VMware Workstation Player 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/e_chan1007/articles/741f6852a90337텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)