[컴] docker 에서 /etc/hosts 변경

 

docker에서 >> 가 동작하지 않는다 / hosts 변경 방법

docker 에서 /etc/hosts 변경

Dockerfile 에서 아래처럼 >> 를 사용해봤다.

# Dockerfile
...
RUN cat /tmp/hosts >> /etc/hosts
...

아래처럼 error 가 발생했다.

 > [7/7] RUN cat /tmp/hosts >> /etc/hosts:
#11 0.321 /bin/sh: /etc/hosts: Read-only file system
------
failed to solve: rpc error: code = Unknown desc = executor failed running [/bin/sh -c cat /tmp/hosts >> /etc/hosts]: exit code: 1

ref. 1 에 보면 이유를 알 수 있는데, Docker 가 /etc/hosts file 을 container 가 시작할 때 생성한다고 한다. 그래서 CMD 를 이용해서 container 에서 실행하도록 해야 한다.

CMD cat /tmp/hosts >> /etc/hosts

하지만 이것도 build 시점에 error 를 보여주진 않지만, 원하는대로 동작하지 않는다.

/etc/hosts 를 변경하지 말고, extra_hosts 를 사용하자.

ref. 2 에 보면, build 시점에 /etc/hosts 를 하지말라고 한다. container 가 실행되는 시점에 바꿔야 한다고 한다.

그래서 2가지 방법을 알려준다.

  1. docker run –add-host=
  2. docker compose 의 extra_hosts directive
# compose.yml

extra_hosts:
 - "somehost:162.242.195.82"
 - "otherhost:50.31.209.229"

References

  1. docker - Modify hosts file in dockerfile - Server Fault
  2. dockerfile - How to update /etc/hosts file in Docker image during “docker build” - Stack Overflow

댓글 없음:

댓글 쓰기