Need to access volume in Docker Container

Hi all,

I have a support application, SimpleHelp, that I am running in a Docker Container in Container Station. It works great except I have one problem. I am not able to update the SimpleHelp software as new releases come out. Sure, I could create a new container but that is tedious doing that every time and recreating all my preferences, etc.

What I want to be able to do is either access the file inside the container or set the container up so that I can utilize a directory on my NAS. I’ve been trying to figure out how to do this by creating a volume with the container, but it’s not clear and I keep running into roadblocks because when you create a volume it wants a container name and every container name I enter is an invalid path. So I’m stuck.

Certainly there has to be a way to be able to do this so I am asking here.

Thanks!

You would set it up with a compose file and save the config and data in permanent folders on your NAS

e.g.

Thanks, but I honestly have no clue how to do that! I’m brand new to Docker and have no idea how to write a compose script…

Would I add it here?

    volumes:
       - /etc/timezone:/etc/timezone:ro
       - /etc/localtime:/etc/localtime:ro
       - /opt/appdata/simplehelp/configuration:/opt/SimpleHelp/configuration

And would I just use the standard QNAP path to the folder? Those paths above are all local to the container - yes? So how do I specify a path outside the container?

should be

/share/‘sharename’

OK. So would it need to be something like:

    volumes:
       - /etc/timezone:/etc/timezone:ro
       - /etc/localtime:/etc/localtime:ro
       - /opt/appdata/simplehelp/configuration:/share/Container/SimpleHelp

That it?

The other way around … first the local mounted location then the internal container location

- /share/Container/SimpleHelp:/opt/appdata/simplehelp/configuration

OK. Do I need to specify :rw after it or read/write or just leave it as-is?

You can … I think the default is rw and ro is set by that flag

For instance you would set Plex media folders to ro, so a malware infection of the container could not delete your media files.

OK. Thanks. I will try this.

Now is there any way to read existing container files from the NAS? I’ve not been able to figure that out. Not possible?

You can browse to the created volumes via WinSCP (for easy GUI) and just go to location shown here


Yeah, I have no volumes with my current container. I just used the wizard to create it from the repository.

In File Station I can go into:

/Container/container-station-data/lib/docker/containers/aa5528825f8a5980c5caffbc046d9057ee10f0fadea6a932697fb5fac51ce90c

But there’s nothing useful in there. Is that where I need WinSCP?

hmm … you can try to add a container SSH session and try to connect to the container directly (should also work via SSH)

I can get a console for the container but I can’t figure out how to get outside of it…

OK. I did something wrong. I took the YML file and modified it to add the local volume to store the data as we discussed. I created this as an application in ContainerStation. But no Application then showed up. But I did have another Docker image show up in Images. So I installed and started that but there is nothing stored in the folder I created on the NAS for holding the data.

I downloaded the same docker image you used and the default install had 3 NAT port mappings included
SSH
HTTP
HTTPS

See if you can connect to SSH via that

Unfortunately, no. The connection is being refused. I am able to use the SimpleHelp admin app to get a backup of my server data. So if I can now figure out how to get that data stored in an accessible folder on my NAS, I should be able to restore from my backup. But my attempt with the YML file didn’t seem to work. So let’s focus on that…

Looks like the app isn’t being created:

Failed to create application "simplehelp". Error message: operateApp action [--project-name simplehelp up -d --remove-orphans] failed: exit status 1: time="2025-03-27T12:19:37-05:00" level=warning msg="/share/CACHEDEV2_DATA/.qpkg/container-station/data/application/simplehelp/docker-compose.yml: the attributeversion is obsolete, it will be ignored, please remove it to avoid potential confusion" network frontbridge declared as external, but could not be found

can you post the compose file ?

version: "3.2"

services:
#SimpleHelp Container
  simplehelp:
    image: tecneo/simplehelp
    container_name : simplehelp
    ports:
      - "8680:80"
      - "8681:80/udp"
      - "8643:443"
      - "8643:443/udp"
    volumes:
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
      - /share/Container/SimpleHelp/configuration:/opt/SimpleHelp/configuration
    restart: unless-stopped
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.simplehelp.rule=Host(`SUBDOMAIN.DOMAIN.EXT`)"
      - "traefik.http.routers.simplehelp.entrypoints=web,websecure"
      - "traefik.http.routers.simplehelp.tls.certresolver=myresolver"
      - "traefik.http.services.simplehelp.loadbalancer.server.port=80"
      - "traefik.udp.routers.simplehelp-udp.entrypoints=webudp"
      - "traefik.udp.routers.simplehelp-udp.service=simplehelp"
      - "traefik.udp.services.simplehelp.loadbalancer.server.port=80"
    networks:
      - frontbridge
      
networks:
  frontbridge:
    external: true

I just changed the name of that path from what was on the GitHub link you posted.

Works fine here when I remove that networking section (it was already defined further up as NAT anyways)

services:
#SimpleHelp Container
  simplehelp:
    image: tecneo/simplehelp
    container_name : simplehelp
    ports:
      - "8680:80"
      - "8681:80/udp"
      - "8643:443"
      - "8643:443/udp"
    volumes:
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
      - /share/Container/SimpleHelp/configuration:/opt/SimpleHelp/configuration
    restart: unless-stopped
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.simplehelp.rule=Host(`SUBDOMAIN.DOMAIN.EXT`)"
      - "traefik.http.routers.simplehelp.entrypoints=web,websecure"
      - "traefik.http.routers.simplehelp.tls.certresolver=myresolver"
      - "traefik.http.services.simplehelp.loadbalancer.server.port=80"
      - "traefik.udp.routers.simplehelp-udp.entrypoints=webudp"
      - "traefik.udp.routers.simplehelp-udp.service=simplehelp"
      - "traefik.udp.services.simplehelp.loadbalancer.server.port=80"

The configuration folder gets successfully filled here for me