2017-02-02 3 views
2

Docker 컨테이너를 로컬로 실행하여 상태를 해결하고 있습니다. 항상 RUN/ENTRYPOINT을 실행하고 싶지는 않습니다. 자주 실행 컨테이너에 들어가서 몇 가지 작업을 수행 한 다음 RUN/ENTRYPOINT을 실행하고 싶습니다.Dockerfile에서 명령 기록을 설정하는 방법

위로 키를 누르기 만하면 다음에 RUN/ENTRYPOINT을 사용할 수있는 것이 편리합니다. 그래서 Dockerfilehistory -s ...으로 기록을 수정할 수 있다면 좋을 것이라고 생각했습니다. 그런 식으로, 내가 docker run bash이 되 자마자 나는 위로 올릴 수 있고 RUN/ENTRYPOINT을 사용할 수 있습니다.

/bin/sh: 1: history: not found 

Dockerfile에 bash는 역사를 설정하는 방법이 있나요 : 나는 고정 표시기 파일에 넣고하면

, 나는이 오류가있어?

답변

1

RUN 명령이 /bin/sh에서 실행되고 history 명령을 사용할 수 없기 때문에 오류가 발생합니다.

이 작업을하려면 빌드 중에 대화식 bash 쉘을 실행해야합니다. 그러면 사용자의 히스토리 항목이 저장됩니다. 가장 최근의 (아마 만) 항목으로 foobar로 기록 파일 뒤에 남겨 두어야

RUN bash -ic 'history -s foobar' 

.

ioctl에 대한 빌드 중 오류가 발생합니다. 인터랙티브 배쉬는 터미널을 찾고 예상 할 수 없으므로 정상입니다. 그러나 여전히 잘 작동해야합니다.

bash: cannot set terminal process group (1): Inappropriate ioctl for device
bash: no job control in this shell

이렇게하면 명령을 실행하는 사용자에 대해 저장됩니다. 이미지가 USER 문을 사용하여 루트가 아닌 사용자로 전환되면이 이미지를 USER 행 다음에 넣어야 이미지가 실행되는 사용자에 저장됩니다.

+0

답변을 주셔서 감사 드리며, 이것을 시도했습니다. 그리고 내가 눌렀을 때 역사가 없었습니다. 이것은'history'의 출력이 공백이었던 것입니다. –

+0

@DanielKaplan 어떤 도커 파일을 사용하고 있습니까? 나는'FROM 우분투 : latest'와 그 하나의 RUN 명령으로 단순한 도커 파일을 만든다. 'docker run -it myimage bash'를 실행하고 내 테스트에서 역사가 작동했다. –

+0

내 문제는'RUN bash -ic 'history -s foobar &'가 있었기 때문에 나는 & 'RUN bash -ic'history -s foobar \ & '를 실행하면 & 도망쳐 야한다. 감사합니다 –

관련 문제