My issue is regarding a docker run command I have created which is running to completion and creating the service however it has mount/volume issues. I am running the following command:
docker run -d --restart=unless-stopped --log-driver json-file --log-opt max-file="3" --log-opt max-size="15m" -m 2.875g --cpu-shares=230 --ulimit nofile=262144:262144 --ulimit memlock=-1:-1 --group-add="elasticsearch" --user="elasticsearch" --net="host" -p 192.168.56.103:9200:9200 -p 192.168.56.103:9300:9300 -v /var/qpackage/elasticsearch/repo:/usr/share/elasticsearch/repo:rw -v /etc/qpackage/elasticsearch/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:rw -v /var/qpackage/elasticsearch/data:/usr/share/elasticsearch/data:rw -v /etc/qpackage/elasticsearch/conf/jvm.options:/usr/share/elasticsearch/config/jvm.options:rw -e "SERVICE_9200_NAME=elasticsearch" -e "SERVICE_9300_NAME=elasticsearch-node" --name elasticsearch-1_log_elasticsearch cp-elasticsearch:7.1.ox
And it seems to run perfectly fine. When I do a docker inspect
however I notice whilst the volumes are I have placed in the command are being mounted and the binds correct the inspect also shows me that Volumes are null. This is incorrect behaviour. The volumes are supposed to shown.
Current Result
"Volumes": null,
Expected Result
"Volumes": {
"/usr/share/elasticsearch/config/elasticsearch.yml": {},
"/usr/share/elasticsearch/config/jvm.options": {},
"/usr/share/elasticsearch/data": {},
"/usr/share/elasticsearch/repo": {}
},
What could I be doing wrong?
Full Docker Inspect
[root@localhost tmp]# docker inspect elasticsearch-1_log_elasticsearch
[
{
"Id": "be782ca624a468e30dd8c79748ef5406781134c3b6f93450b3b3f425af701301",
"Created": "2019-11-18T21:48:34.243146943Z",
"Path": "/usr/local/bin/docker-entrypoint.sh",
"Args": [
"eswrapper"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 18111,
"ExitCode": 0,
"Error": "",
"StartedAt": "2019-11-18T21:48:34.645908733Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},
"Image": "sha256:6e4f392617213267be91ed63bcd83a425425ed825cf0ab1f346d55375e48d91b",
"ResolvConfPath": "/var/qpackage/docker/containers/be782ca624a468e30dd8c79748ef5406781134c3b6f93450b3b3f425af701301/resolv.conf",
"HostnamePath": "/var/qpackage/docker/containers/be782ca624a468e30dd8c79748ef5406781134c3b6f93450b3b3f425af701301/hostname",
"HostsPath": "/var/qpackage/docker/containers/be782ca624a468e30dd8c79748ef5406781134c3b6f93450b3b3f425af701301/hosts",
"LogPath": "/var/qpackage/docker/containers/be782ca624a468e30dd8c79748ef5406781134c3b6f93450b3b3f425af701301/be782ca624a468e30dd8c79748ef5406781134c3b6f93450b3b3f425af701301-json.log",
"Name": "/elasticsearch-1_log_elasticsearch",
"RestartCount": 0,
"Driver": "overlay2",
"Platform": "linux",
"MountLabel": "",
"ProcessLabel": "",
"AppArmorProfile": "",
"ExecIDs": null,
"HostConfig": {
"Binds": [
"/etc/qpackage/elasticsearch/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml",
"/var/qpackage/elasticsearch/data:/usr/share/elasticsearch/data",
"/etc/qpackage/elasticsearch/conf/jvm.options:/usr/share/elasticsearch/config/jvm.options",
"/var/qpackage/elasticsearch/repo:/usr/share/elasticsearch/repo"
],
"ContainerIDFile": "",
"LogConfig": {
"Type": "json-file",
"Config": {
"max-file": "3",
"max-size": "15m"
}
},
"NetworkMode": "host",
"PortBindings": {
"9200/tcp": [
{
"HostIp": "192.168.56.103",
"HostPort": "9200"
}
],
"9300/tcp": [
{
"HostIp": "192.168.56.103",
"HostPort": "9300"
}
]
},
"RestartPolicy": {
"Name": "unless-stopped",
"MaximumRetryCount": 0
},
"AutoRemove": false,
"VolumeDriver": "",
"VolumesFrom": null,
"CapAdd": null,
"CapDrop": null,
"Dns": [],
"DnsOptions": [],
"DnsSearch": [],
"ExtraHosts": null,
"GroupAdd": [
"elasticsearch"
],
"IpcMode": "shareable",
"Cgroup": "",
"Links": null,
"OomScoreAdj": 0,
"PidMode": "",
"Privileged": false,
"PublishAllPorts": false,
"ReadonlyRootfs": false,
"SecurityOpt": null,
"UTSMode": "",
"UsernsMode": "",
"ShmSize": 67108864,
"Runtime": "runc",
"ConsoleSize": [
0,
0
],
"Isolation": "",
"CpuShares": 230,
"Memory": 3087007744,
"NanoCpus": 0,
"CgroupParent": "",
"BlkioWeight": 0,
"BlkioWeightDevice": [],
"BlkioDeviceReadBps": null,
"BlkioDeviceWriteBps": null,
"BlkioDeviceReadIOps": null,
"BlkioDeviceWriteIOps": null,
"CpuPeriod": 0,
"CpuQuota": 0,
"CpuRealtimePeriod": 0,
"CpuRealtimeRuntime": 0,
"CpusetCpus": "",
"CpusetMems": "",
"Devices": [],
"DeviceCgroupRules": null,
"DiskQuota": 0,
"KernelMemory": 0,
"MemoryReservation": 0,
"MemorySwap": 6174015488,
"MemorySwappiness": null,
"OomKillDisable": false,
"PidsLimit": 0,
"Ulimits": [
{
"Name": "nofile",
"Hard": 262144,
"Soft": 262144
},
{
"Name": "memlock",
"Hard": -1,
"Soft": -1
}
],
"CpuCount": 0,
"CpuPercent": 0,
"IOMaximumIOps": 0,
"IOMaximumBandwidth": 0,
"MaskedPaths": [
"/proc/asound",
"/proc/acpi",
"/proc/kcore",
"/proc/keys",
"/proc/latency_stats",
"/proc/timer_list",
"/proc/timer_stats",
"/proc/sched_debug",
"/proc/scsi",
"/sys/firmware"
],
"ReadonlyPaths": [
"/proc/bus",
"/proc/fs",
"/proc/irq",
"/proc/sys",
"/proc/sysrq-trigger"
]
},
"GraphDriver": {
"Data": {
"LowerDir": "/var/qpackage/docker/overlay2/f23fc0453e6ef6309612864951ffa3d279dd1197a9f2cb5e27fb7884c16eba69-init/diff:/var/qpackage/docker/overlay2/cc295c456ff0d7a6e33e62578915d4b2dfaec5778e3c7c95a15862333f2ddc87/diff:/var/qpackage/docker/overlay2/baa3e9c814aa237120bbd1668a8dfec75444e3d44ec46afdaf818b03d0584bb6/diff:/var/qpackage/docker/overlay2/ac48075afe8ae211844285573419bc9e08b92b89877deca5b10eed7f071fd43c/diff:/var/qpackage/docker/overlay2/b1395bb3de16587b201eceaa1468951c1224fcd37d3e49ff012954fa0e621836/diff:/var/qpackage/docker/overlay2/a2ac251b148df5aba19addea36ecd85b7b45a5590740684ae928586f55a93fdc/diff:/var/qpackage/docker/overlay2/0cb5d6a8739367e5eab2b071f5ec3f4cb6e4d62b4d94a4919635ec05e7a6198f/diff:/var/qpackage/docker/overlay2/67657868ee478d3cb47093c67d1824eb873e2628840486bb63aef7eee29652bd/diff:/var/qpackage/docker/overlay2/108ed1526882b849cf3991c8177b7389e84da4b9a48828f43b08351b6c69ddf0/diff",
"MergedDir": "/var/qpackage/docker/overlay2/f23fc0453e6ef6309612864951ffa3d279dd1197a9f2cb5e27fb7884c16eba69/merged",
"UpperDir": "/var/qpackage/docker/overlay2/f23fc0453e6ef6309612864951ffa3d279dd1197a9f2cb5e27fb7884c16eba69/diff",
"WorkDir": "/var/qpackage/docker/overlay2/f23fc0453e6ef6309612864951ffa3d279dd1197a9f2cb5e27fb7884c16eba69/work"
},
"Name": "overlay2"
},
"Mounts": [
{
"Type": "bind",
"Source": "/etc/qpackage/elasticsearch/conf/elasticsearch.yml",
"Destination": "/usr/share/elasticsearch/config/elasticsearch.yml",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/var/qpackage/elasticsearch/data",
"Destination": "/usr/share/elasticsearch/data",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/etc/qpackage/elasticsearch/conf/jvm.options",
"Destination": "/usr/share/elasticsearch/config/jvm.options",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/var/qpackage/elasticsearch/repo",
"Destination": "/usr/share/elasticsearch/repo",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],
"Config": {
"Hostname": "localhost.localdomain",
"Domainname": "",
"User": "elasticsearch",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"9200/tcp": {},
"9300/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"SERVICE_9200_NAME=elasticsearch",
"SERVICE_9300_NAME=elasticsearch-node",
"PATH=/usr/share/elasticsearch/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"ELASTIC_CONTAINER=true"
],
"Cmd": [
"eswrapper"
],
"ArgsEscaped": true,
"Image": "cp-elasticsearch:7.1.ox",
"Volumes": null,
"WorkingDir": "/usr/share/elasticsearch",
"Entrypoint": [
"/usr/local/bin/docker-entrypoint.sh"
],
"OnBuild": null,
"Labels": {
"license": "Elastic License",
"org.label-schema.build-date": "20190305",
"org.label-schema.license": "GPLv2",
"org.label-schema.name": "elasticsearch",
"org.label-schema.schema-version": "1.0",
"org.label-schema.url": "https://www.elastic.co/products/elasticsearch",
"org.label-schema.vcs-url": "https://github.com/elastic/elasticsearch",
"org.label-schema.vendor": "Elastic",
"org.label-schema.version": "7.1.0"
}
},
"NetworkSettings": {
"Bridge": "",
"SandboxID": "087bbb8b4469e2a5ac35aee69b62c7e8db8eb6bc16acf529d437f4777586cbac",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {},
"SandboxKey": "/var/run/docker/netns/default",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "",
"Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "",
"IPPrefixLen": 0,
"IPv6Gateway": "",
"MacAddress": "",
"Networks": {
"host": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "047831b94cd687f5e144568ac52925897a8b2f5ee21c9af7286c0afe39b3ee03",
"EndpointID": "1a2e3b823fc5d28b4ddb4ccda9c005fff2f15d439d7f65ec27fbe2587f5395d1",
"Gateway": "",
"IPAddress": "",
"IPPrefixLen": 0,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "",
"DriverOpts": null
}
}
}
}
]
I was running a command derived from an ansible configuration we have created using Ansible's docker_container module. What we didn't realise was that ansible's volumes declaration created not only the bind mountings but also anonymous volumes to go with them. As a result the above docker run
that we created was not the same since it didn't create the volumes but simply created the bind mountings. Simply adding anonymous volumes declarations like -v /usr/share/elasticsearch/config/elasticsearch.yml
corrected the issue.