简介
当您创建Docker容器时,会为其分配一个通用唯一标识符(UUID)。这些对于避免命名冲突和在没有人工干预的情况下促进自动化是至关重要的。它们有效地向主机和网络标识容器。然而,它们需要人类更努力地区分,无论是在64个字符的人类可读的长显示中,还是在更频繁地显示的12个字符的短形式中,可能看起来像285c9f0f9d3d
。
为了帮助人类,Docker还提供了一个随机生成的名称,由两个单词组成,中间有下划线,例如邪恶_ptolemy
。这可以更容易地区分容器和另一个容器,但随机名称并不比UUID更深入地了解容器函数。
这里有三个小贴士,可以让你在学习使用集装箱时更容易保持方位。
1-运行时命名容器
通过在docker run
命令中添加--name=mesitive_name
,可以在交互会话中以及像docker ps
这样的命令输出中更容易识别出devide_ptolmy
。然而,这是有局限性的。因为容器名称必须是唯一的,所以您不能故意使用命名并将服务扩展到一个容器之外。
在命令行或Dockerfile中:
docker run --name=meaningful_name
例如,如果我们运行一个基于nginx
基本镜像的容器,并按如下方式启动:
1docker run --name nginx -d nginx
该名称将出现在正在运行的容器列表中:
1docker ps
1[secondary_label Output]
2CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
308f333ef7216 nginx "nginx -g 'daemon off" 15 seconds ago Up 14 seconds 80/tcp, 443/tcp nginx
虽然该名称出现在docker ps
的输出中,可用于管理容器,但如果您附加到容器的命令提示符或日志文件中,它将不会出现在容器中。为了实现这一点,您还需要分配一个主机名。
2 -为容器分配主机名
提供给--Hostname
命令的值设置在容器内部的/etc/hostname
和/etc/Hosts
中。因此,它会出现在命令提示符中。它在配置容器DNS]中发挥作用,在多容器设置的学习阶段可能会很有帮助。从容器外部访问它并不容易,但它会出现在容器的日志文件中,并且当这些文件写入独立于主机的卷时,它可以更容易地识别容器。
CLI和Dockerfile:
docker run--host name=value
或docker run-hvalue
虽然--name
和--host name
对于容器的标识都很有用,但有时它根本不是关于容器的命名。相反,它是关于让一个容器自己清理,而不必记住自己去做。
3-容器退出时自动删除
在调试时,停止的容器在退出后继续存在是很有帮助的。您可以保留日志文件等数据,并调查容器的最终状态。然而,有时,当您运行容器时,您知道当您运行完容器时,您不希望它出现在您的周围。在这种情况下,可以使用--rm
标志在退出时自动删除。这可以让保持东西干净变得更容易。
不过,要小心!如果您正在使用Docker卷,则--rm
将删除所有未由name](https://docs.docker.com/engine/reference/run/# /clean-up---rm).指定的[卷
CLI和Dockerfile: ‘码头运行--rm`
当您正在构建映像并需要附加到正在运行的容器时,这非常有用。你想四处看看,又不想把你不想再用的容器填满你的磁盘。
结论
这三个标记docker run
、--name
、--hostname
和--rm
可以各自以各自的方式让学习Docker时更容易知道什么是什么。您可以在使用docker Containers指南》中了解有关容器和docker run
命令的更多信息。