I am running the latest Docker Toolbox, using latest Oracle VirtualBox, with Windows 7 as a host OS.
I am trying to enable non-TLS access to Docker remote API, so I could use Postman REST client running on Windows and hit docker API running on docker-machine in the VirtualBox. I found that if Docker configuration included -H tcp://0.0.0.0:2375
, that would do the trick exposing the API on port 2375 of the docker machine, but for the life of me I can't find where this configuration is stored and can be changed.
I did docker-machine ssh
from the Toolbox CLI, and then went and pocked around the /etc/init.d/docker
file, but no changes to the file survive docker-machine restart
.
I was able to find answer to this question for Ubuntu and OSX, but not for Windows.
@CarlosRafaelRamirez mentioned the right place, but I will add a few details and provide more detailed, step-by-step instructions, because Windows devs are often not fluent in Linux ecosystem.
Disclaimer: following steps make it possible to hit Docker Remote API from Windows host, but please keep in mind two things:
docker-machine
and alldocker
CLI functionality.docker-machine ssh
remains operational, forcing one to SSH into docker machine to accessdocker
commands.Solution Now, here are the steps necessary to switch Docker API to non-TLS port. (Docker machine name is assumed to be "default". If your machine name has a different name, you will need to specify it in the commands below.)
docker-machine ip
command and note the IP address of the docker host machine. Then dodocker-machine ssh
cd /var/lib/boot2docker
sudo vi profile
This starts "vi" editor in elevated privileges mode required for editing "profile" file, where Docker host settings are. (If as a Windows user you are not familiar with vi, here's is super-basic crash course on it. When file is open in the vi, vi is not in editing mode. Press "i" to start edit mode. Now you can make changes. After you made all the changes, hitEsc
and thenZZ
to save changes and exit vi. If you need to exit vi without saving changes, afterEsc
please type:q!
and hit Enter. ":" turns on vi's command mode, and "q!" command means exit without saving. Detailed vi command info is here.)DOCKER_HOST='-H tcp://0.0.0.0:2375'
, and setDOCKER_TLS=no
. Save changes as described above.exit
to leave SSH session.docker-machine restart
After doocker machine has restarted, your sould be able to hit docker API URL, like
http://dokerMachineIp:2375/containers/json?all=1
, and get valid JSON back.This is the end of steps required to achieve the main goal.
However, if at this point you try to run
docker-machine config
ordocker images
, you will see an error message indicating that docker CLI client is trying to get to the Docker through the old port/TLS settings, which is understandable. What was not expected to me though, is that even after I followed all the Getting Started directions, and ranexport DOCKER_HOST=tcp://192.168.99.101:2375
andexport DOCKER_TLS_VERIFY=0
, resulting inthe result was the same:
If you see a problem with how I changed environment variables to point Docker CLI to the new Docker host address, please comment.
To work around this problem, use
docker-machine ssh
command and run yourdocker
commands after that.