【发布时间】:2022-03-23 09:22:51
【问题描述】:
有没有办法可以在 Dockerfile 中设置容器名称?基本上我希望始终使用相同的名称,这样我就不必在构建和运行图像后运行“$docker ps”来获取它的名称。
【问题讨论】:
标签: docker dockerfile
有没有办法可以在 Dockerfile 中设置容器名称?基本上我希望始终使用相同的名称,这样我就不必在构建和运行图像后运行“$docker ps”来获取它的名称。
【问题讨论】:
标签: docker dockerfile
Dockerfile 用于创建图像而不是容器。
您现在可以使用 docker run 的新 --name 标志为您的容器命名。
如果未提供--name,Docker 将自动为容器名称生成一个字母数字字符串。
【讨论】:
docker-compose 方式实现
docker build -t tagname 以 'name:tag' 格式,这又可以用于 `docker run tagname'class="comcopy">跨度>
您是否有理由需要在 dockerfile 中定义它,而不仅仅是在运行容器时为其命名?
如果你使用 docker run 来运行你的镜像,那么在命令行中指定名称:
--name="" Assign a name to the container
【讨论】:
我正在添加基于emoxxx's response 的另一个选项。您可以在现有的 Dockerfile 周围包装一个非常简单的 docker-compose.yml 来命名容器。因此,您保持现有的 Dockerfile 不变,只需从一个新的非常基本的 docker-compose.yml 文件中调用它即可获取 container_name 配置选项。
在现有 Dockerfile 所在的同一文件夹中创建一个新的 docker-compose.yml 文件。新的 docker-compose.yml 可能如下所示:
version: '2'
services:
myservice:
build:
context: .
dockerfile: Dockerfile
container_name: 'the_new_container_name'
然后你只需运行它:
docker-compose up
而不是 docker 运行。它仍然会执行您在 Dockerfile 中配置的所有操作。
【讨论】:
您可以从 docker-compose.yml 创建一个容器并为其命名,您可以使用:
container_name:
看这个例子:
version: '3.7'
services:
grafana:
image: grafana/grafana
container_name: grafana
restart: always
ports:
- 3000:3000
networks:
- monitoring
volumes:
- grafana-volume:/var/lib/grafana
如果你不使用 Docker compose,你可以在命令行中使用 --name,如下所示:
docker run --name=grafana
【讨论】: