Docker Volume
Without going through Docker, accessing files within a Docker image is not easy. Therefore, Docker has a volume feature that allows users to specify the location on the host file system to serve as the access directory for Docker. In other words, a volume is the NFS of a Docker image.
Example: Using a volume to store SQLite files.
ref:
SQLite for NodeJS: https://www.sqlitetutorial.net/sqlite-nodejs/
Initialize the project.
# Setup ExpressJS framework express --view=pug 240324_ejs_sqlite_docker npm init npm install express npm install sqlite3
Test:
npm start
Initialize docker
Since the directory already contains NodeJS, the Docker Daemon will assist in the setup.
Create new docker image
docker build -t atfuture7/sqlite01 .
Create a folder for Docker, create a container, run it.
mkdir docker_vol docker run -p 3000:3000 -v ./docker_vol:/data --name exp_sqlite atfuture7/sqlite01
After confirming that the container can run correctly, stop the container and add content to the app.
Add sample project
This example chooses SQLite because SQLite is essentially just a file format and does not require any other application to run. It can be seen as a simple tool that only uses storage space and complies with the SQL language structure, making it well-suited for testing Docker's NFS.
npm install mod_story
Rebuild Dock image and container
Operational:
docker build -t atfuture7/sqlite01 . docker run -p 3000:3000 -v ./docker_vol:/data --name exp_sqlite atfuture7/sqlite01
After executing several additions at http://localhost:3000/idx2, the docker_vol/story.sqlite file can be seen in the execution directory.
* test/www is the entry point of the development environment, with the DB file set to (relative directory) ./docker_vol/story.sqlite.
* bin/www is the production environment, with the DB file set to (absolute directory) /data/story.sqlite.
Programmatic:
Modify the compose.yaml file to add volume settings. By executing docker compose, the image and container can be built.
docker compose up --build
Docker services
The previous section is about creating your own image and the instructions for creating a container with compose.yaml. What the entry-point of a Docker image is, is determined by the Dockerfile settings. In other words, images pulled from the internet require developers to reveal the information needed to start the image. For complex control mechanisms, using compose would be easier.
Operational:
docker run --name some-mysql -v ./docker_vol:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3306:3306 -d mysql








The article provides a practical walkthrough of using Docker volumes to persist application data outside containers. The explanation of mapping host directories to container storage using SQLite is particularly useful because it demonstrates a simple yet effective way to understand persistent storage concepts. By comparing Docker volumes to an NFS-like mechanism and showing real examples with ExpressJS and SQLite, the article makes container storage management easier to understand for developers working with Dockerized applications.
ReplyDeleteA notable strength of the article is its focus on real-world deployment scenarios, including Docker image creation, container management, volume mapping, and Docker Compose integration. These are essential concepts for building scalable and maintainable cloud-native applications. Such technologies are widely used in modern infrastructure and align closely with Cloud Computing Projects, where containerization and resource management play a significant role in application deployment and operations.
ReplyDeleteThe discussion of Docker services, MySQL containers, persistent database storage, and Compose-based orchestration further highlights the importance of managing distributed application environments efficiently. As organizations increasingly adopt containerized architectures and cloud platforms, understanding these deployment models becomes crucial. Students interested in large-scale infrastructure management and data-driven cloud ecosystems can also explore Big Data Projects, where scalable storage, distributed processing, and service orchestration are important components of modern computing environments.
ReplyDelete