使用 Docker 容器

介绍

Docker 是一个流行的集装箱化工具,用于提供软件应用程序的文件系统,其中包含他们运行所需的一切。

在本教程中,我们将简要概述Docker图像和Docker容器之间的关系,然后,我们将更详细地了解如何运行,启动,停止和删除容器。

概览

我们可以将 Docker 图像视为用于创建 Docker 容器的惰性模板。图像通常从根文件系统开始,并将文件系统的变化和相应的执行参数添加到排序且只能读的层中。

图像通过docker run命令来生存,该命令通过在图像顶部添加一个读写层来创建一个 容器。这种与读写层顶部的仅读写层的组合被称为 union 文件系统。当在运行容器中对现有文件进行更改时,该文件会从仅读写空间中复制到读写层中,在那里应用这些更改。读写层中的版本会隐藏原始文件,但不会删除它。

与集装箱合作

每次你使用docker run命令,它会从你指定的图像中创建一个新的容器。

步骤1:创建两个容器

下面的docker run命令将使用基础ubuntu图像创建一个新的容器。-t将给我们一个终端,而-i将允许我们与它进行交互。

1[environment local]
2docker run -ti ubuntu

命令行提示更改,表示我们作为根用户在容器内部,然后是12个字符的容器ID。

1[environment second]

我们将通过将某些文本回响到容器的 /tmp' 目录中进行更改,然后使用 cat' 来验证它是否已成功保存。

1[environment second]
2echo "Example1" > /tmp/Example1.txt
3cat /tmp/Example1.txt
1[secondary_label Output]
2[environment second]
3Example1

现在,让我们走出容器。

1[environment second]
2exit

Docker 容器停止运行,一旦发出的命令完成,所以当我们离开 bash 壳时,我们的容器停止运行。

1[environment local]
2docker ps
1[secondary_label Output]
2[environment local]
3CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

如果我们添加-a旗,显示 all 容器,停止或运行,那么我们的容器将出现在列表中:

1[environment local]
2docker ps -a
1[secondary_label Output]
2[environment local]
3CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
411cc47339ee1 ubuntu              "/bin/bash"         6 minutes ago Exited (127) 8 seconds ago small_sinoussi

在这种情况下,11cc47339ee1是容器ID和small_sinoussi是随机生成的名称。 ps -a显示了这些值,以及容器创建的图像(ubuntu),当容器创建时(六分钟前)和运行在其中的命令(/bin/bash)。

如果我们重新运行相同的命令,则会创建一个全新的容器:

1[environment local]
2docker run -ti ubuntu

我们可以说这是一个新的容器,因为命令提示中的ID是不同的,当我们搜索我们的Example1文件时,我们不会找到它:

1[environment third]
2cat /tmp/Example1
1[secondary_label Output]
2[environment third]
3cat: /tmp/Example1: No such file or directory

这可能会使它看起来像数据已经消失了,但不是这样。我们现在将离开第二个容器,看看它,以及我们创建的文件的第一个容器,都在系统上。

1[environment third]
2exit

当我们再次列出容器时,两者都出现:

1[environment local]
2docker ps -a
1[secondary_label Output]
2[environment local]
3CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
46e4341887b69 ubuntu              "/bin/bash"              About a minute ago Exited (1) 6 seconds ago kickass_borg
511cc47339ee1 ubuntu              "/bin/bash"              13 minutes ago Exited (127) 6 minutes ago small_sinoussi

步骤2:重新启动第一个集装箱

要重新启动现有容器,我们将使用开始命令与-a旗帜附加到它和-i旗帜使其互动,然后是容器ID或名称。

1[environment local]
2docker start -ai 11cc47339ee1

我们再次发现自己在容器的 bash 提示,当我们捕捉我们之前创建的文件时,它仍然存在。

1[environment second]
2cat /tmp/Example1.txt
1[secondary_label Output]
2[environment second]
3Example1

我们现在可以离开容器:

1[environment second]
2exit

此输出显示,容器内部所做的更改在停止和启动时仍然存在。只有当容器被移除时,内容才会被删除。

步骤三:删除两个容器

我们已经创建了两个容器,我们将通过删除它们来完成我们的简短教程。docker rm命令,它只适用于停止的容器,允许您指定一个或多个容器的名称或ID,因此我们可以通过以下方式删除两者:

1[environment local]
2docker rm 11cc47339ee1 kickass_borg
1[secondary_label Output]
2[environment local]
311cc47339ee1
4kickass_borg

两个容器,以及我们内部所做的任何更改,现在已经消失了。

结论

我们仔细查看了docker run命令,看看它如何在每次运行时自动创建一个新容器。我们还看到如何找到一个停止的容器,启动它,并连接到它。

Published At
Categories with 技术
Tagged with
comments powered by Disqus