2017-11-03 1 views
0

에 디렉토리를 호스팅 :도커 볼륨 점은 내가 Dockerfile 다음 한 Dockerfile

FROM jboss/wildfly 
USER jboss 
RUN mkdir -p /opt/jboss/wildfly/standalone/log 
VOLUME /opt/jboss/wildfly/standalone/log 
CMD /bin/bash 
# CMD true 

이 결과 이미지는 docker run -ti --name=data_volume data/volume으로 시작됩니다. 다음 Dockerfile

FROM jboss/wildfly 
RUN sed -i 's|<file relative-to="jboss.server.log.dir" 
    path="server.log"/>|\<file relative-to="jboss.server.log.dir" 
    path="\${jboss.host.name}-server.log"/\>|' 
    /opt/jboss/wildfly/standalone/configuration/standalone.xml 

로깅 디렉토리에에 "서버 이름"-server.log를 기록 할 결과 제이 보스의 기록을 무시합니다. docker run -ti --name=wild-01 --volumes-from=data_volume my/wildflydocker run -ti --name=wild-02 --volumes-from=data_volume my/wildfly으로 결과 이미지를 시작할 때 data_colume 컨테이너에 두 개의 로그 파일이 있습니다. 너무 좋아.

볼륨을 호스트의 디렉토리로 지정하고 싶습니다./var/log/wildfly.

사전에

답변

0

볼륨을 호스트의 디렉토리로 지정하고 싶습니다./var/log/wildfly.

제거하여 Dockerfile에서 모든 볼륨 언급 ... 코드에서 다음

docker run -d -v /var/log/wildfly:/var/log/wildfly your-image-name 

그냥 컨테이너를 시작 정상적인 경로를

/var/log/wildfly 

귀하의 구문을 참조하여 컨테이너를 시작 docker run -ti을 사용하면 컨테이너 셸을 대화 형으로 만드는 반면 -d은 정상 모드로 백그라운드에서 실행중인 데몬으로 회전시킵니다.

1

내부 dockerfiles을 data/volume

고마워요을 실행할 때 나는 -v 매개 변수 Dockerfiles과하지에이를 수있는 방법은 /var/lib/docker/volumes에 볼륨을 정의만을 할 수 있습니다. 이는 모든 호스트가 다른 호스트와 다를 수 있기 때문입니다.

Docker는 모든 도커 관련 데이터가 저장되는 "도커 영역"으로 /var/lib/docker을 사용합니다. 설치시 생성되는 모든 호스트에서 보장되는 디렉토리입니다.

dockerfile에서 볼륨을 가리키는 경우 /home/mbieren/docker_vol으로 가정하면 이미지가 다른 호스트에서 실행될 때 해당 디렉토리가 존재하지 않고 사용자가 생성 권한이 충분하지 않기 때문에 여러 오류가 발생합니다 그것.

Docker는 dockerfile에서 사용자 정의 마운트 경로를 설정하지 못하게하여이 문제를 해결합니다.