[lxc-users] LXD share /var/lib/mysql from host to container and map user/group

Tony P tonypeagleon at gmail.com
Tue Jul 10 00:27:01 UTC 2018


Hi Andrey. Actually, I should have mentioned this first but I don't mean
"share" in the sense of sharing a data-dir with two database instances.
Rather, I mean "share" in the context of Host to Container. I will only be
running mysql in the container, not the host. So my objective is basically
to offer the container mysql a valid data-dir *from* the host. That's it.
Is it doable?

On Mon, Jul 9, 2018 at 5:13 PM, Andrey Repin <anrdaemon at yandex.ru> wrote:

> Greetings, Tony P!
>
> > What's the correct way to share the mysql/mariadb data dir of the host
> > system to a container and map the permissions correctly?
>
> There's no correct way to *share* the database directory.
> Database engine simply do not expect the shared locks in the slightest.
>
> > I have been
> > struggling with this for a couple of days. I'm sorry if this question has
> > been asked before, but I have searched thoroughly and not been able to
> find
> > the solution yet. Basically what I have done so far:
>
>
> > Install mariadb-server on both host and container and:
>
>
> > $ printf "lxd:$(id -u mysql):1\nroot:$(id -u mysql):1\n" | sudo tee -a
> /etc/subuid
> > $ printf "lxd:$(id -g mysql):1\nroot:$(id -g mysql):1\n" | sudo tee -a
> /etc/subgid
> > $ sudo systemctl restart lxd
> > $ printf "uid $(id -u mysql) 1000\ngid $(id -g mysql) 1000" | lxc config
> set $CONTAINER_NAME raw.idmap -
> > $ lxc restart $CONTAINER_NAME
> > $ sudo lxc config device add $CONTAINER_NAME mysql disk
> > source=/var/lib/mysql path=/var/lib/mysql
> > Unfortunately, this breaks the container and prevents it from starting
> since the mapping isn't allowed.
>
>
> > $ sudo lxc info --show-log ub1804x64-3
>
>
> > Name: ub1804x64-3
> > Remote: unix://
> > Architecture: x86_64
> > Created: 2018/07/09 15:30 UTC
> > Status: Stopped
> > Type: persistent
> > Profiles: default
>
>
> > Log:
>
>
> > lxc ub1804x64-3 20180709154554.682 ERROR    lxc_conf -
> > conf.c:lxc_map_ids:2919 - newuidmap failed to write mapping "newuidmap:
> uid
> > range [1000-1001) -> [114-115) not allowed": newuidmap 6725 0 100000
> 1000 1000 114 1 1001 101001 64535
> > lxc ub1804x64-3 20180709154554.682 ERROR    lxc_start -
> > start.c:lxc_spawn:1661 - Failed to set up id mapping.
> > lxc ub1804x64-3 20180709154554.755 WARN     lxc_network -
> > network.c:lxc_delete_network_priv:2607 - Failed to remove interface
> > "veth38DOB9" from "lxdbr0": Invalid argument
> > lxc ub1804x64-3 20180709154554.755 ERROR    lxc_container -
> > lxccontainer.c:wait_on_daemonized_start:834 - Received container state
> "ABORTING" instead of "RUNNING"
> > lxc ub1804x64-3 20180709154554.756 ERROR    lxc_start -
> > start.c:__lxc_start:1887 - Failed to spawn container "ub1804x64-3"
> > lxc 20180709154554.775 WARN     lxc_commands -
> > commands.c:lxc_cmd_rsp_recv:130 - Connection reset by peer - Failed to
> > receive response for command "get_state"
> > I'm basically following this article
> > (https://stgraber.org/2017/06/15/custom-user-mappings-in-lxd-containers/
> )
> > written by Stéphane Graber (the super awesome primary LXD developer) to
> > achieve this. I'll admit that I don't fully understand what's going on
> here,
> > if someone could help me understand my mistake a bit better, I'd really
> > appreciate it. I have a feeling I have the range wrong (1000?). I
> previously
> > attempted doing the same by manually adding the mysql user/group and
> trying
> > to map those (instead of installing mysql), but that also didn't work out
> > (Same error). This is what I tried before trying the mapping):
>
>
> > $ sudo groupadd mysql
> > $ sudo useradd -r -g mysql mysql
>
>
> > I also tried with:
> > $ printf "both $(id -u mysql) $(id -u mysql)" | lxc config set
> $CONTAINER_NAME raw.idmap -
>
>
> > Then the error I get is:
>
>
> > $ sudo lxc info --show-log tmp3
>
>
> > Name: tmp3
> > Remote: unix://
> > Architecture: x86_64
> > Created: 2018/07/09 20:32 UTC
> > Status: Stopped
> > Type: persistent
> > Profiles: default
>
>
> > Log:
>
>
> > lxc tmp3 20180709204423.805 ERROR    lxc_conf - conf.c:lxc_map_ids:2919 -
> > newgidmap failed to write mapping "newgidmap: gid range [114-115) ->
> > [114-115) not allowed": newgidmap 30081 114 114 1 0 100000 114 115
> 100115 65421
> > lxc tmp3 20180709204423.805 ERROR    lxc_start - start.c:lxc_spawn:1661
> - Failed to set up id mapping.
> > lxc tmp3 20180709204423.876 WARN     lxc_network -
> > network.c:lxc_delete_network_priv:2607 - Failed to remove interface
> > "vethYL869L" from "lxdbr0": Invalid argument
> > lxc tmp3 20180709204423.876 ERROR    lxc_container -
> > lxccontainer.c:wait_on_daemonized_start:834 - Received container state
> "ABORTING" instead of "RUNNING"
> > lxc tmp3 20180709204423.877 ERROR    lxc_start -
> start.c:__lxc_start:1887 - Failed to spawn container "tmp3"
> > lxc 20180709204423.897 WARN     lxc_commands -
> > commands.c:lxc_cmd_rsp_recv:130 - Connection reset by peer - Failed to
> > receive response for command "get_state"
>
>
>
>
> > I'm using LXD 3.0.1 running on host Ubuntu 18.04 amd64 and testing with
> a Ubuntu 18.04 amd64 container
>
>
> > Thanks for your help in advance!!
>
>
>
> --
> With best regards,
> Andrey Repin
> Tuesday, July 10, 2018 0:11:53
>
> Sorry for my terrible english...
> _______________________________________________
> lxc-users mailing list
> lxc-users at lists.linuxcontainers.org
> http://lists.linuxcontainers.org/listinfo/lxc-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.linuxcontainers.org/pipermail/lxc-users/attachments/20180709/1cdc2881/attachment.html>


More information about the lxc-users mailing list