Docker in a Parallels' Virtual Windows 10 Pro Machine - docker

I have a 2013 Mac Pro running the latest Parallels Desktop Pro v
12.2.0 (41591)
On it, is a Windows 10 Pro virtual with Docker Version 17.03.1-ce-win10 (11972)
Docker can only run with 'windows containers' because when trying to fire up the 'MobyLinux' instance in Hyper-V, it never fires up always bombing at:
tsc: Fast TSC calibration failed
I understand this to be some time dependent sync that has to happen at boot time or such failure occurs. I bought a WD 1TB SSD on a Thunderbolt dock to speed up the run/boot time of the virtual. (it was on my platter RAID cage before) to no avail. No diff.
Parallels IS set to 'enable nested virtualization' and I have started a virtual in Hyper-V on the win 10 Pro VM just fine, no errors. I have checked and unchecked 'PMU Virtualization' which I understand will provide statistics to the host but slow the VM.
I tried:
reducing the number of assigned cores to the VM as suggested by
another post to no avail (2-6 cores tried)
Reducing the cores to '1' for Docker (and mixing with above attempt)
increasing the number of cores to docker
adding/reducing memory to VM/Docker
playing with the
C:\Program
Files\Docker\Docker\resources\MobyLinux.ps1
file that loads the VM whereas in another post I changed something to
verifying that "C:\Users\Public\Documents\Hyper-V\Virtual hard disks\MobyLinuxVM.vhdx" is teh correct location for the .vhdx
verifying that the .iso is at "C:\Program Files\Docker\Docker\Resources\mobylinux.iso"
uninstalling Hyper-v/reinstalling Hyper-v manually and letting Docker do it automatically
...
I am at wit's end. I specifically bought this machine so I could do my MS/Visual Studio development along with iOS development on the same box. I have done so, this way, for the past 5-6 years with a 2009 Mac Pro before and now my 2013 MP, but never with Docker before...
So, I need one of two solutions:
a way to make Visual Studio 2015/2017 'look' at my host Mac's Docker instance in order to debug/move on to development
a way to make this 'MobyLinux' Docker vm run.

I was having the same issues and I had initially set the memory to the highest levels allotted and Docker just flat would not run in the Windows box. After tinkering with it for a while I realized that in the Windows box I had not done any of the updates so I ran all those and logged back in, and was getting the same issues of docker not running. That is when I moved over to Parallels and made the changes shown below. Hopefully that helps!
result of docker version:
https://a.cl.ly/kpumLPz4
hyper v:
https://a.cl.ly/jkunldkm
settings in parallels:
https://a.cl.ly/QwuGKq1D
additional settings in parallels that I changed:
https://a.cl.ly/9ZuNElnb
command that I ran for hello_world:
docker run --rm busybox echo hello_world
windows docs on Linux containers 10
docker docs on windows install

Related

How to limit memory usage when I run Memgraph Platform within Docker?

I've been running Memgraph for a few days now and everything is working as expected. This is the first time that I'm using Docker.
I've noticed that when I shut down the Memgraph Platform my RAM is still used. I need to restart my computer to free up my RAM. Is there some switch that I can use to limit the memory that Memgraph Platform uses? Is there some way to release the memory after I shut it down?
If it is important, my OS is Windows 10 Professional and I have a 6 years old laptop with 8GB of RAM.
The issue you are experiencing is not related to Memgraph, but Docker or to WSL2 to be more precise. You say that you use Windows 10 so I presume your Docker is configured to use WSL2.
You didn't write which exact build of Windows 10 you are using, but depending on it WSL can use up to 80% of your RAM if you don't limit it.
When you run the Docker image you will see a process called vmmem. When you shutdown running Docker image this process will still occupy your RAM. Restarting your computer frees up the RAM, which is what you are experiencing.
The solution is not to change the configuration of your Memgraph, but to configure Docker. You need to limit the amount of memory that WSL2 can use. But be careful; this is a change that will affect all of your WSL2 instances, not just the Docker ones.
The exact steps that you need to do are:
Shutdown all of the WSL instances with wsl --shutdown
Edit the .wslconfig file (it is located in your user profile folder)
Add the following lines to it:
[wsl2]
memory=3GB
This will limit the RAM usage of WSL to 3GB. I hope that this will help you.

How to Run Docker Linux Containers on Windows Server 2016 Build 14393

I'm in a situation where:
I have no choice of server OS (Windows Server 2016 Build 14393).
And no choice of container OS (I need Linux Containers).
And I don't need Docker EE (Enterprise), CE (Desktop Edition) will do.
The easiest way to get Linux containers without hacky workarounds is to download Docker Community Edition 2.0.0.3 2019-02-15
Link: https://download.docker.com/win/stable/31259/Docker%20for%20Windows%20Installer.exe
Page with all versions: https://docs.docker.com/docker-for-windows/release-notes/
Simply download/copy the file to the Windows Server 2016 machine and run it.
It can also run offline for air gapped systems.
Uncheck the "Use Windows containers" during setup. Unchecked by default.
You will get a message after installing saying that windows so and so is deprecated. Click OK.
Log out and log back in.
If you hadn't installed Hyper-V it'll prompt you to do it automatically. Allow it, let it finish and restart. You're good to go now.
I've tested this by running several Linux containers, it works fine. If I'm missing something do share for the benefit of others. The downside is you cannot update to a later version of Docker.
Update:
Disclaimers:
This can help you avoid the hardware limitations and complexities of using LCOW with Docker-EE for Windows.
It is more recent than the latest official version of LCOW available.
This won't let you run Windows and Linux containers in parallel. You can only run one or the other.
This also won't start docker automatically at startup (not until you login). To start docker without login you'll need to add Docker Desktop Executable to Windows Task Scheduler and configure it to run on startup whether user is logged in or not. You'll have to provide an account for it (ideally a service account, or an account with a permanent password)

Docker push hangs forever on Windows 10

I am running Windows 10 Professional Version 1809. Pushing docker images to docker.io takes endless time (does not finish even after several hours). On my physical Ubuntu machine in the same network pushing the same finishes in only a few seconds.
It seems this is not related to the way how I install docker. I tried Docker for Windows (using Hyper-V), Docker Machine (using VirtualBox) and also I installed Ubuntu+Docker within VirtualBox on my own. The result is always the same.
I already tried to disable Windows Defender, with no improvement at all.
Any ideas are welcome, since I am running out of ideas completely.

Docker needs to be installed each time I restart the VM in Oracle VirtualBox

I'm totally new to Docker and had few queries with the Docker installation.
I've Windows 7 64 bit OS and installed Oracle Virtualbox to run Ubuntu 16.04 ISO image.
I've installed Docker and it works fine.
The problem I face is, each time I shutdown the VM created in Virtualbox and start it again, I have to run the complete steps to setup Docker again. No settings are saved. Even the documents I save on Ubuntu desktop are gone. Can someone please help me understand as to why this happens?
One doubt I have is, each time when I start Ubuntu, I opt to run from the CD. Could this be the reason?
enter image description here
Yes, you should instead go through the installation. Then you can even disconnect the optical drive to use less resources and avoid confusion in the future.

Docker for Windows can't reach the database in Windows 10 enterprise evaluation

I was trying Docker Desktop for Windows on a VM with Windows 10 Enterprise evaluation.
This is the error that I get:
I've searched round here but I haven't found nothing usefull. I have opened the log file and found error message like:
Failed to setup server socket listening on hyperv-connect://... Failed
to contact the database on \.\pipe\dockerDataBase.... File not found
Unable to write to database (continue like image above)
Nobody have idea? I've accepted the initial prompt when Docker asks me if I want to enable the Hyper-V feature and restart the computer after activation. Could it be a problem of nested virtualization?
I had the same problem and I solved it after I executed this command on a Powershell window:
bcdedit /set hypervisorlaunchtype Auto
I also had to enable CPU virtualization on the hardware properties of the virtual machine (I'm using VMWare vCenter, that might not be needed in your case)
The problem was the nested virtualization. Docker for Windows use Hyper-V behind the scene, Hyper-V was on the host machine too, so there's two nested virtual machine.
The steps are:
Create virtual machine named Docker (the one where Docker will be installed on) without dynamic memory allocation
Open Powershell and Set-VMProcessor -VMName "Docker" -ExposeVirtualizationExtensions $true
Install SO and Docker for Windows as usual
Be aware host machine and guest machine must share the same build number and both needs to be a Windows 10 or Windows Server 2016.

Resources