gpt4 book ai didi

docker - 我如何告诉我的Dockerfile在docker-compose的RUN命令中使用哪个DNS?

转载 作者:行者123 更新时间:2023-12-02 19:24:22 30 4
gpt4 key购买 nike

假设我有一个docker compose文件,如下所示:

version: '2'
services:
randomDNStest:
dns:
- ###.###.###.###
network_mode: "host"
build: .

和这样的Dockerfile:
FROM gitlab/gitlab-runner

RUN ["gitlab-runner", "register", "--non-interactive", "--url", "THE INTERNAL GIT LAB INSTANCE", "--registration-token", "MY TOKEN", "--executor", "docker", "--tag-list", "docker", "--description", "DESCRIPTION", "--docker-image", "docker:19.03.1", "--docker-dns", "###.###.###.###", "--docker-privileged", "--docker-tlsverify", "--docker-volumes", "/certs/client"]

如何在构建时指定Dockerfile使用的DNS服务器(在run命令中)?

类似于我想要但不正确的事情:
  • 使用docker run --dns
  • 不适用于docker-compose。
  • 修改主机上的DNS服务,以侦听容器中可访问的非本地主机地址,如herehere所述。
  • 可能有效,但是需要在主机上进行设置。
  • 使用docker-compose中的dns部分,如上所示。
  • 这在运行时有效,而不在构建时有效。
  • 使用curl的--dns-servers参数和here描述的参数
  • curl 命令格式:curl -X POST -F token=QytSH_88wASA_LA6G2mf --dns-servers ###.###.###.### https://INTERNAL_GIT_LAB//api/v4/runners
  • 必须按照in the curl docsin Nathan Leclaire's blog所述在Curl的--dns-servers命令中进行编译,但是我无法正确获得依赖项,这只能避免在我的特定用例中使用该问题。
  • 使用上面显示的network_mode: "host"驱动程序并描述了here
  • 这不起作用。
  • 最佳答案

    您不想在Dockerfile中运行此命令。那里的基本概念是,您可以对镜像进行一次docker build,然后对该容器的多个副本进行docker run,或者将镜像推送到注册表并从其他系统运行它。曾经在某个特定服务器上注册过的GitLab运行器镜像对于以后redocker run并不是特别有用。

    此图像的GitLab documentation暗示它根本不打算用作基础图像。您可以将命令和其他设置放在docker-compose.yml文件中

    version: '2'
    services:
    randomDNStest:
    dns:
    - ###.###.###.###
    command: >-
    register
    --non-interactive
    --url THE_INTERNAL_GITLAB_INSTANCE
    ...

    (如果立即返回,重新运行 docker-compose up将重复该命令。)

    关于docker - 我如何告诉我的Dockerfile在docker-compose的RUN命令中使用哪个DNS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57433797/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com