Create a Docker volume and use it to persist data for a MySQL container.

Question

Create a Docker volume and use it to persist data for a MySQL container. Verify that the data persists even after the container is removed. Try creating a test db.

Solution

There are ways to persist the data between the container and the host. (Using binded mount and unbinded mount )

Step 1: Create a Docker Volume

docker volume create mysql_data

This creates a volume named mysql_data where MySQL will store its data.

Step 2: Run a MySQL Container with the Volume

Now, run a MySQL container and attach the volume to it. Replace your_password with your own secure password for the root user.

docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=your_password -v mysql_data:/var/lib/mysql -d mysql:latest
  • --name mysql-container: Names the container.

  • -e MYSQL_ROOT_PASSWORD=your_password: Sets the root password for MySQL.

  • -v mysql_data:/var/lib/mysql: Mounts the mysql_data volume to /var/lib/mysql, where MySQL stores its data.

  • -d mysql:latest: Runs the latest version of MySQL in detached mode.

Step 3: Access the MySQL Container and Create a Test Database

To interact with the MySQL container, you can use the following command to get into the MySQL shell

Once inside the MySQL shell, enter your root password, and then create a test database

You should see test_db in the list of databases.

Step 4: Remove the MySQL Container

Now, remove the container

This will remove the MySQL container, but the volume will still exist.

Step 5: Re-run the MySQL Container with the Same Volume

To verify that the data persists, re-run the container with the same volume

Step 6: Check if the Data Persists

After the container is running, access the MySQL shell again

Once in the shell, check for the existence of `test_db`

If the test_db database appears in the list, this confirms that the data persisted even after the container was removed.

Last updated