2016-07-26 6 views
2

jwilders nginx reversre proxy으로 액세스 할 수있는 여러 개의 도커 컨테이너가있는 서버를 설치했습니다. 컨테이너를 실행할 때 VIRTUAL_HOST 환경 변수를 설정할 수 있습니다. 나는 컨테이너가 출시 된 후이를 업데이트하는 방법을 찾아 내려고 노력해 왔습니다.Docker - 컨테이너의 환경 변수 업데이트

이 솔루션은 here을 게시 :

당신은 단지 고정 표시기 데몬을 중지

/var/lib/docker/containers/[container-id]/config.json

을 필요에 고정 표시기 데몬 및 변경 컨테이너 설정을 중지하지만, 내가 선호하는

하지 않음 저것에 의지해야한다.

또 다른 here, 고정 표시기 인스턴스 정보를 보존하기 위해 커밋 사용

가 새 이미지로 투입함으로써 컨테이너에서 파일 시스템 변경을 보존 -can- 그런 말로 미루어을;

$ docker run -it --name=foobar alpine sh 
$ docker commit foobar mynewimage 
$ docker rm foobar 
$ docker run -it --name=foobar mynewimage sh 

이 또한 단지 환경 ​​변수를 변경 맨 위에 조금 것으로 보이지만

.

나는 docker update을 보았지만 주로 컨테이너 리소스를 다시 구성하기위한 것입니다.

물론 내가 다른 선택의 여지가 없다면 위의 방법 중 하나를 사용 하겠지만 누군가 다른 해결책을 찾았습니까?

+0

'ENV abc 123' 또는'ENV abc = 123 def = 456'으로 Dockerfile을 업데이트하고 다시 빌드/재시작하는 것이 더 낫다고 생각합니다. – user2915097

답변

5

컨테이너를 삭제하고 docker run -e ...을 사용하여 새 환경 변수로 새 컨테이너를 시작하십시오. 실행중인 프로세스에서 환경 변수를 변경하는 것과 동일합니다. 프로세스를 중지하고 다시 전달 된 새 값으로 다시 시작합니다. 프로세스를 다시 시작한다는 개념을 새 컨테이너를 파괴하고 다시 작성하는 것으로 바꿉니다.

컨테이너에 손실 될 수없는 파일이 포함되어 있으면 볼륨을 사용해야합니다. 컨테이너 파일 시스템의 다른 내용은 일회용 또는 불변이어야합니다.

+0

글쎄요, 사실, 컨테이너를 다시 만들 때 기본 설정으로 되돌릴 수 있습니다. 나는 볼륨을 사용하고 있기 때문에 결국했다. 그러나 실행 패치의 일종으로 그렇게 할 방법이 있다면 더 궁금했다? –

+1

Docker는 실행중인 컨테이너에서 환경 변수를 수정하는 방법을 제공하지 않습니다. OS가 실행중인 프로세스에서 환경 변수를 수정하는 방법을 제공하지 않기 때문입니다. 당신은 파괴하고 재창조해야합니다. – BMitch

관련 문제