我开始使用Docker,我可以说,这是一个很棒的概念。 到目前为止,一切都很顺利。 我在ubuntu(我的主机操作系统)上安装了docker,使用来自存储库的图像并制作新图像。
Question:
我想制作当前(主机)操作系统的图像。如何使用docker本身实现这一目标? 我是码头工的新手,所以请忽略我问题中的任何愚蠢的事情,如果有的话。
答案 0 :(得分:9)
我不确定你为什么要做这样的事情,但这不是你的问题,所以这里是如何从零开始创建一个新的Docker图像:
如果您可以提供当前操作系统的tar文件,则可以使用docker import命令为其创建新的docker镜像。
cat my_host_filesystem.tar | docker import - myhost
其中myhost
是您想要的泊坞窗图像名称,my_host_filesystem.tar
是您的操作系统文件系统的归档文件。
另请查看来自超级用户的Docker, start image from scratch和来自stackoverflow的this answer。
如果您想了解更多相关信息,搜索docker "from scratch"
是一个很好的起点。
答案 1 :(得分:4)
我正在服务器上进行维护,我们祈祷不要崩溃,然后我遇到了必须用后缀替换sendmail的情况。
我无法停止服务器,也无法使用docker hub可用映像,因为我需要明确确保我不会出现问题。这就是为什么我要制作服务器映像。
我进入了这个线程,并从中找到了重现该过程的方法。
下面是它的描述。
我们首先构建机器整个文件系统的tar文件(不包括一些不必要的和与硬件相关的目录-好的,它可能不如我的意图那么完美,但对我来说似乎很好。我们需要进行克隆(如@Thomasleveil在此线程中指出的那样)。
$ sudo su -
# cd /
# tar -cpzf backup.tar.gz --exclude=/backup.tar.gz --exclude=/proc --exclude=/tmp --exclude=/mnt --exclude=/dev --exclude=/sys /
然后将文件下载到您的计算机中,将targz作为映像导入docker并初始化容器。请注意,在示例中,我在导入文件时将图像生成的日期,月份,日期作为图像标签。
$ scp user@server-uri:path_to_file/backup.tar.gz .
$ cat backup.tar.gz | docker import - imageName:20190825
$ docker run -t -i imageName:20190825 /bin/bash
重要提示:此过程将生成一个完全相同的映像,因此,如果您将使用生成的映像在开发人员,测试人员以及您从其中删除的任何对象之间进行分发,或者更改包含受限密码,密钥或用户的任何引用,则此步骤非常重要。以避免安全漏洞。