2017-09-30 7 views
0

pydocker 라이브러리를 사용하여 원격으로 도커 컨테이너를 실행 중입니다. 실행중인 컨테이너에 로컬 디렉토리를 마운트해야합니다. 설명서에는 API를 사용하여 볼륨을 만드는 방법이 나와 있습니다. 그러나 컨테이너를 만드는 동안 볼륨을 사용하는 방법을 파악할 수 없습니다. 내가 https://docker-py.readthedocs.io/en/stable/api.html#module-docker.api.container원격 볼륨을 사용하는 Py-Docker create_container

+0

https://docs.docker.com/engine/admin/volumes/volumes/#initial -set-up이 페이지는 docker cli를 사용하여 가능하다는 것을 설명합니다. –

답변

0

에서 문서를 다음입니다

간단한 대답은 당신이 할 수 없다는 것입니다. Docker는 시스템의 디렉토리를 원격 서버에 마운트하지 않습니다. 컴퓨터에서 데이터를 사용할 수 있어야합니다.

다른 방법은이 이미지를 이미지 자체에 넣는 것입니다. 그런 다음 로컬에서 빌드를 시작하고 로컬 디렉토리에 빌드 컨텍스트를 설정할 수 있습니다. 이렇게하면 전체 디렉토리 컨텍스트가 원격도 커 서버로 전송되고 COPY/ADD를 사용하여 Dockerfile 내의 이미지로 복사합니다.

이렇게하면 공유 폴더가 호스트의 VM에 삽입되므로 VM에서 작동합니다 호스트 폴더

+0

sshfs를 사용하여 원격 디렉토리를 마운트하는 데 도움이되는 볼륨 드라이버를 사용할 수있는 옵션이 있습니다. 나는 그것을 이해하려고 노력하고있다. 그러나 그것은 나에게 약간의 시간이 걸리게한다. (다른 드라이버 : https://docs.docker.com/engine/extend/legacy_plugins/#volume-plugins) –

+0

이러한 플러그인은 서버에 먼저 설치해야하며 클라이언트에서 직접 수행 할 수 없습니다 –

0

이 나를 위해 일 팔로우 VM에 고정 표시기 원격 볼륨 마운트 작업 같이 보인다 :

volume = cli.create_volume(name='<volume-name>', 
          driver='vieux/sshfs', 
          driver_opts={'sshcmd': '<[email protected]>:<path>', 'password':'<password>'}, 
          labels={}) 

container = cli.create_container(
      container_url, 
      '<run-cmd>', 
      detach=True,  
      volumes=['<mnt_dir>'], 
      host_config=self.dclient.create_host_config(
          binds={ \  
           '<volume-name>': {\ 
            'bind': '<mnt_dir>', \ 
            'mode': 'ro', \ 
            'src': '<volume>', \ 
            'volume-driver': 'vieux/sshfs', \ 
            'target' :'/app', \ 
            'volume-opt': { \ 
             'sshcmd': '[email protected]', \ 
             'password': <passwd> \ 
            } \    
           } \    
          },    
          port_bindings=port_map))