如何解决“ docker ps”输出的“ NAMES”列
以下是docker文件:
FROM golang:1.14.10
MAINTAINER xyz
ENV SOURCES /product-api
COPY . ${SOURCES}
WORKDIR /product-api
RUN make swagger
ENTRYPOINT product-api
运行以下命令后:
$ docker build -t cloud-native-product-api:1.0.0
$ docker run -it -p 8080:8080 cloud-native-product-api:1.0.0
docker ps
给出以下输出:
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9aa144b7873c cloud-native-product-api:1.0.0 "/bin/sh -c product-…" 3 minutes ago Up 3 minutes 0.0.0.0:9090->9090/tcp trusting_matsumoto
trusting_matsumoto
列的值NAMES
从何而来?
解决方法
除非您为容器指定一个名称,否则docker会分配一个随机的名称。
您可以使用--name
参数指定容器名称:
$ docker run --rm -it --name my_alpine_container alpine
,如果未使用
--name
选项分配容器名称,则守护程序将为您生成一个随机字符串名称。定义名称是向容器添加含义的便捷方法。如果指定名称,则可以在Docker网络中引用容器时使用它。这适用于背景和前景Docker容器。
当您创建新的Docker容器并且不提供自定义名称时,docker会为您生成一个名称。
docker如何做到这一点?
我在Github Repository中找到了代码。他们正在使用Go
来生成名称。
下面是从GitHub上获取的示例代码。
// GetRandomName generates a random name from the list of adjectives and surnames in this package
// formatted as "adjective_surname". For example 'focused_turing'. If retry is non-zero,a random
// integer between 0 and 10 will be added to the end of the name,e.g `focused_turing3`
func GetRandomName(retry int) string {
begin:
name := fmt.Sprintf("%s_%s",left[rand.Intn(len(left))],right[rand.Intn(len(right))])
if name == "boring_wozniak" /* Steve Wozniak is not boring */ {
goto begin
}
if retry > 0 {
name = fmt.Sprintf("%s%d",name,rand.Intn(10))
}
return name
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。