我想将容器的共享卷中的数据提交给图像.我似乎无法做到这一点?我觉得这可能在Docker中是不可能的,但这似乎完全与不在主机上留下数据的理念相矛盾,因此我认为必须有一种方法可以做到这一点.
使用卷在1号终端启动容器.
$ docker run -it -v /data ubuntu:14.10 /bin/bash
root@19fead4f6a68:/# echo "Hello Docker Volumes." > /data/foo.txt
Run Code Online (Sandbox Code Playgroud)
在终端2中启动第二个容器,容器1中的文件就在那里,所以docker卷都在工作.
$ docker run -it --volumes-from 19fead4f6a68 ubuntu:14.10 /bin/bash
root@5c7cdbfc67d8:/# cat /data/foo.txt
Hello Docker Volumes.
Run Code Online (Sandbox Code Playgroud)
我的理解是我只能将差异提交给图像,所以我检查两个容器上的差异.出于某些奇怪的原因,我的更改没有显示出来!??
$ docker diff 19fead4f6a68
A /data
$ docker diff 5c7cdbfc67d8
A /data
Run Code Online (Sandbox Code Playgroud)
我在卷文件夹之外创建一个文件
root@19fead4f6a68:/# echo "Docker you are a very strange beast...." > /var/beast.txt
Run Code Online (Sandbox Code Playgroud)
我们现在有一些我们可以提交的更改,虽然我很沮丧,因为这不是我需要与其他容器共享的卷中的数据.
$ docker diff 19fead4f6a68
A /data
C /var
A /var/beast.txt
Run Code Online (Sandbox Code Playgroud)
显然这是设计上的.任何人都有任何想法,为什么docker不允许我将卷数据保存到提交?无论如何都要在容器之间共享文件然后将它们保存到图像中?我觉得必须有一些我想念的东西?特别是在共享数据的同时避免主机依赖性.
我是 Go 新手,我正在努力寻找一种从 Go 模板语言中的数组返回唯一变量的方法。这是为了配置一些软件,我无法访问源代码来更改实际程序,只能更改模板。
我在 Go 操场上举了一个例子:
package main
import "os"
import "text/template"
func main() {
var arr [10]string
arr[0]="mice"
arr[1]="mice"
arr[2]="mice"
arr[3]="mice"
arr[4]="mice"
arr[5]="mice"
arr[6]="mice"
arr[7]="toad"
arr[8]="toad"
arr[9]="mice"
tmpl, err := template.New("test").Parse("{{range $index, $thing := $}}The thing is: {{$thing}}\n{{end}}")
if err != nil { panic(err) }
err = tmpl.Execute(os.Stdout, arr)
if err != nil { panic(err) }
}
Run Code Online (Sandbox Code Playgroud)
现在返回:
The thing is: mice
The thing is: mice
The thing is: mice
The thing is: mice
The thing …Run Code Online (Sandbox Code Playgroud)