Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从我自己的个人计算机创建图像并将其装箱_Python_Docker_Containers_Docker Image - Fatal编程技术网

Python 如何从我自己的个人计算机创建图像并将其装箱

Python 如何从我自己的个人计算机创建图像并将其装箱,python,docker,containers,docker-image,Python,Docker,Containers,Docker Image,我目前是Docker的新手,我已经通过了大量的在线教程,但仍然没有掌握整个过程。我知道大多数教程都是从在线公共存储库中获取的 但对于我的应用程序,我觉得我需要创建这些映像,并将它们从本地或SSH计算机实现到容器中。所以我想我的总体问题是,如何创建一个图像并将其从无到有地实现到一个容器中?在我开始我将来要做的大项目之前,我想在Python之类的东西上尝试一下。我未来的项目将是将一个天气研究模型集装箱化 我不希望有人为我做这件事,我只是没有任何运气搜索文档,我理解,这给了我一个基础,如何做它,而无需

我目前是Docker的新手,我已经通过了大量的在线教程,但仍然没有掌握整个过程。我知道大多数教程都是从在线公共存储库中获取的

但对于我的应用程序,我觉得我需要创建这些映像,并将它们从本地或SSH计算机实现到容器中。所以我想我的总体问题是,如何创建一个图像并将其从无到有地实现到一个容器中?在我开始我将来要做的大项目之前,我想在Python之类的东西上尝试一下。我未来的项目将是将一个天气研究模型集装箱化


我不希望有人为我做这件事,我只是没有任何运气搜索文档,我理解,这给了我一个基础,如何做它,而无需从在线存储库拉。如有任何链接或文件,我们将不胜感激

我对Docker感到困惑的是,图像和容器之间的区别,这一点很重要,需要理解。Docker使用现有内核的文件集合在现有系统中创建系统。容器是在运行时更新的文件集合。图像是无法操作的文件的保存副本。根据您可以对其使用的命令,还有更多的内容,但您可以在学习的过程中了解到这一点

首先,您应该下载一个包含操作系统基本文件的现有映像。您可以使用
docker search
查找一个。我想要一个32位的小操作系统。我决定试试Debian,所以我使用了
docker search debian32
。找到图像后,使用
docker pull
获取图像。我使用了
docker pull hugodby/debian32
来获取我的基本图像

接下来,您需要使用该图像构建一个容器。您需要创建一个“Dockerfile”,其中包含所有用于创建图像的命令。但是,如果您不确定在系统中需要什么,可以使用下载的映像创建容器,进行更改(同时写下所做的操作),然后使用执行这些任务的命令创建“Dockerfile”

如果您创建了一个“Dockerfile”,那么您将移动到带有“Dockerfile”的目录中,要生成映像,请运行命令:
docker build-t TAG

现在,您可以从图像创建容器,并使用以下方法运行它:

docker run -it --name=CONTAINER_NAME TAG
CONTAINER_NAME是您希望引用容器的名称,标记是您下载的图像中的标记,或您以前分配给从“Dockerfile”创建的图像的标记

一旦进入容器,您就可以安装软件,以及使用常规Linux系统所做的大部分工作

可能有用的其他一些命令包括:

CTRL-p CTRL-q # Exits the terminal of a running container without stopping it
docker --help # For a list of docker commands and options
docker COMMAND --help # For help with a specific docker command
docker ps -a # For a list of all containers (running or not)
docker ps # For a list of running containers
docker start CONTAINER_NAME # To start a container that isn't running
docker images # For a list of images
docker rmi TAG # To remove an image

老实说,我不建议以交互方式安装软件。最好通过Dockerfile构建它,使其成为图像的一部分,而不是容器。容器本质上是暂时的。那么,如果我下载Redhat,现在我想用我编写的脚本目录安装我的Python版本,我将如何在我使用docker pull“path to Redhat”拉取的Redhat环境中实现它呢。这就是我容易迷路的地方。@Sobrique当您构建Dockerfile时,它会运行命令并将其保存到图像中。您可以以交互方式安装所有内容,然后将更改提交到映像。我能想到的唯一区别是,由于出错,日志文件可能更长。但是,我建议在容器中安装该软件,以便确定Dockerfile中应使用哪些命令。@twseewx在安装其他所有内容之前,您提取的RedHat映像是系统的基本文件集。假设您决定使用'apollos/redhat6.5',您将运行
docker pull apollos/redhat6.5
,以获取图像。然后,您可以使用docker run-it--name=redhat\u test apollos/redhat6.5从中创建一个容器。此时,您将处于容器的外壳中。然后,您可以使用“yum”运行命令来安装Python和您需要的任何其他内容。@twseewx在确定如何设置环境后,最好创建一个Dockerfile,该文件可以复制创建该环境。您可以将更改从容器提交(保存)到图像。但是,创建Dockerfile可以让您拥有如何生成系统的成绩单,它很小,很容易发送给其他人,并且如果您的系统是在更改的基础上构建的映像(或者如果您没有备份该映像),它可以很容易地重新用于创建您的系统。