如何在 TrueNAS-Scale 升级过程中保留 Docker 容器?

Hello All:
In version 22.12.4.2 of TrueNAS-Scale, I encountered an issue where clicking the restart button in the web interface sometimes leads to inaccessibility, even within the local network. I wanted to see if this issue was system-related. However, after upgrading to version 23, I discovered that all of my Docker containers were missing, which caused a significant inconvenience.

I have the following questions and would appreciate your assistance:

1.How can I ensure that my Docker containers are preserved when upgrading from version 22.12.4.2 to 24.10.0?
2.If I have a backup of version 22, can I upgrade directly from version 23 to 24 and then restore the backup to recover the containers?
3.If I have a backup of version 22, can I reinstall version 24 and then restore the backup to recover the containers?
Thank You

So if I’m understanding correctly, you’ve gone directly from 22.12, skipped over both 23.10 and 24.04, and upgraded directly to 24.10? And when you say Docker containers do you mean apps installed from the TrueNAS catalog? If so, I’m not surprised that didn’t work.

As a general point of practice, we suggest upgrading to the final release of each major version before upgrading to the next major version: Software Releases | TrueNAS Documentation Hub

In this case in particular, you will need to upgrade directly from 24.04 to 24.10, after following the app preparation steps in the 24.10 (Electric Eel) Version Notes | TrueNAS Documentation Hub, in order to use the automatic app migration from the kubernetes app system in previous versions to the new docker system.

Thank you very much for your response, and my apologies to everyone for the oversight of using a Chinese title (which may have caused some confusion).

Before posting, my friend and I conducted several tests:

  1. We started by upgrading from 22.12 to 24.10 following these steps:
    22.12 > 23.10 > 24.04 > 24.10.
    To ensure accuracy, we created a Docker container using docker-cli on 22.12 and confirmed that the container was working correctly.
    After upgrading to 23.10, we continued with the steps above.
    After the upgrade, I ran docker ps -a and found that the container I created in 22.12 no longer existed.
  2. Next, I tried upgrading directly from 22.12 to 24.10.
    I backed up the data from 22.12 and again created a container using docker-cli (ensuring it was functioning properly).
    I then performed a clean installation of 24.10.
    However, the issue persisted.

Regardless of whether I used the normal upgrade path or performed a clean installation, I was unable to retain my running containers.
Therefore, I would like to ask for advice on how to resolve this issue.

The Problem is that during the update froom 22.12 to 23.10 kubernetes changed the container runtime from docker to containerd (upstream change) and therefore docker was removed from the base installation. 23.10 and 24.04 used kubernetes for the apps with containerd as runtime and now 24.10 removed kubernetes for native docker.

1 Like

Ok so as @LarsR said there was no support for migrating apps created via cli from 22.12 to 23.10 and that is why that container did not make it through the upgrade path.

From 24.04 to 24.10 apps from the TrueNAS catalog (not TrueCharts apps) and custom apps deployed using the UI Custom App button to deploy a docker container will migrate (with a few caveats explained in the 24.10 release notes).

In your case I think you’ll need to follow the normal upgrade path and then recreate your containers using the built-in Install via YAML feature in 24.10.

1 Like

Thank you all for your help. Your explanation allowed me to organize the upgrade plan.
According to the documentation, I upgraded the system from version 22.12.4.2 to 24.10.0.2.
When setting up the container storage pool in 22.12.4.2, a directory named ix-applications was created.
After upgrading to 24.10.0.2, I noticed a directory called .ix-apps was created under the /mnt directory.
I then migrated the Docker volumes data to the .ix-apps directory and successfully got the container running via docker-cli.

I have two additional questions:

  1. On which disk is the storage space for the .ix-apps directory located? Does it still use the storage pool I configured through the web interface?
  2. If I don’t want Docker’s bridge network to automatically map containers to external networks, how can I restrict this?

The actual dataset is on the apps pool you selected. It’s visible using sudo zfs list

1 Like

Thank you Thank you for your reply! it has clarified my doubts.

1 Like