项目作者: pecigonzalo

项目描述 :
VMWare Workstation driver for Docker Machine https://github.com/docker/machine
高级语言: Go
项目地址: git://github.com/pecigonzalo/docker-machine-vmwareworkstation.git
创建时间: 2015-11-17T00:47:40Z
项目社区:https://github.com/pecigonzalo/docker-machine-vmwareworkstation

开源协议:Apache License 2.0

下载


Docker Machine VMware Workstation Driver

Join the chat at https://gitter.im/pecigonzalo/docker-machine-vmwareworkstation
Windows Build Status

This plugin for Docker Machine creates
Docker hosts locally on a VMware
Workstation
.

This is a placeholder and collaboration point to add a VMware workstation
driver for Docker Machine. This driver reuses part of the code from the fusion
driver

bundled with Docker Machine (as both have the same executable) and includes
additional code from Packer VMware driver to detect the
location of the files on Windows systems.

This is still a work-in-progress (WIP). I’m working to add the functionality
listed on the TODO list. Suggestions and contributions are welcome.

TODO

  • drivers/vmwareworkstation/workstation.go: Rework file for vmware workstation
  • add windows support
  • add cmd/machine-driver-vmwareworkstation.go
  • Add Linux/OSX support
  • Add dhcplease file discovery on windows
  • Add tests cases
  • Create makefile
  • Add docs/drivers/vm-workstation.md

Requirements

Installation

The latest version of docker-machine-driver-vmwareworkstation binary is
available on the
“Releases”
page.

Place the executable in the directory containing docker-machine.exe, or else
add it to your $PATH.

Installing with Docker Toolbox

  1. Install Docker Toolbox without VirtualBox

    DockerToolbox-.exe /COMPONENTS="Docker,DockerMachine"

  2. Replace contents of C:\Program Files\Docker Toolbox\start.sh with this script.

    ```none

    !/bin/bash

    export PATH=”$PATH:/mnt/c/Program Files (x86)/VMware/VMware Workstation”

    trap ‘[ “$?” -eq 0 ] || read -p “Looks like something went wrong in step ´$STEP´… Press any key to continue…”‘ EXIT

    VM=${DOCKER_MACHINE_NAME-default}
    DOCKER_MACHINE=./docker-machine.exe

    BLUE=’\033[1;34m’
    GREEN=’\033[0;32m’
    NC=’\033[0m’

  1. if [ ! -f "${DOCKER_MACHINE}" ]; then
  2. echo "Docker Machine is not installed. Please re-run the Toolbox Installer and try again."
  3. exit 1
  4. fi
  5. vmrun.exe list | grep \""${VM}"\" &> /dev/null
  6. VM_EXISTS_CODE=$?
  7. set -e
  8. STEP="Checking if machine $VM exists"
  9. if [ $VM_EXISTS_CODE -eq 1 ]; then
  10. "${DOCKER_MACHINE}" rm -f "${VM}" &> /dev/null || :
  11. rm -rf ~/.docker/machine/machines/"${VM}"
  12. #set proxy variables if they exists
  13. if [ -n ${HTTP_PROXY+x} ]; then
  14. PROXY_ENV="$PROXY_ENV --engine-env HTTP_PROXY=$HTTP_PROXY"
  15. fi
  16. if [ -n ${HTTPS_PROXY+x} ]; then
  17. PROXY_ENV="$PROXY_ENV --engine-env HTTPS_PROXY=$HTTPS_PROXY"
  18. fi
  19. if [ -n ${NO_PROXY+x} ]; then
  20. PROXY_ENV="$PROXY_ENV --engine-env NO_PROXY=$NO_PROXY"
  21. fi
  22. "${DOCKER_MACHINE}" create -d vmwareworkstation $PROXY_ENV "${VM}"
  23. fi
  24. STEP="Checking status on $VM"
  25. VM_STATUS="$(${DOCKER_MACHINE} status ${VM} 2>&1)"
  26. if [ "${VM_STATUS}" != "Running" ]; then
  27. "${DOCKER_MACHINE}" start "${VM}"
  28. yes | "${DOCKER_MACHINE}" regenerate-certs "${VM}"
  29. fi
  30. STEP="Setting env"
  31. eval "$(${DOCKER_MACHINE} env --shell=bash ${VM})"
  32. STEP="Finalize"
  33. clear
  34. cat << EOF
  35. ## .
  36. ## ## ## ==
  37. ## ## ## ## ## ===
  38. /"""""""""""""""""\___/ ===
  39. ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
  40. \______ o __/
  41. \ \ __/
  42. \____\_______/
  43. EOF
  44. echo -e "${BLUE}docker${NC} is configured to use the ${GREEN}${VM}${NC} machine with IP ${GREEN}$(${DOCKER_MACHINE} ip ${VM})${NC}"
  45. echo "For help getting started, check out the docs at https://docs.docker.com"
  46. echo
  47. cd
  48. docker () {
  49. MSYS_NO_PATHCONV=1 docker.exe "$@"
  50. }
  51. export -f docker
  52. if [ $# -eq 0 ]; then
  53. echo "Start interactive shell"
  54. exec "$BASH" --login -i
  55. else
  56. echo "Start shell with command"
  57. exec "$BASH" -c "$*"
  58. fi
  59. ```
  60. Credit for the above script to [@gtirloni](https://github.com/gtirloni)

Usage

Official documentation for Docker Machine is available
here.

To create a VMware Workstation based Docker machine, just run this
command:

  1. $ docker-machine create --driver=vmwareworkstation dev

Options

  • --vmwareworkstation-boot2docker-url: The URL of the Boot2Docker image.
  • --vmwareworkstation-disk-size: Size of disk for the host VM (in MB).
  • --vmwareworkstation-memory-size: Size of memory for the host VM (in MB).
  • --vmwareworkstation-cpu-count: Number of CPUs to use to create the VM (-1 to use the number of CPUs available).
  • --vmwareworkstation-ssh-user: SSH user
  • --vmwareworkstation-ssh-password: SSH password
  • --vmwareworkstation-no-share: Disable the mount of your home directory
  • --vmwareworkstation-share-folder: Mount the specified directory instead of the default home location. Format: name:dir
  • --vmwareworkstation-guest-share-link: Additional link to the shared mount in the guest

The --vmwareworkstation-boot2docker-url flag takes a few different forms. By
default, if no value is specified for this flag, Machine checks locally for a
Boot2Docker ISO. If one is found, that will be used as the ISO for the new
machine. If one is not found, the latest ISO release available on
boot2docker/boot2docker will be
downloaded and stored locally for future use. Note that this means you must run
docker-machine upgrade deliberately on a machine if you wish to update the
“cached” Boot2Docker ISO.

This is the default behavior (when --vmwareworkstation-boot2docker-url=""),
but the option also supports specifying ISOs by the http:// and file://
protocols.

Environment variables and default values:

CLI option Environment variable Default
--vmwareworkstation-boot2docker-url WORKSTATION_BOOT2DOCKER_URL Latest boot2docker url
--vmwareworkstation-cpu-count WORKSTATION_CPU_COUNT 1
--vmwareworkstation-disk-size WORKSTATION_DISK_SIZE 20000
--vmwareworkstation-memory-size WORKSTATION_MEMORY_SIZE 1024
--vmwareworkstation-ssh-user WORKSTATION_SSH_USER docker
--vmwareworkstation-ssh-password WORKSTATION_SSH_PASSWORD tcuser
--vmwareworkstation-no-share WORKSTATION_NO_SHARE false
--vmwareworkstation-share-folder WORKSTATION_SHARE_FOLDER Linux: /home Windows: C:\Users\
--vmwareworkstation-share-compat WORKSTATION_SHARE_COMPAT Windows: /c/Users

Development

Build from Source

If you wish to work on VMware Workstation Driver for Docker machine, you’ll
first need:

  • Go installed (version 1.6+ is required).

    • Make sure Go is properly installed, including setting up a GOPATH.
  • MSYS

    • Make We well need to use pacman to install make
  • Currently, the build only works on Windows (WIP to get it to work on
    other platforms)

To build the plugin executable binary, run these commands:

  1. $ go get -d github.com/pecigonzalo/docker-machine-vmwareworkstation
  2. $ cd $GOPATH/github.com/pecigonzalo/docker-machine-vmwareworkstation
  3. $ make

The build creates the binary as bin/docker-machine-driver-vmwareworkstation. If you want, copy it to ${GOPATH}/bin/.

Authors

Credits