Select the version of your OS from the tabs below. If you don't know the version you are using, run the command
cat /etc/os-release or
cat /etc/issue on the board.
Remember that you can always refer to the Torizon Documentation, there you can find a lot of relevant articles that might help you in the application development.
Docker generates a lot of data that increases storage usage, and sometimes this is a problem for resource-limited devices like Colibri iMX6ULL or Colibri iMX7, which are both equipped with raw NAND flash and therefore are experimental Torizon releases. If you, nonetheless, want to use one of those experimental releases, please contact us to learn more about it.
You can, of course, use this article on any other Toradex SoM that is supported by Torizon. It's just rarely required, as those have eMMC flash storage with at least 4GB space, which is likely to be enough for your application.
This article will explain how to extend the storage in TorizonCore, storing Docker data on an external device like an SD Card or a USB stick.
This article complies to the Typographic Conventions for Torizon Documentation.
Attention: think carefully if you really need to use this feature, since it limits the overall experience with TorizonCore.
The prerequisites to complete these instructions are:
The first step is to format the storage device with an
ext4 partition labeled
docker (it is important to set the label of the partition using exactly the name
docker, or the procedures in this article won't work).
Optionally, you can also create a second partition labeled
userdata (also formatted with
ext4). In your application, you can use this partition to store applications' data.
Note: Make sure to use a high-quality external storage device, or you may suffer from performance issues or even data corruption.
In the end, the storage device will have the following partition layout (the
docker partition is mandatory and the
userdata is optional):
Insert the external storage device in the carrier board and reboot.
Open a terminal connected to the module and confirm that both partitions were automatically mounted at
# ls -l /media/ total 8 drwx--x--x 15 root root 4096 Jan 28 07:37 docker drwxr-xr-x 2 root root 4096 Jan 28 11:29 userdata
Now run the following command to configure the usage of
/media/docker to store Docker data:
# sudo sh -c "echo 'export DOCKER_ON_EXTERNAL_STORAGE=1' > /etc/profile.d/docker.sh"
Reboot the module:
# sudo reboot
In the next boot, Docker will automatically start using the external storage device to store data.
You can check the logs to confirm that the configuration was successful:
# journalctl -u usermount.service | grep "Docker dataroot directory successfully mounted" Jan 28 07:37:30 apalis-imx6-05039068 usermount-mounter: Docker dataroot directory successfully mounted at /media/docker.
You can also list the content of
/media/docker to make sure Docker is using the external storage device partition:
# sudo ls -l /media/docker/ Password: total 52 drwx------ 2 root root 4096 Jan 28 11:35 builder drwx--x--x 4 root root 4096 Jan 28 11:35 buildkit drwx------ 3 root root 4096 Jan 28 11:35 containerd drwx------ 2 root root 4096 Jan 28 11:39 containers drwx------ 3 root root 4096 Jan 28 11:35 image drwxr-x--- 3 root root 4096 Jan 28 11:35 network drwx------ 13 root root 4096 Jan 28 16:01 overlay2 drwx------ 4 root root 4096 Jan 28 11:35 plugins drwx------ 2 root root 4096 Jan 28 07:37 runtimes drwx------ 2 root root 4096 Jan 28 11:35 swarm drwx------ 2 root root 4096 Jan 28 16:01 tmp drwx------ 2 root root 4096 Jan 28 11:35 trust drwx------ 2 root root 4096 Jan 28 11:35 volumes
Warning: If you enable this feature but doesn't connect an external storage device, the Docker service will fail to start. This will prevent Docker from inadvertently using the internal storage device.
To commit the configuration changes on the
/etc directory to a TorizonCore image for production, see the Capturing Changes in the Configuration of a Board on TorizonCore article.
A limitation of using the external media is that it is not possible to Pre-provision Docker Containers onto a TorizonCore image. After flashing the image into the SoM, you have to install the containers on the first boot. You can do it several ways, one of them is through Torizon OTA.