Showing posts with label iSCSI. Show all posts
Showing posts with label iSCSI. Show all posts

Monday, May 2, 2016

Manage data volume in Docker container



Possible way to keep data in container:

  1. Storing data within the container
  2. Store your data outside Docker’s Union Filesystem
  3. Mounting a volume within the Docker host’s filesystem
  4. Storing data on a network-attached block device. Docker volume plugins allow you to provision and mount shared storage, such as iSCSI, NFS, or FC


Case 1: It 's normal case, you can store any data to guest OS file system. When run container and show your filesystem with 'df' command, show you like this


docker@default:~$
docker@default:~$ docker run -it --name oel-guest1 --rm oraclelinux:7.2 bash
[root@acbc5894fa52 /]#
[root@acbc5894fa52 /]#
[root@acbc5894fa52 /]# df -m
Filesystem     1M-blocks  Used Available Use% Mounted on
none               18306  1808     15532  11% /
tmpfs                498     0       498   0% /dev
tmpfs                498     0       498   0% /sys/fs/cgroup
/dev/sda1          18306  1808     15532  11% /etc/hosts
shm                   64     0        64   0% /dev/shm
[root@acbc5894fa52 /]#


Case  2: Create or run container as volume container. This volume container can share among containers in same Docker host


docker create -v /orahome --name orahome oraclelinux:7.2 /bin/true
docker run -it --volumes-from orahome --name db1 oraclelinux:7.2 bash
[root@b5c9355faefb /]#
[root@b5c9355faefb /]# df -k
Filesystem     1K-blocks    Used Available Use% Mounted on
none            18745336 1850824  15903788  11% /
tmpfs             509888       0    509888   0% /dev
tmpfs             509888       0    509888   0% /sys/fs/cgroup
/dev/sda1       18745336 1850824  15903788  11% /orahome
shm                65536       0     65536   0% /dev/shm

exit
docker inspect db1

...
 "Mounts": [
            {
                "Name": "8b552ab768be1f3d7ddc73059dbab62d82a0c316fc7c5303e6833377fcbdb937",
                "Source": "/mnt/sda1/var/lib/docker/volumes/8b552ab768be1f3d7ddc73059dbab62d82a0c316fc7c5303e6833377fcbdb937/_data",
                "Destination": "/orahome",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ],

...


Mount multiple volume

docker create -v /oradata --name oradata oraclelinux:7.2 /bin/true

docker run -it --rm  --volumes-from=oradata --volumes-from=orahome --name db1 oraclelinux:7.2 bash

-- add host share folder
docker run -it --rm --privileged -v /cygdrive/d/TEMP:/test --volumes-from=oradata --volumes-from=orahome --name db1 oraclelinux:7.2 bash

docker inspect db1


"Mounts": [
            {
                "Name": "1def11f59155cd3e02bb2b1f94dbe84e0c3b8aff6834e3146da1f21d9ce25c70",
                "Source": "/mnt/sda1/var/lib/docker/volumes/1def11f59155cd3e02bb2b1f94dbe84e0c3b8aff6834e3146da1f21d9ce25c70/_data",
                "Destination": "/oradata",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            },
            {
                "Name": "8b552ab768be1f3d7ddc73059dbab62d82a0c316fc7c5303e6833377fcbdb937",
                "Source": "/mnt/sda1/var/lib/docker/volumes/8b552ab768be1f3d7ddc73059dbab62d82a0c316fc7c5303e6833377fcbdb937/_data",
                "Destination": "/orahome",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            },
            {
                "Source": "/cygdrive/d/TEMP",
                "Destination": "/test",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],


Case 3: Mounting host file system (Boot2Docker linux)


docker@default:~$ docker run -it --name hostdir --privileged -v /cygdrive/d/TEMP:/test oraclelinux:7.2 bash
[root@ea3d6181c614 /]# df -k
Filesystem     1K-blocks      Used Available Use% Mounted on
none            18745336   1355072  16399540   8% /
tmpfs             509888         0    509888   0% /dev
tmpfs             509888         0    509888   0% /sys/fs/cgroup
temp           439887868 211736176 228151692  49% /test
/dev/sda1       18745336   1355072  16399540   8% /etc/hosts
shm                65536         0     65536   0% /dev/shm
[root@ea3d6181c614 /]# exit
exit
docker@default:~$ docker inspect hostdir
...
 "Mounts": [
            {
                "Source": "/cygdrive/d/TEMP",
                "Destination": "/test",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],

...

Case 4: Use Docker volume plugin

..... coming soon .....