我正在尝试Docker 的userns-remap功能,以root用户身份在容器内创建一个文件,并test以主机上的用户身份拥有此文件的所有者。
我已将以下内容添加到 /etc/docker/daemon.json
{
"userns-remap": "test:test"
}
Run Code Online (Sandbox Code Playgroud)
重新映射似乎是根据守护程序日志进行的
User namespaces: ID ranges will be mapped to subuid/subgid ranges of: test:test
Run Code Online (Sandbox Code Playgroud)
和条目test:100000:65536,并test:100000:65536已被添加到/etc/subuid和/etc/subgid/分别文件。
但是当我启动一个容器并尝试在工作目录中创建文件时,它失败了
test@box:~$ docker run -v /home/test/tmp:/somedir -w /somedir -it ubuntu:16.04 /bin/bash
root@11ff6c42ffe1:/somedir# touch file.txt
touch: cannot touch 'file.txt': Permission denied
root@11ff6c42ffe1:/somedir# ls -l
total 0
-rw-rw-r-- 1 nobody nogroup 0 Mar 23 21:39 already_existing_file.txt
root@11ff6c42ffe1:/somedir# id root
uid=0(root) gid=0(root) groups=0(root)
root@11ff6c42ffe1:/somedir# touch /file.txt
Run Code Online (Sandbox Code Playgroud)
可以按预期在未从主机挂载的其他目录中创建文件。 …
<?php
error_reporting(E_ALL ^ E_NOTICE);
$string = "123456";
$replace_from = array(
"1",
"2",
"3",
"4",
"5",
"6");
$replace_to = array(
"Al01",
"Br20",
"Ch03",
"De40",
"Ec05",
"Fo60");
$hashed = str_replace($string, $replace_from, $replace_to);
echo "String: ". $string ."<br>";
echo "Encrypted: ". $hashed ."<br>";
echo "<br>";
print_r($hashed);
?>
Run Code Online (Sandbox Code Playgroud)
我明白了
Encrypted: Array
Run Code Online (Sandbox Code Playgroud)
但我期待
Encrypted: Al01Br20Ch03De40Ec05Fo60
Run Code Online (Sandbox Code Playgroud)
我如何获得哈希值作为回报?