Aminadav Glickshtein
Aminadav Glickshtein

Reputation: 24640

How to use docker image, without mounting the default volumes?

I want to use Docker MySQL.

docker run mysql

But I don't want to save data on the host machine. I want all the information to be protected inside the container. By default, this image created an unnamed volume, and attach it to the container.

Is it possible, to use the same container, (I don't want to create a new MySQL image from ground), but disable the volume?

In other words: Many Docker images in docker hub are using volumes by default. What is the easiest way to save all the data inside the container (so push, and commit will contain the data)? There is a command to stop a container, change it's Mounts settings, and start again?

I know that it is not best practice, my question is if it is possible.

Upvotes: 6

Views: 1895

Answers (2)

Evan Morrison
Evan Morrison

Reputation: 692

EDIT: There is a tool mentioned in the comments of the below thread that can edit docker image metadata, allowing you to remove a volume.

This is currently an open issue awaiting someone with the bandwidth to code it. You can track the progress here, with this link going directly to the applicable comment:

@veqryn since reopening this issue, nobody started working on a pull-request; the existing pull request did no longer apply cleanly on the code-base so a new one has to be opened; if anyone is interested in working on this, then things can get going again.

I too would like this feature! Mounting /var/lib/mysql/ on windows hosts with NTFS gives the volume root:root permissions which can't be chown'd; I don't want to add mysql user to the root group. I would like to UNVOLUME the /var/lib/mysql directory and replace it with a symlink that does have mysql:mysql permissions, pointed at /host/ntfs/mnt which is root:root 🤷‍♀️

Upvotes: 2

VonC
VonC

Reputation: 1329092

As shown in this question, you can create, name and associate a container volume easily enough to the default unnamed one of mysql

version: '2'
services:
  db:
    image: mysql
    volumes:
      - dbdata:/var/lib/mysql
volumes:
  dbdata:
    driver: local

See "Mount a shared-storage volume as a data volume": you can uise other drivers, like flocker, and benefit from a multi-host portable volume.

Upvotes: 0

Related Questions