# Specify data directory permissions for Docker container

**URL:** <https://discuss.elastic.co/t/specify-data-directory-permissions-for-docker-container/118912>\
**Category:** Elasticsearch\
**Created:** [February 7, 2018, 7:25pm UTC](https://discuss.elastic.co/t/specify-data-directory-permissions-for-docker-container/118912 "2018-02-07T19:25:46Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![leosco](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/leosco/32/27101_2.png) [@leosco](https://discuss.elastic.co/u/leosco)\
**Post date:** [February 7, 2018, 7:25pm UTC](https://discuss.elastic.co/t/specify-data-directory-permissions-for-docker-container/118912/1 "2018-02-07T19:25:46Z")

</div>

Hi there,

I'm trying to run the latest Elasticsearch Docker container on Ubuntu 16, and on startup it attempts to access a data directory at `/usr/share/elasticsearch/data` where it outputs this error message:

```auto
[2018-02-07T19:16:16,421][WARN][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.IllegalStateException: failed to obtain node locks, tried [[/usr/share/elasticsearch/data/docker-cluster]] with lock id [0]; maybe these locations are not writable or multiple nodes were started without increasing [node.max_local_storage_nodes] (was [1])?
	at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:125) ~[elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:112) ~[elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.1.3.jar:6.1.3]
	at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.1.3.jar:6.1.3]
	at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:85) ~[elasticsearch-6.1.3.jar:6.1.3]
Caused by: java.lang.IllegalStateException: failed to obtain node locks, tried [[/usr/share/elasticsearch/data/docker-cluster]] with lock id [0]; maybe these locations are not writable or multiple nodes were started without increasing [node.max_local_storage_nodes] (was [1])?
	at org.elasticsearch.env.NodeEnvironment.<init>(NodeEnvironment.java:244) ~[elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.node.Node.<init>(Node.java:263) ~[elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.node.Node.<init>(Node.java:245) ~[elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:212) ~[elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:212) ~[elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:322) ~[elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121) ~[elasticsearch-6.1.3.jar:6.1.3]
	... 6 more
Caused by: java.io.IOException: failed to obtain lock on /usr/share/elasticsearch/data/nodes/0
	at org.elasticsearch.env.NodeEnvironment.<init>(NodeEnvironment.java:223) ~[elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.node.Node.<init>(Node.java:263) ~[elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.node.Node.<init>(Node.java:245) ~[elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:212) ~[elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:212) ~[elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:322) ~[elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121) ~[elasticsearch-6.1.3.jar:6.1.3]
	... 6 more
Caused by: java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodes/0/node.lock
	at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84) ~[?:?]
	at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102) ~[?:?]
	at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107) ~[?:?]
	at sun.nio.fs.UnixFileSystemProvider.newFileChannel(UnixFileSystemProvider.java:177) ~[?:?]
	at java.nio.channels.FileChannel.open(FileChannel.java:287) ~[?:1.8.0_161]
	at java.nio.channels.FileChannel.open(FileChannel.java:335) ~[?:1.8.0_161]
	at org.apache.lucene.store.NativeFSLockFactory.obtainFSLock(NativeFSLockFactory.java:125) ~[lucene-core-7.1.0.jar:7.1.0 84c90ad2c0218156c840e19a64d72b8a38550659 - ubuntu - 2017-10-13 16:12:42]
	at org.apache.lucene.store.FSLockFactory.obtainLock(FSLockFactory.java:41) ~[lucene-core-7.1.0.jar:7.1.0 84c90ad2c0218156c840e19a64d72b8a38550659 - ubuntu - 2017-10-13 16:12:42]
	at org.apache.lucene.store.BaseDirectory.obtainLock(BaseDirectory.java:45) ~[lucene-core-7.1.0.jar:7.1.0 84c90ad2c0218156c840e19a64d72b8a38550659 - ubuntu - 2017-10-13 16:12:42]
	at org.elasticsearch.env.NodeEnvironment.<init>(NodeEnvironment.java:209) ~[elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.node.Node.<init>(Node.java:263) ~[elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.node.Node.<init>(Node.java:245) ~[elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:212) ~[elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:212) ~[elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:322) ~[elasticsearch-6.1.3.jar:6.1.3]
	at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121) ~[elasticsearch-6.1.3.jar:6.1.3]
	... 6 more

```

First off, it didn't even create the directory, so I created it. Then I recursively changed the owner:group to root:docker and `chmod`ed the group permissions to `rwx`, so that the docker group had full permissions on it. Both myself and the project user are members of the docker group.

```auto
drwxrwxr-x 3 root docker 4096 Feb 7 13:23 elasticsearch

```

and that directory isn't locked by any other process

```auto
lsof | grep /usr/share/elasticsearch

```

So, I'm not quite sure what's going on here. There isn't a separate docker or elasticsearch user registered, so why does the container process not have privileges in the data directory? I see some people on the Github saying to just `chmod` to 777, but that's obviously not a serious solution. There's gotta be something I'm missing here. Even if I do grant rwx to everybody, it doesn't solve the problem...

---

<div class="post-metadata">

**Author:** ![leosco](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/leosco/32/27101_2.png) [@leosco](https://discuss.elastic.co/u/leosco)\
**Post date:** [February 7, 2018, 7:33pm UTC](https://discuss.elastic.co/t/specify-data-directory-permissions-for-docker-container/118912/2 "2018-02-07T19:33:31Z")

</div>

I also want to point out that I'm running the same container on my Mac with no issues. It's only now that I'm trying to run it on a separate Ubuntu server that it's not working.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [March 7, 2018, 7:33pm UTC](https://discuss.elastic.co/t/specify-data-directory-permissions-for-docker-container/118912/3 "2018-03-07T19:33:37Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
