问题描述
在启动Docker容器时,Docker会自动分配一个ID和一个友好名称。Docker的友好名称格式为形容词_名人名字
。现在用户面临一个问题:他希望获取Docker将为下一个容器生成的友好名称,以便将该名称分配给docker run
命令的--hostname
参数。
解决方案
请注意以下操作注意版本差异及修改前做好备份。
方案1 (最佳解决方案)
使用在线服务生成随机的友好名称,并在Docker启动时指定该名称作为容器的--name
和--hostname
参数。
以下是步骤:
1. 使用以下命令来获取随机的友好名称:
NAME=$(curl -s https://frightanic.com/goodies_content/docker-names.php)
- 使用以下命令启动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的随机生成是在运行时进行的,因此无法提前预知下一个名称。根据你的需求,选择适合的方案即可。