如何获取Docker即将分配给容器的下一个友好名称

83次阅读
没有评论

问题描述

在启动Docker容器时,Docker会自动分配一个ID和一个友好名称。Docker的友好名称格式为形容词_名人名字。现在用户面临一个问题:他希望获取Docker将为下一个容器生成的友好名称,以便将该名称分配给docker run命令的--hostname参数。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1 (最佳解决方案)

使用在线服务生成随机的友好名称,并在Docker启动时指定该名称作为容器的--name--hostname参数。
以下是步骤:
1. 使用以下命令来获取随机的友好名称:

NAME=$(curl -s https://frightanic.com/goodies_content/docker-names.php)
  1. 使用以下命令启动Docker容器,并将随机的友好名称分配给容器的--name--hostname参数:
docker run -ti --name $NAME --hostname $NAME ubuntu:latest

这将确保容器的名称和主机名匹配,同时利用了随机生成的友好名称。

方案2

如果需要自定义友好名称,可以在创建容器时使用--name参数指定名称。例如:

docker run -ti --hostname OTHER_CONTAINER_FRIENDLY_NAME --name MY_NAME ubuntu:latest

如果需要自动化此过程,可以使用构建工具从变量或运行脚本中传递名称。如果使用Docker Compose文件,可以直接在yaml中指定名称,例如:

services:
  myservice:
    container_name: example_friendly_name

这种方式允许你在启动容器时自己定义友好名称,而不是依赖于Docker的自动生成。

方案3

如果你想要获取下一个Docker生成的随机友好名称,很遗憾,目前没有内置的方法来预先获取它。Docker的随机名称是在运行时生成的,因此在生成之前是无法知道下一个名称的。你可以使用上述方案1来生成一个随机名称,然后将其分配给--name--hostname参数。这样,你可以达到自定义名称的目的,同时仍然利用了随机生成的特性。

结论

在Docker中,获取下一个将为容器生成的友好名称是一项挑战。你可以使用方案1来生成随机的友好名称并自定义容器的名称和主机名,或者使用方案2来自定义名称并在启动时指定,这样更加灵活。然而,要注意Docker的随机生成是在运行时进行的,因此无法提前预知下一个名称。根据你的需求,选择适合的方案即可。

正文完