Is there a flag for docker-machine to set up docker on host to listen on another port but 2376
yes, use the -H
or --host
option of the docker daemon
command. To make your Docker daemon listen on port 443 (which should be open all most firewalls), start your docker daemon with:
docker daemon -H tcp://0.0.0.0:443
If your docker host operating system is Debian or Ubuntu, you can set this in the /etc/default/docker
file by adding the line DOCKER_OPTS="-H tcp://0.0.0.0:443"
.
If you are using RedHat or CentOS, add OPTIONS=-H tcp://0.0.0.0:443
to the /etc/sysconfig/docker
file.
Using docker-machine
To install a Docker engine with a custom --host
option, you would use docker machine with the --engine-opt
option:
docker-machine create --engine-opt host=tcp://0.0.0.0:443 ...
Then when you use docker-machine env ...
you will note that the DOCKER_HOST
environment variable will still be set with the default port 2376
, but now you can override it with 443
and it will work.
Unfortunately this won't allow docker-machine ls
to work as the 2376
value for the docker engine port is hardcoded in docker-machine drivers. If you really want to get docker-machine ls
to work for a different port, the easiest way would be to duplicate one of the docker-machine driver source file that you use and hardcode a different port ; then compile a new docker-machine binary with your new driver.
Let's say the IP address of the remote server is 11.22.33.44.
# create the docker engine using the generic Machine driver
docker-machine create --engine-opt host=tcp://0.0.0.0:443 --driver=generic --generic-ip-address=11.22.33.44 mytestengine
# prepare the environments so that docker client can connect on port 443
docker-machine env mytestengine
export DOCKER_HOST=tcp://11.22.33.44:443
# use docker client as usual
docker version