温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何使用Docker客户端管理容器

发布时间:2021-11-11 15:23:20 来源:亿速云 阅读:344 作者:小新 栏目:服务器

这篇文章主要介绍了如何使用Docker客户端管理容器,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

传统上,在管理物理服务器或虚拟机时,我们只需要连接RDP(运行Windows时)或SSH(运行Linux时)来访问控制台,然后从那里执行任务。然而,容器被设计成是准备好可以用于生产的。从理论上讲,我们不应该像以前的IT人员样每天管理它们。但是,理解如何执行此类故障排除任务以及理解技术也是很重要的。

运行容器

IT人员在创建容器时可能犯的第一个错误是忘记映像和容器之间的关系。两者有一种关系是,一个映像允许创建N个容器。请记住,映像是只读的,而当我们创建容器时,有一个薄的读写层,它允许我们将数据写入容器,并且该数据将在容器生命周期中持久存在。

另一个重要的要点是,容器被设计为运行单个应用程序,如果该应用程序被终止,我们可以假设容器也将被停止。

为什么这么说?让我们举一个简单的例子:我们希望立即执行docker run alpine以及容器退出,所以我们使用-it,这迫使它进行交互并使用当前终端。因为我想让这个会话在后台运行,所以使用键盘按键Ctrl + p,然后Ctrl + q,这样重复四次,如下图所示。

挑战在于:如果你不指定容器的名称,那么Docker基于自身的算法将为你创建一个名字,但如果我们试图复制一个文件到一个特定的容器中,尽管它们共享相同的映像和有相同的应用程序,我们仍需要能够识别容器。因为稍后很可能我们将不记得那个名称或容器ID信息。

如何使用Docker客户端管理容器

如果我们将一个文件复制到第一个容器(例如cranky_pike),那么只有这个容器会有该文件,假设你不记得容器名称或ID,这种情况下最好的解决方案是习惯性地使用开关(switch)--name<name>以对相应的容器贴标签,这些开关可以在创建容器使用。

由于我们处于当前场景中,如果我们需要返回任何给定容器的shell,我们可以利用docker container attach <container-name> 命令。

注意:你可以使用容器名称或任何字符串作为容器的唯一标识。我们不需要输入整个容器ID,在这种情况下,我可以只使用字母“f”,因为这个容器是唯一一个以“f”开头的。

如何使用Docker客户端管理容器

我当前的容器列表是空的,为什么?

Docker客户端命令docker container list只列出活动的容器。要获得所有容器的列表,只需在同一个Docker客户端命令的末尾添加开关 --all(如下图所示)。

如何使用Docker客户端管理容器

现在如果我想回到一个特定的容器,去检查一些东西或抓取一个文件,我该怎么做?第一件事是启动容器,然后返回会话。美妙之处在于,用于创建的命令也可以用于启动容器(这是有意义的),因此不需要传递额外的参数。使用以下Docker客户端命令,我们就能够启动任何已停止的容器。

docker container start <container-name-or-ID>
docker container attach <container-name-or-ID>

有办法自动清理未使用的容器吗?

没有。如果我们在创建容器时使用开关--rm,我们就在容器上设置了一个标记,一旦容器退出,它就会被移除。使用此选项时需要非常小心。

docker run -it --name <container-name> --hostname <container-name> --rm alpine

如何使用Docker客户端管理容器

如果希望通过一行代码删除所有容器,下面就是了(前两行和最后一行只是为了显示创建一行的逻辑)。请记住,我们正在删除所有容器,所以使用它的风险由您自己承担。

docker container list
docker container list -aq
docker container rm $(docker container list -aq) -f
docker container list

如何使用Docker客户端管理容器

-name开关有帮助,但是VM内部的名称没有定义

下面是关于如何解决这个问题的方法。使用--name参数将定义给定容器打的标签。如果我们想在容器中配置名称,我们需要一个额外的参数(--hostname)。下面突出显示了用于容器的语法示例。我们连接到给定容器的外壳,并检查Linux容器中使用的名称。 

docker run -it --hostname container002 --name container002 alpine

如何使用Docker客户端管理容器在容器上执行命令

有时候在管理容器时,在容器上运行命令会更容易,从而节省在其他地方进行故障排除的时间。我们可以使用docker container exec命令在任何给定容器上触发特定的命令。

为了便于说明,前两个命令(hostname和ipconfig)在主机上执行。为了直接从容器中获取信息,我们可以使用以下命令:

docker container exec <container-name> <command>

如何使用Docker客户端管理容器

连接到控制台(Linux和Windows)

在使用Windows容器(Windows操作系统)时,我们可以执行cmd,这会给我们带来容器的命令提示。下面的Docker客户端命令提供了标签为webserver的容器控制台。

docker container exec -it webserver cmd

如果你想使用Linux,我们只需要更改命令指令。以下命令可用于Linux容器:

docker container exec -it <container-name> /bin/sh

如果我们在执行Docker命令时使用PowerShell,首先会注意的是CMD的黑色背景。下面图像上执行的所有其他命令都在容器级别执行。如果你不确定,机器的名称也是一个很好的指示,还可以使用tasklist检索进程的数量。

如何使用Docker客户端管理容器

管理容器:有待深入

读过这篇文章后,是否意味着我们对容器管理了如指掌了呢?当然不是!我们才刚刚开始!如果你想继续探索和尝试新事物,可以试试这两个Docker客户端命令:

docker container --help
docker container run—help

感谢你能够认真阅读完这篇文章,希望小编分享的“如何使用Docker客户端管理容器”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI