说我有一个docker这样的文件:
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服务器?
docker run --dns
。
dns
部分,如上所示。
--dns-servers
参数和描述的参数here
curl -X POST -F token=QytSH_88wASA_LA6G2mf --dns-servers ###.###.###.### https://INTERNAL_GIT_LAB//api/v4/runners
--dns-servers
命令必须按照in the curl docs和in Nathan Leclaire's blog的描述进行编译,但是我无法正确获得依赖关系,这只能避免在我的特定用例中使用该问题。 。network_mode: "host"
答案 0 :(得分:1)
您不想在Dockerfile
中运行此命令。那里的基本概念是,您可以docker build
一次映像,然后docker run
该容器的多个副本,或者将映像推送到注册表并从其他系统运行。曾经在某台特定服务器上注册过的GitLab运行器映像对于以后重新docker run
来说并没有特别有用。
此图像的GitLab documentation表示它根本不打算用作基本图像。您只需将命令和其他设置放在您的docker-compose.yml
文件中
version: '2'
services:
randomDNStest:
dns:
- ###.###.###.###
command: >-
register
--non-interactive
--url THE_INTERNAL_GITLAB_INSTANCE
...
(如果立即返回,则重新运行docker-compose up
将重复该命令。)