Automatically import boot2docker environment variables
boot2docker is a lightweight Linux distribution specifically made to run Docker containers. It's also the fastest and easiest way to run Docker on OSX. Similarly to Vagrant it uses VirtualBox under the hood and has a very similar CLI commands.
One annoying part of boot2docker is the fact that Docker server environment variables
(DOCKER_HOST
, DOCKER_TLS_VERIFY
and DOCKER_CERT_PATH
) have to be set in order
to use Docker CLI locally. So one way is to manually run init script:
$ boot2docker shellinit
Writing /Users/sosedoff/.boot2docker/certs/boot2docker-vm/ca.pem
Writing /Users/sosedoff/.boot2docker/certs/boot2docker-vm/cert.pem
Writing /Users/sosedoff/.boot2docker/certs/boot2docker-vm/key.pem
export DOCKER_CERT_PATH=/Users/sosedoff/.boot2docker/certs/boot2docker-vm
export DOCKER_TLS_VERIFY=1
export DOCKER_HOST=tcp://192.168.59.103:2376
To automate variables import we just need to add the following line into .bash_profile
:
$(boot2docker shellinit)
That will do the job, but it prints extra stuff in the console. Here's the cleaner solution that will first check if boot2docker is installed and running, and only then import envionment variables.
if [ $(hash boot2docker 2>/dev/null ; echo $?) -eq 0 ]
then
if [ $(ps aux | grep [b]oot2docker-vm -c) -eq 1 ]
then
echo "Boot2Docker is running. Loading shell init scripts automatically."
$(boot2docker shellinit 2>/dev/null)
fi
fi