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.
""" Recursively apply `func` to `obj` (may be a list, dict, or other object). """
    obj = func(obj, path=path)
    if isinstance(obj, list):
        for i in range(len(obj)):
            tmp_path = '%s[%s]' % (path or '.', i)
            obj[i] = recurse_object(obj[i], func, tmp_path)
    elif isinstance(obj, dict):
        for k, v in obj.items():
            tmp_path = '%s%s' % ((path + '.') if path else '', k)
            obj[k] = recurse_object(v, func, tmp_path)
    return obj
def base64_to_hex(b64_string):
    return binascii.hexlify(base64.b64decode(b64_string))
def obj_to_xml(obj):
    """ Return an XML representation of the given object (dict, list, or primitive).
        Does NOT add a common root element if the given obj is a list.
        Does NOT work for nested dict structures. """
    if isinstance(obj, list):
        return ''.join([obj_to_xml(o) for o in obj])
    if isinstance(obj, dict):
        return ''.join(['<{k}>{v}</{k}>'.format(k=k, v=obj_to_xml(v)) for (k, v) in obj.items()])
    return str(obj)
def now_utc():