Accessing Docker for Mac via Remote Access API

2019-03-21 03:08发布

问题:

I've been recently experimenting with Docker and I would like to be able to access Docker from within a container in order to run more containers. As I'm experimenting with the platform, I'm running it locally on my Mac, and I am unsure how I would enable the Docker Daemon to be accessed from inside a container.

In order to access the daemon locally, I use the UNIX socket /var/run/docker.sock, however UNIX sockets are not able to be networked, and so I found an article explaining how to enable the Docker Remote Access REST API on Ubuntu (http://www.virtuallyghetto.com/2014/07/quick-tip-how-to-enable-docker-remote-api.html). It explained how I needed to append DOCKER_OPTS='-H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock' to the file /etc/init/docker.conf, however I have been unable to find this file on my Mac.

Any help or directions would be greatly appreciated,

Cheers

回答1:

You need to set a DOCKER_HOST environment variable:

export DOCKER_HOST='-H unix:///var/run/docker.sock -H tcp://localhost:2376'

You can create a environment.plist file in ~/Library/LaunchAgents/ to do that at system startup:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>my.startup</string>
  <key>ProgramArguments</key>
  <array>
    <string>sh</string>
    <string>-c</string>
    <string>
launchctl setenv DOCKER_HOST -H unix:///var/run/docker.sock -H tcp://localhost:2376
    </string>
  </array>
  <key>RunAtLoad</key>
  <true/>
</dict>
</plist>