Updating Environment Variables of a Container usin

2019-02-23 18:57发布

问题:

I've setup a server with multiple docker containers, accessible with jwilders nginx reversre proxy. When you run the containers you can set the VIRTUAL_HOST environment variable. I've been trying to figure out a way of updating these after a container was launched.

A solution posted here :

You just stop docker daemon and change container config in

/var/lib/docker/containers/[container-id]/config.json

Requires you to stop the docker daemon, but I would prefer not to have to resort to that.

Another here, uses docker commit to preserve the instance information:

Having said that, you -can- preserve filesystem changes in the container, by committing it as a new image;

$ docker run -it --name=foobar alpine sh
$ docker commit foobar mynewimage
$ docker rm foobar
$ docker run -it --name=foobar mynewimage sh

Though this also seems to be a bit over the top for just changing an environment variable.

I've looked in docker update, but that is mainly for reconfiguring container resources.

Of course, if I have no other choice I will use either of the methods above, but I'm wondering if anyone has found some other solution?

回答1:

Destroy your container and start a new one up with the new environment variable using docker run -e .... It's identical to changing an environment variable on a running process, you stop it and restart with a new value passed in. Replace the concept of restarting a process with destroying and recreating a new container.

If your container contains files that cannot be lost, then you should be using volumes. The other contents of the container filesystem should be either disposable or immutable.