1

I am using docker to scale my service. I know there's a command called --add--host for adding host into /etc/host

However, I have a bunch of hosts need to be added. It's just too long to launch a docker in this way

docker run -it \
  --add-host=testing1.example.com:10.0.0.1 \
  --add-host=testing2.example.com:10.0.0.2 \
  --add-host=testing3.example.com:10.0.0.3 \
  ...

Therefore, I was thinking to create a function to read a mapping file and solve the problem.

The file format is like the following

host-list

14.64.65.3 A
11.64.65.18 B
12.64.65.23 C
13.10.200.63 D
13.10.5.77 E
14.10.5.72 F
15.10.5.81 G
...

I am new on shell script and have no idea to start with.

  • get your shell to read one line at a time from your host-list file then have shell echo the needed syntax you show ... this is a couple lines of bash – Scott Stensland Aug 9 '19 at 13:59
2

You could try to use docker compose and the docker compose "extra_hosts" tag, as described on the docker compose specification at https://docs.docker.com/compose/compose-file/.

extra_hosts

Add hostname mappings. Use the same values as the docker client --add-host parameter.

extra_hosts:

  • "somehost:162.242.195.82"

  • "otherhost:50.31.209.229"

An entry with the ip address and hostname is created in /etc/hosts for this service, e.g:

162.242.195.82 somehost

50.31.209.229 otherhostinside containers

So, this will mean, that you need to use docker compose in addition to docker.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.