How to use `docker-machine create` so that the docker engine listens on a custom port?

My service provider does not allow me to connect to docker on port 2376. Is there a flag for docker-machine to set up docker on host to listen on another port but 2376 so that commands like

docker-machine ls
docker-machine env

  • In docker, why does mounting a data volume container to a container makes it stop working?
  • Docker architecture for hosting a PHP website
  • Docker build fails in apt-get
  • How can I fix the permissions using docker on a bluemix volume?
  • Docker Repository Does Not Have a Release File on Running apt-get update on Ubuntu
  • How to remote desktop to a docker container with xrdp installed running on a remote server?
  • work? Now they fail because after creation of docker on the host the daemon starts on port 2376 which is not accessible. Sure, I could manually change that port after creation but then the mentioned commands are not aware to connect to the docker daemon on that host on another port but 2376.

  • Create a docker image/container from EC2 AMI
  • Seeing protocol error with ln for mounted volume inside docker
  • How do we get something unique like pod id or container id in kubernetes deployment yamls
  • Docker Toolbox Exit Status 1 Windows
  • how to kill lots of docker container processes effectively and faster?
  • Kubeadm + flannel , service not accessable
  • One Solution collect form web for “How to use `docker-machine create` so that the docker engine listens on a custom port?”

    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://

    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://".

    If you are using RedHat or CentOS, add OPTIONS=-H tcp:// 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:// ...

    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

    # create the docker engine using the generic Machine driver
    docker-machine create --engine-opt host=tcp:// --driver=generic --generic-ip-address= mytestengine
    # prepare the environments so that docker client can connect on port 443
    docker-machine env mytestengine
    export DOCKER_HOST=tcp://
    # use docker client as usual
    docker version
    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.