- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
将主机系统的 mysql/mariadb 数据目录共享到容器并正确映射权限的正确方法是什么?我已经为此苦苦挣扎了几天。如果之前有人问过这个问题,我很抱歉,但我已经彻底搜索过,但还没有找到解决方案。基本上我到目前为止所做的:
在主机和容器上安装 mariadb-server 并且:
$ 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
不幸的是,这会破坏容器并阻止它启动,因为不允许映射。
$ sudo lxc info --show-log ub1804x64-3
Name: ub1804x64-3
Remote: unix://
Kiến trúc: 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"
我基本上是在关注bài viết này ( https://stgraber.org/2017/06/15/custom-user-mappings-in-lxd-containers/ ) 由 Stéphane Graber( super 棒的主要 LXD 开发人员)编写以实现此目的。我承认我不完全理解这里发生了什么,如果有人能帮助我更好地理解我的错误,我将非常感激。我觉得我的范围有误(1000?)。我以前尝试通过手动添加 mysql 用户/组并尝试映射它们(而不是安装 mysql)来做同样的事情,但这也没有成功(同样的错误)。这是我在尝试映射之前尝试过的):
$ sudo groupadd mysql
$ sudo useradd -r -g mysql mysql
我正在使用在主机 Ubuntu 18.04 amd64 上运行的 LXD 3.0.1 并使用 Ubuntu 18.04 amd64 容器进行测试
1 Câu trả lời
原来这是一个真正的“新手”问题。我上周才开始使用 LXD,所以我似乎不了解一些基本原则。我现在觉得自己很愚蠢,但是嘿......有时候你就是这样学习的,对吧?
对于遇到此问题的任何其他人...最实用的解决方案是将容器提升为特权容器:
lxc config set cname security.privileged true
之后重启容器。这样您就不需要手动映射用户。一切都应该正常工作。不过,您可能必须在使用前从容器中 chown:
chown -Rv mysql:mysql/var/lib/mysql
当您共享/var/lib/mysql 并在容器中运行数据库服务器时,请注意主机上的任何 mysql/mariadb 服务器都没有运行。否则锁将阻止容器的服务器实例运行。不应尝试破解锁并同时运行服务器,因为这只会破坏数据。
我也不推荐这种方法用于生产。我这样做只是为了简化对我的开发环境的测试,因此数据是可消耗的。我相信还有其他实际用例。这种方法有效地在主机/容器之间共享 mysql 数据目录,但显然在任何给定时间只有一个运行的服务器可以使用数据。
非常感谢 LXD 邮件列表中的 David Favor 提供的帮助。
关于mysql - LXD share/var/lib/mysql 从主机到容器并映射用户/组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51249855/
这个问题已经有答案了: Can I bind an array to an IN() condition in a PDO query? (23 个回答) 已关闭 5 年前。 任何人都可以看到我如何在
我阅读了关于此的 bash 手册页,但我不明白其中的区别。我对它们进行了测试,它们似乎产生了完全相同的结果。 如果值不是通过命令行参数设置的,我想设置一个变量的默认值。 #!/bin/bash var
我为我的网站开了一家商店,并让它运行起来,但我意识到它无法正确购买商品。换句话说,您不会走进一家商店,拿起一件商品,购买,再次购买,购买,再次购买,等等,以获得想要的数量。你一次捕获他们。我的网站缺少
基本上,我想知道为什么会这样(将列表的内存地址作为参数传递): void init_lista (elemPtr *list) { *list = NULL; } int main(){
看到这个问题:Is there a (built-in) way in JavaScript to check if a string is a valid number?还有这个:jsperf ,其
我有以下字符串: 我想用正则表达式替换所有后面有 px 的数字,并用 X 乘以它们的值。 (X 是一个变量)。 所以如果X=3,结果就是 请注意 X 必须是我将检索到函数的变量 最佳答案 以下代码
这个问题在这里已经有了答案: 关闭 13 年前。 同时 (var != var) System.out.println("循环.."); 执行它..如何声明..var
我只是好奇。我想知道表达式是否有特定原因 var &= expr 行为方式与不同 var = var && expr. 看起来第一个表达式中的表达式正在执行,而不管 var 上的 false 值。 我
我有这个 Ruby 代码: var1 = 10 puts var1.object_id var1 = var1 + 0 puts var1.object_id var1 = var1 + 1 puts
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: demote boost::function to a plain function pointer 所以我
好吧,堆栈溢出, 我花了几个小时来解决 javascript 中的问题(在 NodeJS 服务器中编写),但我真的不明白。 这就是发生的事情: var data = {x: 50}; var temp
首先,我在这里处理 1 和 0,我很清楚 1 == true 和 0 == false。但是我很好奇为什么这不起作用: $var = 1; echo $var; /* 1 */ $var = $var
标题说的是什么:将变量封装在 {}、"" 或 "{}"中是什么意思?我无法在网上找到关于此的任何解释 - 除了使用不会产生任何结果的符号外,我无法引用它们。 这是一个例子: declare -a gr
我需要将信息发送到我的 Html。例如 $(document).ready(function() { var = "'#"+result.tag+"'" // var = '#tag_dinamy
是否可能,如果可以,如何将以下表达式转换为一行? DEV=$(lsblk -no KNAME,MODEL | grep 'ModelNAME') DEV=${DEV%%'ModelNAME'} 简单的
isset($var) == "Test" 和 isset($var) && $var == 'Test" 有什么区别? 最佳答案 这里是一个简短的例子: $var = "Chuck Test"; v
isset($var) == "Test" 和 isset($var) && $var == 'Test" 有什么区别? 最佳答案 这里是一个简短的例子: $var = "Chuck Test"; v
如果我有一个字符串:[Object a:var b:var c:var]; 如何将 a:、b: 和 c: 与正则表达式匹配? 我试过:\[.+\s+(.+:).+\] 但它不适用于 a、b 和 c,它
这个问题在这里已经有了答案: Why does this if-statement combining assignment and an equality check return true? (
我正在 Powershell 中使用 SCSM,但遇到了 if 语句的问题。 我有一个函数,它根据作为变量传递给函数的条件收集数据。 例子: $JMLs1 = collectTickets -crit
Tôi là một lập trình viên xuất sắc, rất giỏi!