I'm trying to start localstack in a containerized Jenkins build agent for unit testing. In other words, trying to start the localstack docker container from within a docker container. We do this all the time with other images, using the method of mounting `/var/run/docker.sock` in the "parent" container, but localstack will not start.

I get this error:

```
2019-11-08T18:53:53:ERROR:localstack.services.generic_proxy: Exception running proxy on port 8081: [Errno 13] Permission denied: '/tmp/localstack/server.test.pem' Traceback (most recent call last):
  File "/opt/code/localstack/localstack/services/generic_proxy.py", line 384, in run_cmd
    combined_file, cert_file_name, key_file_name = GenericProxy.create_ssl_cert(serial_number=self.port)
  File "/opt/code/localstack/localstack/services/generic_proxy.py", line 401, in create_ssl_cert
    return generate_ssl_cert(SERVER_CERT_PEM_FILE, serial_number=serial_number)
  File "/opt/code/localstack/localstack/utils/common.py", line 828, in generate_ssl_cert
    save_file(target_file, file_content)
  File "/opt/code/localstack/localstack/utils/common.py", line 642, in save_file
    with open(file, mode) as f:
PermissionError: [Errno 13] Permission denied: '/tmp/localstack/server.test.pem'
```

Port 8081 is not already in use, and `/tmp/localstack` is writable, so I don't understand why it's getting permission denied.
sys.stdout, sys.stderr, sys.__stdout__, sys.__stderr__ = (out, err, __out, __err)
    def _proxy(self, original_stream, type):
        def proxy():
            ident = self._ident()
            ctx = self.CONTEXTS_BY_THREAD.get(ident)
            if ctx:
                return ctx._stdout if type == 'stdout' else ctx._stderr
            return original_stream
        return proxy
    def _ident(self):
        return threading.currentThread().ident
    def stdout(self):
        return self._stdout.getvalue() if hasattr(self._stdout, 'getvalue') else self._stdout
    def stderr(self):
        return self._stderr.getvalue() if hasattr(self._stderr, 'getvalue') else self._stderr
def is_string(s, include_unicode=True, exclude_binary=False):
    if isinstance(s, six.binary_type) and exclude_binary:
        return False
    if isinstance(s, str):
        return True
    if include_unicode and isinstance(s, six.text_type):
        return True
    return False
def is_string_or_bytes(s):
    return is_string(s) or isinstance(s, six.string_types) or isinstance(s, bytes)
def is_base64(s):
    regex = r'^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$'
    return is_string(s) and re.match(regex, s)
def md5(string):