Closed hakiaki closed 3 days ago
So what is the problem? When you download using /home/dockeruser/NFS_NAS_Download
, the files/downloads created by JDownloader are not owned by the dockeruser
user ?
Also, from your docker inspect
output, it seems that some variables are defined twice.
That's it, no matter which directory is used, but let's keep to /home/dockeruser/NFS_NAS_Download1
, the created files belong to 166536
user and group, and not dockeruser
user and group.
Maybe an important information, I run rootless docker and portainer.
Another information : I changed owner and group of /home/dockeruser/NFS_NAS_Download1
from 166536
to dockeruser
, and the container is still able to create directories and files owned by 166536
inside.
Another information 2 : about defining twice some values, i deleted container, image, volumes and redeployed, it may have happened after several modifications and updates.
The content of docker inspect :
[
{
"Id": "7d9ca437257341cef5e60bba9765b35de94450f35834b48dbb0895ad1a8c82a2",
"Created": "2024-10-15T08:07:06.729202818Z",
"Path": "/init",
"Args": [],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 4513,
"ExitCode": 0,
"Error": "",
"StartedAt": "2024-10-15T08:15:01.566569829Z",
"FinishedAt": "2024-10-15T08:15:01.164058979Z"
},
"Image": "sha256:e58375eb19550f75ee947b08e09db835b84be55337bfe8d7af9bc29c1d5eb17d",
"ResolvConfPath": "/home/dockeruser/.local/share/docker/containers/7d9ca437257341cef5e60bba9765b35de94450f35834b48dbb0895ad1a8c82a2/resolv.conf",
"HostnamePath": "/home/dockeruser/.local/share/docker/containers/7d9ca437257341cef5e60bba9765b35de94450f35834b48dbb0895ad1a8c82a2/hostname",
"HostsPath": "/home/dockeruser/.local/share/docker/containers/7d9ca437257341cef5e60bba9765b35de94450f35834b48dbb0895ad1a8c82a2/hosts",
"LogPath": "/home/dockeruser/.local/share/docker/containers/7d9ca437257341cef5e60bba9765b35de94450f35834b48dbb0895ad1a8c82a2/7d9ca437257341cef5e60bba9765b35de94450f35834b48dbb0895ad1a8c82a2-json.log",
"Name": "/jdownloader2-jdownloader-2-1",
"RestartCount": 0,
"Driver": "overlay2",
"Platform": "linux",
"MountLabel": "",
"ProcessLabel": "",
"AppArmorProfile": "",
"ExecIDs": null,
"HostConfig": {
"Binds": [
"/home/dockeruser/docker/appdata/jdownloader-2:/config:rw",
"/home/dockeruser/NFS_NAS_Download1:/output:rw"
],
"ContainerIDFile": "",
"LogConfig": {
"Type": "json-file",
"Config": {}
},
"NetworkMode": "jdownloader2_default",
"PortBindings": {
"3129/tcp": [
{
"HostIp": "",
"HostPort": "3129"
}
],
"5800/tcp": [
{
"HostIp": "",
"HostPort": "5800"
}
]
},
"RestartPolicy": {
"Name": "always",
"MaximumRetryCount": 0
},
"AutoRemove": false,
"VolumeDriver": "",
"VolumesFrom": null,
"ConsoleSize": [
0,
0
],
"CapAdd": null,
"CapDrop": null,
"CgroupnsMode": "private",
"Dns": null,
"DnsOptions": null,
"DnsSearch": null,
"ExtraHosts": [],
"GroupAdd": null,
"IpcMode": "private",
"Cgroup": "",
"Links": null,
"OomScoreAdj": 200,
"PidMode": "",
"Privileged": false,
"PublishAllPorts": false,
"ReadonlyRootfs": false,
"SecurityOpt": null,
"UTSMode": "",
"UsernsMode": "",
"ShmSize": 67108864,
"Runtime": "runc",
"Isolation": "",
"CpuShares": 0,
"Memory": 0,
"NanoCpus": 0,
"CgroupParent": "",
"BlkioWeight": 0,
"BlkioWeightDevice": null,
"BlkioDeviceReadBps": null,
"BlkioDeviceWriteBps": null,
"BlkioDeviceReadIOps": null,
"BlkioDeviceWriteIOps": null,
"CpuPeriod": 0,
"CpuQuota": 0,
"CpuRealtimePeriod": 0,
"CpuRealtimeRuntime": 0,
"CpusetCpus": "",
"CpusetMems": "",
"Devices": null,
"DeviceCgroupRules": null,
"DeviceRequests": null,
"MemoryReservation": 0,
"MemorySwap": 0,
"MemorySwappiness": null,
"OomKillDisable": null,
"PidsLimit": null,
"Ulimits": null,
"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",
"/sys/devices/virtual/powercap"
],
"ReadonlyPaths": [
"/proc/bus",
"/proc/fs",
"/proc/irq",
"/proc/sys",
"/proc/sysrq-trigger"
]
},
"GraphDriver": {
"Data": {
"LowerDir": "/home/dockeruser/.local/share/docker/overlay2/6f1cccc2b1e30245c0ff8e628da3124cfaa49a741bc03821aa18bf42fdc825c1-init/diff:/home/dockeruser/.local/share/docker/overlay2/9b6a3fc0f8cddf55f507027bd5d381550027b1e0e9365a0c182fb15c90808a72/diff:/home/dockeruser/.local/share/docker/overlay2/72d48c67fa030b2b6c77428ec02fa60539e32da51387a4f0e976821ed3e5941e/diff:/home/dockeruser/.local/share/docker/overlay2/94135a7a28ba33ab5930ea36fef4837de564b3f3af71fd78e755c498087a51fc/diff:/home/dockeruser/.local/share/docker/overlay2/27618e2efa55b90f9e60211266509cc7d32ef1e54023944ab20fd03212072696/diff:/home/dockeruser/.local/share/docker/overlay2/5e0102281989b5caab90253f998a91ca3936cb197dc6ba884afa8b3e418adc64/diff:/home/dockeruser/.local/share/docker/overlay2/e04e374f956b6852b86afc7b7e70ddd801cfefc1b5cf0adba1027a3e19b20f37/diff:/home/dockeruser/.local/share/docker/overlay2/526b77e2d9273c7103b7314cfe5442ddc806fc621e28d936abf30e18edf2b70d/diff:/home/dockeruser/.local/share/docker/overlay2/7c6a97cdfa42d51b3317201088284a26fd2de95733897390cf1872a2585764a6/diff:/home/dockeruser/.local/share/docker/overlay2/38817a5d21304af7fcac52f83664dc11117392f745c629cc1d8c706896da7297/diff:/home/dockeruser/.local/share/docker/overlay2/ad80465e9e655851b0ecc9db75cb297f3b65650a30c66ac73f18e923145e844b/diff:/home/dockeruser/.local/share/docker/overlay2/b7631ad0cc18ca7e27787ffb46d570fd20f9f8a4a1a80f6c34abb478ff3e5b26/diff:/home/dockeruser/.local/share/docker/overlay2/e4a52dd7ecee7d5c0b11b37de72135a1344677fcfb21395d9bc9f827e33e8563/diff:/home/dockeruser/.local/share/docker/overlay2/5f4eedea1f603dc5ad0df39973185522223530834ef3417294e847b861a7aa24/diff:/home/dockeruser/.local/share/docker/overlay2/e7ea63acc36c4c7f57624fb1144cd068648bdf2556479ce6e2e5643cc7353b26/diff:/home/dockeruser/.local/share/docker/overlay2/6c7875e615565377136c1978a097f40e952243b3da4c925463ce43c77a9d1562/diff:/home/dockeruser/.local/share/docker/overlay2/c0dd6f990ad471424845fb5d9bc4f06e3b2e71d89d7bcf2a06d6340a7ba62251/diff:/home/dockeruser/.local/share/docker/overlay2/19f2046e562af0330c5e8cf01fae01a49cf684d7e63e282b924c355789b0461b/diff:/home/dockeruser/.local/share/docker/overlay2/441078637b331857d80a92dac4bf1a5dea272b140ba6ef351162be47d757b6c3/diff:/home/dockeruser/.local/share/docker/overlay2/c29aa8bed11ec242ad81f107e877dbc5fc3b0e5df91a1f48c9908ed14eb07434/diff:/home/dockeruser/.local/share/docker/overlay2/89dbea93cb9e8538bf351f7bcf4d2525ae42fd66b5f417d484f8300c5042fe3b/diff:/home/dockeruser/.local/share/docker/overlay2/e64c6e7ae3954472684d69af96ed6b063080c9b6ac67a2dee025c9b4437ca976/diff:/home/dockeruser/.local/share/docker/overlay2/278f999d61af21f3994ba08510b16170a908a82041614b0d2cccbb70340d3eef/diff:/home/dockeruser/.local/share/docker/overlay2/9866985d9a46de52f5a1306d573b960d4c3a302623022edca734e639409a6f2b/diff:/home/dockeruser/.local/share/docker/overlay2/e956b076cd254d3761ee6a9183059a1c64aaa8f27c2e94927287eb84f9818fad/diff:/home/dockeruser/.local/share/docker/overlay2/3fa0166489a174834337e0d9252622664b932118fed75c435b06c71cb6a01728/diff:/home/dockeruser/.local/share/docker/overlay2/ffe55e15cffa438f0cb8c4d2a864d1f57c7f74b431abe8d2007fe0f1323a9f00/diff:/home/dockeruser/.local/share/docker/overlay2/bebce306e4af3ac89a67ed9fd945375be16d32932fa5e0f4ba227799f5c2060a/diff:/home/dockeruser/.local/share/docker/overlay2/5e2f15505be35812d4a57331bace0afdafd2718dcaf81bae2875bee8f244fec5/diff:/home/dockeruser/.local/share/docker/overlay2/1b80e89a567f975ba45f9e631c462d6741d5ffcef995be331be2b1b39e5f79e8/diff:/home/dockeruser/.local/share/docker/overlay2/aea9f7265754178717626ec0d4ba34f7d2a67c13e22623200c30e07a9284a2e8/diff:/home/dockeruser/.local/share/docker/overlay2/fa14d6e8ae772a04ee2e8591e43b6de026fece9cc9aa3183ff79e3c81df23cbb/diff:/home/dockeruser/.local/share/docker/overlay2/89b4346df2e18995c3539946ff520e7bbd4254da04b5b837a6d1dd544fc8cdea/diff:/home/dockeruser/.local/share/docker/overlay2/4d8219a3e6fd0803e9ad708c11c835d79d260674fc50f267990e5d0221b56e85/diff:/home/dockeruser/.local/share/docker/overlay2/2b2bd3d3ec76cb19c837a12e911d37964304d0d13a5531a41fd6815e67b5034c/diff:/home/dockeruser/.local/share/docker/overlay2/4464275f0349a2fe54553a31bfa605aeb93cb4c7ee13a8d72258148191e4c03a/diff:/home/dockeruser/.local/share/docker/overlay2/ea4229dd66291b5194cdea742bf08af8ec4d796b11f08e26a0bfdfd92430774a/diff:/home/dockeruser/.local/share/docker/overlay2/87e61c39a539e69c0992c73766db267dda5a88e5aa789add4e2e267128ffed88/diff:/home/dockeruser/.local/share/docker/overlay2/9ef819404b51764dea8f994182f3acca75629b905f26841a8010fe26e81472cf/diff:/home/dockeruser/.local/share/docker/overlay2/7bead78407f1b0ebbe30229aae43acf4a70be14d0cef81264cb8785e765c9c1b/diff:/home/dockeruser/.local/share/docker/overlay2/fee3b92f09665d3873353cf5d0838ab8298a0b4cd4a60bde99c11ceba2e5fe43/diff:/home/dockeruser/.local/share/docker/overlay2/c1b54c52c7d5aa8cd02f18d5e9bd6ab062840d4f0d791e807228f4283bfe82d9/diff",
"MergedDir": "/home/dockeruser/.local/share/docker/overlay2/6f1cccc2b1e30245c0ff8e628da3124cfaa49a741bc03821aa18bf42fdc825c1/merged",
"UpperDir": "/home/dockeruser/.local/share/docker/overlay2/6f1cccc2b1e30245c0ff8e628da3124cfaa49a741bc03821aa18bf42fdc825c1/diff",
"WorkDir": "/home/dockeruser/.local/share/docker/overlay2/6f1cccc2b1e30245c0ff8e628da3124cfaa49a741bc03821aa18bf42fdc825c1/work"
},
"Name": "overlay2"
},
"Mounts": [
{
"Type": "bind",
"Source": "/home/dockeruser/docker/appdata/jdownloader-2",
"Destination": "/config",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/home/dockeruser/NFS_NAS_Download1",
"Destination": "/output",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
}
],
"Config": {
"Hostname": "7d9ca4372573",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": true,
"AttachStderr": true,
"ExposedPorts": {
"3129/tcp": {},
"5800/tcp": {},
"5900/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"GROUP_ID=1001",
"USER_ID=1001",
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/base/sbin:/opt/base/bin",
"ENV=/root/.docker_rc",
"SUP_GROUP_IDS=",
"UMASK=0022",
"LANG=en_US.UTF-8",
"TZ=Etc/UTC",
"KEEP_APP_RUNNING=0",
"APP_NICENESS=0",
"INSTALL_PACKAGES=",
"PACKAGES_MIRROR=",
"CONTAINER_DEBUG=0",
"DISPLAY_WIDTH=1920",
"DISPLAY_HEIGHT=1080",
"DARK_MODE=0",
"SECURE_CONNECTION=0",
"SECURE_CONNECTION_VNC_METHOD=SSL",
"SECURE_CONNECTION_CERTS_CHECK_INTERVAL=60",
"WEB_LISTENING_PORT=5800",
"VNC_LISTENING_PORT=5900",
"VNC_PASSWORD=",
"ENABLE_CJK_FONT=0",
"WEB_AUDIO=0",
"WEB_AUTHENTICATION=0",
"WEB_AUTHENTICATION_DEFAULT_USERNAME=",
"WEB_AUTHENTICATION_DEFAULT_PASSWORD=",
"MYJDOWNLOADER_EMAIL=",
"MYJDOWNLOADER_PASSWORD=",
"MYJDOWNLOADER_DEVICE_NAME=",
"JDOWNLOADER_HEADLESS=0",
"JDOWNLOADER_MAX_MEM="
],
"Cmd": [
"/init"
],
"Image": "jlesage/jdownloader-2",
"Volumes": {
"/config": {},
"/output": {}
},
"WorkingDir": "/tmp",
"Entrypoint": null,
"OnBuild": null,
"Labels": {
"com.docker.compose.config-hash": "1b35413f969c4fdd7f5246bae14f201ee8f14fcfc350e642d5616997522c3ca3",
"com.docker.compose.container-number": "1",
"com.docker.compose.depends_on": "",
"com.docker.compose.image": "sha256:e58375eb19550f75ee947b08e09db835b84be55337bfe8d7af9bc29c1d5eb17d",
"com.docker.compose.oneoff": "False",
"com.docker.compose.project": "jdownloader2",
"com.docker.compose.project.config_files": "/data/compose/71/docker-compose.yml",
"com.docker.compose.project.working_dir": "/data/compose/71",
"com.docker.compose.replace": "e90a94d79947be62793ab39a08917b611b5f48255f4b6cf5689e41ec34a398ce",
"com.docker.compose.service": "jdownloader-2",
"com.docker.compose.version": "2.20.2",
"org.label-schema.description": "Docker container for JDownloader 2",
"org.label-schema.name": "jdownloader-2",
"org.label-schema.schema-version": "1.0",
"org.label-schema.vcs-url": "https://github.com/jlesage/docker-jdownloader-2",
"org.label-schema.version": "24.09.1"
}
},
"NetworkSettings": {
"Bridge": "",
"SandboxID": "6988548cc2fb056f8de37bafed1470be1478dd1b87cc982b288713dd9287e4b2",
"SandboxKey": "/run/user/1001/docker/netns/6988548cc2fb",
"Ports": {
"3129/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "3129"
},
{
"HostIp": "::",
"HostPort": "3129"
}
],
"5800/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "5800"
},
{
"HostIp": "::",
"HostPort": "5800"
}
],
"5900/tcp": null
},
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "",
"Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "",
"IPPrefixLen": 0,
"IPv6Gateway": "",
"MacAddress": "",
"Networks": {
"jdownloader2_default": {
"IPAMConfig": null,
"Links": null,
"Aliases": [
"jdownloader2-jdownloader-2-1",
"jdownloader-2"
],
"MacAddress": "02:42:ac:13:00:02",
"DriverOpts": null,
"NetworkID": "316859c885c76d73b2febeaf9129b719a4c7513ad90f903f3a13d7395c2b886c",
"EndpointID": "ff2dcb3d7bd13628529d4a6f66199d269722611e15aa7eb8b73faf79278d4471",
"Gateway": "172.19.0.1",
"IPAddress": "172.19.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"DNSNames": [
"jdownloader2-jdownloader-2-1",
"jdownloader-2",
"7d9ca4372573"
]
}
}
}
}
]
I think that I have solved the problem. It must have benn because of running docker in rootless mode. Mapping UID 0/ GID 0 to User_ID and group_ID and restarting the container changed the owner of all the files to dockeruser, which is the user running docker in rootless mode. I m'not enough qualified to explain the mechanism but I understand that it's not neccesary to run rootless AND set another UID/GID in the environment variables.
Good to know, thanks for the update !
Current Behavior
Hello,
When i set environment variables UID and GID, these are note taken into account.
The user i want to use is dockeruser. It's portainer default user, with (uid / gid : 1001 / 1001)
I thought the problem was with the NFS_NAS_download which is a fine working mounted share, so i created a local NFS_NAS_download1 directory for testing purpose, but i get the same behaviour.
NFS_NAS_download1 was created by docker when creating the stack, and got a misterious 166536 user and group. I can get my downloads locally, but i would like the files and directories being owned by dockeruser.
Expected Behavior
Taking into account UID and GID when set, moreover when it's the default user.
By the way, neither login credentials for myjdownloader seem to work when set in environment. They work in GUI.
Steps To Reproduce
Environment
Container creation
Portainer with compose file above.
Container log
Container inspect
Anything else?
No response