2014-10-22 3 views
2

Docker에 익숙하며 Dockerfile을 작성하는 데 문제가 있습니다. 것은 내가 쉘 명령을 실행하고 싶은 jonas523이라는 사용자를 만들었다는 것이다. 그래서이 Dockerfile에 넣었고 신선한 용기에 들어가면 명령이 내가 작성한 새 사용자와 함께 사용되지 않는다는 것을 알았습니다.Docker가 USER로 실행하지 않습니다.

나는 Docker가 제공 한 "USER"지시를 이해하지 못했다고 생각합니다.

RUN source ~/.bash_profile

RUN \ echo "JAVA_HOME=/usr/java/jdk1.7.0_45/bin" >> /home/jonas523/.bash_profile \ && echo "ANT_HOME=/opt/apache-ant-1.8.2/bin" >> /home/jonas523/.bash_profile \ && echo "export JAVA_HOME" >> /home/jonas523/.bash_profile \ && echo "export ANT_HOME" >> /home/jonas523/.bash_profile \ && echo "PATH=$PATH:$HOME/bin:$JAVA_HOME:$ANT_HOME" >> /home/jonas523/.bash_profile \ && echo "export PATH" >> /home/jonas523/.bash_profile

USER jonas523

사람은 "USER"명령의 사용에 대해 말해 수 없습니다. "RUN"및 "CMD"지침의 차이점은 무엇입니까?

감사합니다. docs에서

답변

4

:

사용자 정의 USER 명령은 이미지를 실행하고 다음 RUN 지침에 대한 때 사용할 사용자 이름 또는 UID를 설정합니다.

하지만 사용자를 생성하지는 않습니다. 이미 완료 했어야합니다 (예 : RUN 이전 인 경우)

"RUN"과 "CMD"지침의 차이점은 무엇입니까?

RUN 점진적으로 말하자면, 필요 의존성 (예컨대 RUN apt-get install ....)을 설치하는 고정 표시기 이미지 "를 레이어"입니다. Dockerfile에 숫자 RUN을 가질 수 있으며 이미지를 빌드 할 때 모두 실행됩니다 (단순화를 위해 빌드 캐시는 무시함).

CMD 지침 docker build ... 동안 실행하지 마세요, 오히려 당신이 컨테이너가 docker run ...에서 실행하려는 명령 당신은 단지 Dockerfile 1 개 CMD 명령을 가질 수를 지정합니다.

+1

지금은 분명합니다. 그러나 "CMD"라는 명령어를 사용할 때 어떤 사용자가 사용되는지 어떻게 알 수 있습니까? 예를 들면 다음과 같습니다. "USER jonas523" "무엇이든 실행" 나는 사용자 jonas523과 (과) 무슨 관계가 있다고 확신합니까? 그 맞습니까 ? – MadJlzz

관련 문제