docker / kitematic

Visual Docker Container Management on Mac & Windows
https://kitematic.com
Apache License 2.0
12.25k stars 1.41k forks source link

Add integration for one or many external Docker hosts (different docker-machine providers) #231

Open develar opened 9 years ago

develar commented 9 years ago

I cannot use VirtualBox because I don't have enough memory for it — Parallels Desktop is much better and I have configured vagrant box. https://github.com/Parallels/vagrant-parallels/issues/115

So — I just want to open Kinematic and Kinematic should not install VirtualBox/boot2docker — use existing installation (DOCKER_HOST env).

ryansch commented 9 years ago

I'd be interested in this to enable our use of vmware fusion.

proudlygeek commented 9 years ago

:+1: I really dig this one!

develar commented 9 years ago

@ryansch Exactly. Regardless of performance (Vmware is closer, http://www.tekrevue.com/parallels-10-fusion-7-virtualbox-benchmark/), vagrant allows to customize VM more precisely (for example, by default, VirtualBox consumes more than 1GB RAM — vagrant parallels box just restricted to 512 MB and it is enough).

hadronzoo commented 9 years ago

:+1:

caseywebdev commented 9 years ago

:+1:

tgoeke commented 9 years ago

I would vote for supporting VMware Fusion with docker machine.

mainiak commented 9 years ago

:+1:

dougborg commented 9 years ago

+1 for the ability to specify a driver for docker-machine!

dougborg commented 9 years ago

Looks like you can work around this for now by using docker-machine to create and configure a box with whatever driver you like. Just call it dev and it looks like Kitematic will just use that one.

After installing kitematic and starting it up for the first time:

# Kitematic creates a virtualbox vm via docker-machine - this is hard-coded for now.
$ docker-machine ls
NAME           ACTIVE   DRIVER         STATE     URL                          SWARM
dev            *        virtualbox     Running   tcp://192.168.99.100:2376

# close kitematic

# remove the default vm
$ docker-machine rm dev
$ docker-machine ls
NAME           ACTIVE   DRIVER         STATE     URL                          SWARM

# create a new `dev` machine with whatever driver you like:
$ docker-machine create dev -d vmwarefusion
INFO[0000] Creating SSH key...
INFO[0000] Creating VM...
INFO[0000] Starting dev...
INFO[0000] Waiting for VM to come online...
INFO[0042] "dev" has been created and is now the active machine.
INFO[0042] To point your Docker client at it, run this in your shell: $(docker-machine env dev)
$ docker-machine ls
NAME   ACTIVE   DRIVER         STATE     URL                          SWARM
dev    *        vmwarefusion   Running   tcp://192.168.133.132:2376

# start Kitematic - it will say it is "Starting Docker VM",
# but it is really just using the one you created:

$ docker-machine ls
NAME   ACTIVE   DRIVER         STATE     URL                          SWARM
dev    *        vmwarefusion   Running   tcp://192.168.133.132:2376 

You can now start containers, etc using the Kitematic UI and they will use the dev vm you created manually.

So far the only thing I have found that doesn't work is using the Kismatic UI to browse/edit files you have mounted as volumes in the container. They must be setting that up using a mount from the virtualbox vm created with vbox commands, or something along those lines. That is one limitation for the work-around and something else that will have to be implemented for each driver or in a more generic way.

tgoeke commented 9 years ago

Using the manual method is fine - except I don't want to install VirtualBox at all, it messes with networks etc, so it would be nice to be able to skip the VB install.

dougborg commented 9 years ago

Yep. Good point. I tried uninstalling VirtualBox, but Kitematic installed it again the next time it started up.

sammcj commented 9 years ago

Just went to try it and saw it started downloading Virtualbox without even prompting - had to quickly kill it off.

I already have boot2docker and docker machine setup with VMware Fusion which is a lot faster and more reliable than Virtualbox - it would be nice if Kitematic recognised this.

jmorganca commented 9 years ago

Hi all. Thanks for creating this issue!

The good news is that we use docker-machine under the hood, which is quickly adding support for different providers such as VMware fusion etc.

I'll mark this as a feature for adding different providers, but also understanding that it's inconvenient to automatically install VirtualBox if that's not what's expected.

dougborg commented 9 years ago

Just to follow up on my earlier comment, it looks like the host volume support is provided by docker machine host drivers and host volume mounting is not yet supported by the vmwarefusion driver: https://github.com/docker/machine/issues/641.

rickard-von-essen commented 9 years ago

@dougborg Is host volume mounting required to get kitematic to work? I wrote the Parallels Desktop driver and is eager to add support for it in kitematic but it currently lacks host volume mounting because of legal issues with the drivers.

Is there any work done on abstracting out the "driver" layer?

develar commented 9 years ago

@rickard-von-essen I don't get your note about parallels. Host volumes works perfectly – specified in my vagrant file (config.vm.synced_folder "/Users/develar", "/Users/develar").

rickard-von-essen commented 9 years ago

@develar But not in docker-machine + boot2docker.iso since it requires that boot2docker.iso to include Parallels Tools which is currently not supported by the EULA see 1.7. Parallels Tool on http://www.parallels.com/about/legal/eula/ .

dougborg commented 9 years ago

@rickard-von-essen: I think host volume support is important in the context of this user story / feature: adding support for other docker-machine providers. While I am sure there are some situations where mounting volumes from the OSX host is not needed, I find it is necessary in most of the work I do with Docker. Kitematic already has a nice interface built up around mounting and viewing contents of host volumes and I think it would be a shame for those features to be unavailable if you use another provider. If you provide support for other providers without the host volume mounting feature, I suspect it would confuse users.

jamroks commented 9 years ago
   + 1 on this one !!!  On Mac Os x nothing compare to vmware Fusion when using virtualization : 

It used to be only Virtual Box around me, But nowadays i see a lot of people now swithing to Fusion for all the reason mention above . It's a growing user base of Fusion on Mac OS happening . And Yes please Host Volume support is a must for any productive workflow between Host-VM-Docker

nuarch commented 9 years ago

Please add this!

jchannon commented 9 years ago

I just came across KiteMatic and thought this looks cool!

But then I saw it used VirtualBox

Please add the ability to use VMFusion!

Thank you

jmorganca commented 9 years ago

@jchannon Hah! Loved this comment. Thanks for the feedback :smiley:

philjones88 commented 9 years ago

:+1: Fusion user here

develar commented 9 years ago

See details here — https://github.com/docker/machine/pull/939#issuecomment-94168085 "Parallels are working on Parallel Tools for boot2docker."

jchannon commented 9 years ago

@jeffdm how goes the progress for this feature?

jmorganca commented 9 years ago

@jchannon Right now we're working to nail the (default) virtualbox experience but this is strongly in demand.

That said, this is strongly in demand. Both so KM users can deploy an app to a cloud server or use alternative Desktop virtualization system.

MattRogish commented 9 years ago

:+1: Also want VMWare Fusion support. :D Thanks!!

andrerom commented 9 years ago

Fusion supported wanted :+1: (will try the manual way in between, but I also have limited space on my macbook, so this would be great to be able to uninstall virtualbox)

taiidani commented 9 years ago

Definitely a :+1: here too. I support the developer machines at my workplace and we use a mix of Vagrant+VMWare and Vagrant+Virtualbox. It would be great if Virtualbox wasn't a requirement.

stunthamster commented 9 years ago

Another thumbs up from me on this feature - would be awesome to be able to use VMware Fusion on my Macbook.

iby commented 9 years ago

:+1: for Parallels or anything else but VirtualBox!

ilboud commented 9 years ago

nnam commented 9 years ago

image

justinmayer commented 9 years ago

Yet another bloke looking forward to VMware Fusion support. (^_^)

danielmt commented 9 years ago

VMWare Fusion support, please. Think of the children.

fgimian commented 9 years ago

+1 for me too, I'm all about VMware Fusion :smile: Perhaps at a minimum, please don't install Virtualbox automatically and provide some instructions on creating the required VM in the terminal.

Should go something like this:

# Download and install docker-machine
curl -L -o /usr/local/bin/docker-machine https://github.com/docker/machine/releases/download/v0.3.0/docker-machine_darwin-amd64

# Make docker-machine executable
chmod +x /usr/local/bin/docker-machine

# Create the dev docker machine for use with Kitematic
docker-machine create --driver=vmwarefusion dev

# Add docker-machine initialisation to bash profile
echo 'eval "$(docker-machine env dev)"' >> ~/.bash_profile 

I can confirm this procedure works as expected. Right now the biggest issue is that Kitematic forces us to install Virtualbox (ewwwww ....).

Cheers Fotis

P.S.: Kitematic is awesome, thank you so much for developing and also making it open source!!

HardieBoeve commented 9 years ago

+1 for not installing Virtualbox automatically, but provide an option to select the desired vm provider (vmware, parallels, etc).

dekobon commented 9 years ago

+1 for not installing Virtualbox automatically from me as well.

Supporting the settings:

DOCKER_CERT_PATH DOCKER_CLIENT_TIMEOUT DOCKER_HOST DOCKER_TLS_VERIFY

Will let Kitematic be more than a toy. If these are supported, you could deploy to production with it on a platform like Joyent's Triton.

timfallmk commented 9 years ago

Working on this with upcoming PR. https://github.com/timfallmk/kitematic. Will add support for all docker-machine supported backends eventually. This is the continuation of a project from DockerCon Hackathon 2015.

fgimian commented 9 years ago

Thank you so much, that would be awesome!! :smile:

DieterReuter commented 9 years ago

@timfallmk just checked your readme and the small screencast. This looks really awesome, would love to see this merged soon. What about to use docker-machine ls to discover all locally defined Docker engines and displays this list to the user for a preselection? Ping @jeffdm.

tonypiazza commented 9 years ago

+1 for supporting alternate providers such as VMware Fusion (my first choice) +1 for not requiring installation of VirtualBox

rendhalver commented 8 years ago

I also prefer VMware Fusion over Virtualbox. I would also be happy to he test code to get this working.

timfallmk commented 8 years ago

Just a status update to this issue. Progress is being tracked over here and we're moving along quite well!

legal90 commented 8 years ago

@timfallmk Thanks! Just for your information: Parallels driver for Docker Machine is on the way: https://github.com/docker/machine/pull/939 It would be great to get supported in Kitematic as a yet another local provider.

timfallmk commented 8 years ago

@legal90 That's awesome! As we discussed for the project (and you can see in the timeline), we're probably going to stick to a limited set of drivers for the first "MVP" release in a few months, but the idea is to add support for everything machine supports eventually.

dekobon commented 8 years ago

@timfallmk What about providers that don't need any special settings? For example a remote Docker server setup with the standard docker environment variables like:

DOCKER_CLIENT_TIMEOUT
DOCKER_CERT_PATH
DOCKER_HOST
DOCKER_TLS_VERIFY
timfallmk commented 8 years ago

@dekobon Are you suggesting using the machine "generic" driver for that kind of input? If so, how would you like to see the UI flow for inputting that kind of endpoint?

dekobon commented 8 years ago

@timfallmk I envision a generic driver that can be selected where you can enter in values for all of the docker variables or optionally load them from a config file. If this was possible it would be easy to test kitematic against many platforms. In fact, this seems like it should be on the top of the list for support because it is vendor agnostic and in fact supporting the docker way of doing things. On Jul 29, 2015 2:50 PM, "Tim" notifications@github.com wrote:

@dekobon https://github.com/dekobon Are you suggesting using the driver "generic" driver for that kind of input? If so, how would you like to see the UI flow for inputting that kind of endpoint?

— Reply to this email directly or view it on GitHub https://github.com/kitematic/kitematic/issues/231#issuecomment-126107101 .

timfallmk commented 8 years ago

@dekobon Actually the "generic" driver is just meant to cover platforms that machine doesn't specifically support. Since we want the process to be as easy as possible, we wouldn't necessarily encourage that right away. However, seeing that it would be relatively trivial to add a settings page for manual "generic" provider input, this could possibly be added to the list.

First and foremost we'd like to get the specific drivers working so people can "one click" use them.