docker/roadmap

Docker Desktop UI: Mount volumes, add/edit environment vars, add/edit ports.

commanderfun opened this issue ยท 42 comments

Tell us about your request
I would love additional feature parity with Kitematic. It would be great if Docker Desktop's UI could mount volumes, add/edit environment variables, add/edit exposed ports.

Which service(s) is this request for?
Docker Desktop for Mac

Tell us about the problem you're trying to solve. What are you trying to do, and why is it hard?
I can't stop using Kitematic until Docker Desktop reaches feature parity.

Are you currently working around the issue?
Yes, by using Kitematic.

@commanderfun thank you for this really well written request!

Great feedback - is there any other key feature of Kitematic you would like us to bring into the new UI?
Feature parity would be great but knowing a top N list means we can attack this in a logical order :)

Thanks @nebuk89

Here's a list of Kitematic features that I would like to see added to Docker Desktop in order of priority.

  1. Ability to mount/map volumes from a local folder into the container's docker folder. i.e. Mount the volumes that were already defined in the Dockerfile used to build the image.

  2. Ability to rename a running container. Like you can on Kitematic's General > Container Info > Name field.

  3. Ability to set/edit/remove environment variables in a running container.

  4. Ability to add/edit ports. The Internal to external port mappings.

The rest of Kitematic's features seem less important to me but I can see how some users might like to see the ability to configure links between containers via the Docker Desktop UI.

Thanks!

docker-feature-01
docker-feature-02
docker-feature-03

Hello. I was linked to here from docker-archive/toolbox#891.

I would like to request that you support GUI-based modification of container restart policies, especially for Docker-Compose containers. This was a feature that I used quite a bit in Kitematic, but was unfortunately not available in Toolbox. Without Kitematic, the only way for me to modify the restart policies on my live containers are to destroy them and then recreate them with the restart policy docker-compose.yml modified. Maybe there is a pure CLI way to modify the restart policies on the live containers, but I have not come across it in the documentation.

Here's a picture of the Kitematic functionality that I'm referring to:
kitematic_restart_policy

@commanderfun @nebuk89 any thoughts on my suggestion?

@ecbrodie In my opinion it would be a good idea to incorporate ALL of Kitematic's features into Docker Desktop. I hope this is what they decide to do.

Eep sorry for my slow response!

@ecbrodie restart policies are a good idea! and @commanderfun thank you for the detailed overview!

We are working on adding some of these features in currently to desktop with more on the way. Right now we are doing a main images UI and will be reviewing going into our Q3 (~Aug) what bits we do next :) your contributions here help us work that out!

We are pretty much done with design for the local images part of the new UI at the moment but any last minute thoughts would be appreciated! (this is JUST a design, implementation may vary ๐Ÿ˜„ )
image

@nebuk89 looks alright to me.

It's hard to discern from this screenshot how the restart policy on the container would be configured. Perhaps through the hamburger menu beside where the mouse is hovering over? Anyway, I appreciate that my feedback is being accepted here.

Bump. Kitematic was way better, will need to dig out my old laptop to copy it over and see how it fairs on an M1 chip. Kitematic actually lets you manage your containers. Docker Desktop doesnt seem to offer much.

@nebuk89, any update regarding this issue, since Kitematic has been already deprecated? Changing volumes, ports, environment variables and the restart policy using the ui was really handy.

@nebuk89 hello, happy new year :), I'm thinking that it would be really great to add an "Environments variables" section at least in the "Run" Window.

image

I'm using the "desktop" version to easily guide "not IT" people to run programs or tools.
If they could fill the Environments variables through a form better than by a CLI this would be so much easier and user-friendly for them!

Awesome, great feedback @mathias22osterhagen22! We're working on some stuff related to this currently and I'd love to chat more, if you want to drop me an email at steph.rifai@docker.com we can find a time :)

@nebuk89 hello, happy new year :), I'm thinking that it would be really great to add an "Environments variables" section at least in the "Run" Window.

image

I'm using the "desktop" version to easily guide "not IT" people to run programs or tools. If they could fill the Environments variables through a form better than by a CLI this would be so much easier and user-friendly for them!

Im in need of this feature as well

Awesome, we're looking into adding environment variables!

Following this. Also still regularly falling back to kitematic to set environment variables / volumes & port management. Would be great if this can be added to docker desktop.

Looking forward on this

One thing that may have to be looked into is if the dashboard should also provide the option to take environment variable values from the host's environment.

The docker CLI allows -e / --env to only specify the name of the environment variable; when omitting the value (and no =), it looks up the value of the given environment variable in the current environment. This can be useful in situations where you have certain environment variables defined in your .profile (which could be, for example, a token).

For example;

$ export SOME_ENV_VAR_IN_MY_ENVIRONMENT="hello env var"
$ docker run --rm -e SOME_ENV_VAR_IN_MY_ENVIRONMENT busybox sh -c 'echo $SOME_ENV_VAR_IN_MY_ENVIRONMENT'
hello env var

Note that omitting the = here is important, because adding = means "set the value to an empty string"; subtle difference, but sometimes important;

$ docker run --rm -e SOME_ENV_VAR_IN_MY_ENVIRONMENT= busybox sh -c 'echo $SOME_ENV_VAR_IN_MY_ENVIRONMENT'

So if that should be supported, the dashboard should provide;

  • an option to explicitly set "no value" (take from environment)
  • perhaps it's possible to have it propagate a drop-down with names of environment variables in the current environment

Hi Folks! Would love to get some feedback on the designs for this.

  • What's useful?
  • What's missing?
  • Anything confusing?
  • Anything on the designs that are just "nice to have"?

If anyone is open to setting up some time to chat more about that would be awesome! You can reach out to me at steph.rifai@docker.com
Screen Shot 2022-06-03 at 9 16 56 AM

The overall design looks simply fine. I wonder if you'll be able to edit these settings after creating the container.

The design looks great, but as @MysteryMS I wonder if that options will be available after the container creation, like on kitematic.
Also, the ports section seems pretty... rigid? Not as configurable as the Env vars one, for example (multi-entry support).

i'm still using kitematic or the portainer plugin in MacOS with MacBook m1...
docker desktop is still very simple for me

It would be nice if, since kitematic has at least been deprecated, all the functionalities of adding folders, ports, variables, and all those incredible functionalities that it offered are included in docker desktop

My frame of reference is the Synology NAS Disk Station Docker Native App where I can set the CPU priority, maximum container size (eg 4GB), Environment variables, ports, volumes

Here is the Environment Tab
image

Here is the General Tab with the CPU and Memory settings as well as Access Control...
image

Awesome everyone, thanks for this feedback. We'll take a look into it and see what we can prioritize next!

mgara commented

Ladies, Gents, Any news on this feature ?

I continue using kitematic ๐Ÿ˜†

Two years and still nothing?

mgara commented

Two years and still nothing?

Im using Kitematic ...

i found a way to do it manually but it's a bit of a process (this is for linux)

  1. quit and exit docker desktop

  2. locate where the vm disk is stored

to do this i ran this command: docker context ls
which returned this:

NAME                TYPE                DESCRIPTION                               DOCKER ENDPOINT                                   KUBERNETES ENDPOINT   ORCHESTRATOR
default             moby                Current DOCKER_HOST based configuration   unix:///var/run/docker.sock                                             swarm
desktop-linux *     moby                                                          unix:///home/andrew/.docker/desktop/docker.sock

i looked into some of the paths listed under 'DOCKER ENDPOINT' and ended up finding it here: /home/andrew/.docker/desktop/vms/0/data

  1. mount the disk (double check to make sure docker isn't running)

first i ran fdisk -l ./Docker.raw
which returned:

Disk ./Docker.raw: 64 GiB, 68719476736 bytes, 134217728 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x29e4f175

Device        Boot Start       End   Sectors Size Id Type
./Docker.raw1       2048 134217727 134215680  64G 83 Linux

now get the offset value: Sector size * Start = Offset
in my case it's: 512 * 2048 = 1048576

now make a directory to mount to: sudo mkdir /media/Docker

and mount the image: sudo mount -o offset=1048576,rw ./Docker.raw /media/Docker

  1. to browse some of the directories you'll need root permission (i ran sudo nautilus)

  2. in my case after mounted i found hostconfig.json and config.v2.json under /media/Docker/docker/containers/<your container hash>

  3. edit those files (or whatever else you need to) to change the environment variables / port (you'll need root permission to edit)

  4. when done unmount the image with: sudo umount /media/Docker

Congrats you've now changed what you needed

P.S. tried installing kitematic and was met with this:

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Note, selecting 'kitematic' instead of './Kitematic-0.17.13_amd64.deb'
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 kitematic : Depends: gvfs-bin but it is not installable
             Depends: python but it is not installable
E: Unable to correct problems, you have held broken packages.

after seeing this i didn't feel like trying to force it to work, and opted to find another way without installing more stuff

Hi Folks! Would love to get some feedback on the designs for this.

  • What's useful?
  • What's missing?
  • Anything confusing?
  • Anything on the designs that are just "nice to have"?

It's been almost a year, was this idea and design never taken any further?

i'm still using kitematic or the portainer plugin in MacOS with MacBook m1... docker desktop is still very simple for me

It would be nice if, since kitematic has at least been deprecated, all the functionalities of adding folders, ports, variables, and all those incredible functionalities that it offered are included in docker desktop

I can't agree more. I come from Unraid, and when I used docker desktop for the first time, I realized the gap there was in terms of UI functionalities. It's looking good. That's it. I want to be able to edit variables, docker names, etc.
I have still no idea if it's possible, I'm tired of searching how-to. I know what I want to do and I'm limited.
Reading this topic confirms what I slowly realized.

Edit : after testing kitematic for 30secs : yep, better, easier, stronger, technologic. Should not have been discontinued.
Edit 2 : depending on what you need to do, I would recommend using both, hilarous.

Sorry if my comment isnt helpfull to anyone but... i try to find sience hours a way to edit or add after creating a container the enviroment variables... it seems on youtube is not one single tutorial available for the Desktop Version of Docker. Everyone show how it works in Terminal, but thats not helpfull for people like me, they have no base knowledge about docker and linux...

Sorry if my comment isnt helpfull to anyone but... i try to find sience hours a way to edit or add after creating a container the enviroment variables... it seems on youtube is not one single tutorial available for the Desktop Version of Docker. Everyone show how it works in Terminal, but thats not helpfull for people like me, they have no base knowledge about docker and linux...

Um: #75 (comment)

I posted instructions in an earlier comment

Would be so much easier to do it directly within docker-desktop via a container settings page. On my end, I'm resorting to using portainer to manage my containers rather than using docker-desktop - at least while it is not possible to edit container' environment variables, volumes, port mapping etc after initial creation.

Would be so much easier to do it directly within docker-desktop via a container settings page. On my end, I'm resorting to using portainer to manage my containers rather than using docker-desktop - at least while it is not possible to edit container' environment variables, volumes, port mapping etc after initial creation.

exactly. people like me have no idea how to use the terminal... i jusdt want to run quick and easy my backends...

Note: docker-desktop does have extensions, one of which is indeed portainer, with an easy setup, so can be useful to edit container parameters after creation more easily than via docker-desktop itself.

Not sure though how to map volumes on the host to the docker-desktop extension container.

Otherwise, portainer can be easily run via docker through:

docker run -d -p 9000:9000 -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data -v /host-volume/:/container-volume/ portainer/portainer-ce:latest

Bump. Still looking for:

  • edit ENV VARS after run
  • edit restart policies after run
  • mount/edit volumes
  • edit/set ports

Essentially make the UI as useful as CLI at all...

it's most likely it's not gonna happen. not too soon. three years waiting for it. they even rolled the progress back. no hope at all anymore.

And Kitematic not work in Macs with M2 chip :(

it seems it's a handy feature, everyone feels this requirement, but after 3 years they don't do anything... great

And Kitematic not work in Macs with M2 chip :(

I take it back, yes it works :) I return to Kitematic

This is soo goddamn needed
How is it that caprover, a very small PASS OSS project has those features but not the goddamn official desktop app for Docker?
I need to change a container's binding port, volume bindings and env variables pretty frequently, I don't want to rebuild my whole image from scratch to do such basic changes!
It's not like it's difficult to implement either! Give me at least a text input to change those manually or a small doc to do so using CLI / editing config files

This is soo goddamn needed How is it that caprover, a very small PASS OSS project has those features but not the goddamn official desktop app for Docker? I need to change a container's binding port, volume bindings and env variables pretty frequently, I don't want to rebuild my whole image from scratch to do such basic changes! It's not like it's difficult to implement either! Give me at least a text input to change those manually or a small doc to do so using CLI / editing config files

I agree
Kitematic it was perfect, I don't understand why Docker Team haven't made a similar gui...