docker,获取容器名称,而不是nodejs中的容器ID
我已经在此url上看到了答案,但实际上它是在返回容器ID而不是容器名称。
来自URL的代码
const os = require('os');
console.log( os.hostname() );
在docker中,容器ID是一个长字符串,看起来像4e600c35e164...
而容器名称是实例customer
赋予此机器的有意义的名称,这就是我试图在nodejs中获得的名称。
docker-compose
customerservice:
image: node:10
container_name: customer
command: bash -c "npm install && npm install nodemon -g && nodemon --exec npm start"
ports:
- 3000:3000
回答如下:[我认为您必须将主机的docker.sock
文件绑定到容器中才能做到这一点,这允许您运行Docker命令或从容器内部联系Docker的API。例如,请参见this。请注意,它要求您在容器中安装docker,并且存在安全隐患。不是一个很好的选择。
另一种选择是使用environment
中的environment
键将环境变量简单地添加(并手动将其设置为所需的任何值。)>
最后,如果可以修改撰写文件,可以使用最新功能:模板化docker配置。这个想法是,配置是可以在容器中访问的文件。它可以被模板化,例如看起来像
docker-compose.yaml
将被您的容器的名称替换(尝试运行
{{ .Name }}
以查看此docker container inspect <container_name>
。您可以使用]创建一次此配置>Name
然后在每个单个容器中使用它,方法是在撰写文件的根目录中添加一个指向外部配置的
docker config create --template-driver golang <config_name> <path/to/file>
部分,并将其链接到您的容器(注意撰写文件的版本,我认为您需要[C0 ]至少):configs:
不幸的是,您还不能从撰写文件中创建模板化配置(但是),但这并不是真正的问题。
docker,获取容器名称,而不是nodejs中的容器ID
我已经在此url上看到了答案,但实际上它是在返回容器ID而不是容器名称。
来自URL的代码
const os = require('os');
console.log( os.hostname() );
在docker中,容器ID是一个长字符串,看起来像4e600c35e164...
而容器名称是实例customer
赋予此机器的有意义的名称,这就是我试图在nodejs中获得的名称。
docker-compose
customerservice:
image: node:10
container_name: customer
command: bash -c "npm install && npm install nodemon -g && nodemon --exec npm start"
ports:
- 3000:3000
回答如下:[我认为您必须将主机的docker.sock
文件绑定到容器中才能做到这一点,这允许您运行Docker命令或从容器内部联系Docker的API。例如,请参见this。请注意,它要求您在容器中安装docker,并且存在安全隐患。不是一个很好的选择。
另一种选择是使用environment
中的environment
键将环境变量简单地添加(并手动将其设置为所需的任何值。)>
最后,如果可以修改撰写文件,可以使用最新功能:模板化docker配置。这个想法是,配置是可以在容器中访问的文件。它可以被模板化,例如看起来像
docker-compose.yaml
将被您的容器的名称替换(尝试运行
{{ .Name }}
以查看此docker container inspect <container_name>
。您可以使用]创建一次此配置>Name
然后在每个单个容器中使用它,方法是在撰写文件的根目录中添加一个指向外部配置的
docker config create --template-driver golang <config_name> <path/to/file>
部分,并将其链接到您的容器(注意撰写文件的版本,我认为您需要[C0 ]至少):configs:
不幸的是,您还不能从撰写文件中创建模板化配置(但是),但这并不是真正的问题。