Docker For Mac With Nfs

воскресенье 08 мартаadmin
Estimated reading time: 8 minutes

If you already have an installation of Docker Toolbox, read these topicsfirst to learn how Docker Desktop on Mac and Docker Toolbox differ, and how they cancoexist. Servlet api jar download tomcat for mac.

Nfs either using Docker for Mac via d4m-nfs or with DockerToobox (cleanest, only thing you need to take care of is paths which gets different) docker-sync or similar rsync/event based syncing (probably fastest, but you'll need to change your setup for it, and you might run into sync issues) 👎.

The Docker Toolbox environment

Docker Toolbox installs docker, docker-compose, and docker-machine in/usr/local/bin on your Mac. It also installs VirtualBox. At installation time,Toolbox uses docker-machine to provision a VirtualBox VM called default,running the boot2docker Linux distribution, with Docker Enginewith certificates located on your Mac at$HOME/.docker/machine/machines/default.

Before you use docker or docker-compose on your Mac, you typically use thecommand eval $(docker-machine env default) to set environment variables sothat docker or docker-compose know how to talk to Docker Engine running onVirtualBox.

This setup is shown in the following diagram.

The Docker Desktop on Mac environment

Docker Desktop on Mac is a Mac-native application, that you install in /Applications.At installation time, it creates symlinks in /usr/local/bin for docker anddocker-compose and others, to the commands in the applicationbundle, in /Applications/Docker.app/Contents/Resources/bin.

Here are some key points to know about Docker Desktop on Mac before you get started:

  • Docker Desktop uses HyperKit instead of Virtual Box. Hyperkit is a lightweight macOS virtualization solution built on top of Hypervisor.framework in macOS 10.10 Yosemite and higher.

  • When you install Docker Desktop on Mac, machines created with Docker Machine are not affected.

  • Docker Desktop does not use docker-machine to provision its VM.The Docker Engine API is exposed on asocket available to the Mac host at /var/run/docker.sock. This is thedefault location Docker and Docker Compose clients use to connect tothe Docker daemon, so you can use docker and docker-compose CLI commandson your Mac.

This setup is shown in the following diagram.

With Docker Desktop on Mac, you only get (and only usually need) one VM, managed by Docker Desktop. Docker Desktop automatically upgrades the Docker client and daemon when updates are available.

Also note that Docker Desktop can’t route traffic to containers, so you can’tdirectly access an exposed port on a running container from the hosting machine.

If you do need multiple VMs, such as when testing multi-node swarms, you cancontinue to use Docker Machine, which operates outside the scope of Docker Desktop. See Docker Toolbox and Docker Desktopcoexistence.

Setting up to run Docker Desktop on Mac

  1. Check whether Toolbox DOCKER environment variables are set:

    If this command returns no output, you are ready to use Docker Desktop.

    If it returns output (as shown in the example), unset the DOCKER environment variables to make the client talk to the Docker Desktop Engine (next step).

  2. Run the unset command on the following DOCKER environment variables tounset them in the current shell.

Now, this command should return no output.

If you are using a Bash shell, you can use unset ${!DOCKER_*} to unset all DOCKER environment variables at once. (This does not work in other shells such as zsh; you need to unset each variable individually.)

Note: If you have a shell script as part of your profile that sets theseDOCKER environment variables automatically each time you open a commandwindow, then you need to unset these each time you want to use Docker Desktop.

If you install Docker Desktop on a machine where Docker Toolbox is installed.

Docker Desktop replaces the docker and docker-compose command lines in/usr/local/bin with symlinks to its own versions.

See also Unset environment variables in the currentshellin the Docker Machine topics.

Docker Toolbox and Docker Desktop coexistence

You can use Docker Desktop and Docker Toolbox together on the same machine. Whenyou want to use Docker Desktop make sure all DOCKER environment variables areunset. You can do this in bash with unset ${!DOCKER_*}. When you want to useone of the VirtualBox VMs you have set with docker-machine, just run a eval$(docker-machine env default) (or the name of the machine you want to target).This switches the current command shell to talk to the specified Toolboxmachine.

This setup is represented in the following diagram.

Using different versions of Docker tools

The coexistence setup works as is as long as your VirtualBox VMs provisionedwith docker-machine run the same version of Docker Engine as Docker Desktop.If you need to use VMs running older versions of Docker Engine, you can use atool like Docker Version Manager to manageseveral versions of docker client.

Checking component versions

Ideally, the Docker CLI client and Docker Engine should be the same version.Mismatches between client and server, and host machines you might havecreated with Docker Machine can cause problems (client can’t talk to the serveror host machines).

If you have already installed Docker Toolbox, and theninstalled Docker Desktop, you might get a newer version of the Docker client. Run docker version in a command shell to see client and server versions. In this example, the client installed with Docker Desktop is Version: 19.03.1 and the server (which was installed earlier with Toolbox) is Version: 19.03.2.

Also, if you created machines with Docker Machine (installed with Toolbox) thenupgraded or installed Docker Desktop, you might have machines running differentversions of Engine. Run docker-machine ls to view version information for themachines you created. In this example, the DOCKER column shows that each machineis running a different version of server.

You might also run into a similar situation with Docker Universal Control Plane (UCP).

There are a few ways to address this problem and keep using your oldermachines. One solution is to use a version manager likeDVM.

Migrating from Docker Toolbox to Docker Desktop on Mac

Docker Desktop does not propose Toolbox image migration as part of itsinstaller since version 18.01.0. You can migrate existing DockerToolbox images with the scripts described below. (This migrationcannot merge images from both Docker and Toolbox: any existing Docker image isreplaced by the Toolbox images.)

Run the following shell commands in a terminal. You need a workingqemu-img; it is part of the qemu package in both MacPorts and Brew:

First, find your Toolbox disk images. You probably have just one:~/.docker/machine/machines/default/disk.vmdk.

Second, find out the location and format of the disk image used by your DockerDesktop.

In this case the format is raw (it could have been qcow2), and the locationis ~/Library/Containers/com.docker.docker/Data/vms/0/.

Then:

  • if your format is qcow2, run
  • if your format is raw, run the following command. If you are short on diskspace, it is likely to fail.

Finally (optional), if you are done with Docker Toolbox, you may fullyuninstallit.

How do I uninstall Docker Toolbox?

You might decide that you do not need Toolbox now that you have Docker Desktop,and want to uninstall it. For details on how to perform a clean uninstall ofToolbox on Mac, see How to uninstallToolbox in theToolbox Mac topics.

mac, windows, alpha, beta, toolbox, docker-machine, tutorial

Article ID: KB000556

Issue

During DTR reconfiguring with NFS, the following error message can occur:

Prerequisites

Before performing these steps, you must meet the following requirements:

  • UCP 2.2.x
  • DTR 2.2.x/2.3.x

Resolution

UCP scheduler options can block deployment of the DTR NFS volume to certain swarm nodes.

  1. Log into the UCP GUI.
  2. Browse to Admin Settings —> Scheduler.
  3. Confirm the following setting is enabled:Allow Administrators To Deploy Containers On UCP Managers Or Nodes Running DTR

Note: It is not best practice to add workloads to UCP or DTR managers. Only do so if absolutely necessary.

What's Next

Documentation reference: https://docs.docker.com/datacenter/dtr/2.3/guides/admin/configure/external-storage/nfs/