programing

도커 컨테이너의 디렉토리를 호스트에 마운트하는 방법

showcode 2023. 3. 31. 23:00
반응형

도커 컨테이너의 디렉토리를 호스트에 마운트하는 방법

도커 컨테이너에 호스트 디렉토리를 마운트하는 것은 매우 간단합니다.

하지만 다른 방법이 필요해

WordPress 플러그인 개발 환경으로서 도커 컨테이너를 사용하고 있습니다.이 도커 컨테이너에는 WordPress(MySQL, Apache, PHP 및 WordPress)를 실행하는 데 필요한 모든 것이 들어 있습니다.개발 중에 플러그인을 테스트할 수 있도록 호스트에서 도커 컨테이너에 플러그인 src 폴더를 마운트합니다.

디버깅을 위해 호스트에서 실행 중인 IDE가 도커 컨테이너의 WordPress 파일에 대한 읽기 액세스 권한을 가지고 있으면 유용합니다.

나는 그 문제를 해결할 두 가지 방법을 찾았지만 둘 다 매우 해박한 것 같다.

  1. WordPress 파일 경로를 사용하여 도커 컨테이너에 데이터 볼륨 추가

    도커 실행... -v /usr / share / wordpress / ...

    Docker는 이 디렉토리를 호스트 /var/lib/docker/vfs/dir의 경로에 추가합니다...그러나 도커 검사를 사용하여 실제 경로를 조회해야 하며 파일을 보려면 루트 액세스 권한이 필요합니다.

  2. 호스트 디렉토리를 도커 컨테이너에 마운트하고 컨테이너의 WordPress 파일을 마운트된 호스트 디렉토리에 복사합니다.심볼링크가 작동하지 않는 것 같습니다.

더 좋은 방법이 있을까요?파일을 복사하거나 액세스 권한을 변경하지 않고?

감사해요!

WordPress 파일을 마운트된 폴더에 복사하는 것이 해결책이었습니다.

컨테이너에 있는 파일을 원래 폴더에서 마운트된 폴더로 이동하고 심볼 링크를 사용하여 원래 폴더로 다시 연결합니다.

중요한 점은 컨테이너는 컨테이너 내의 심볼릭 링크를 따를 수 있지만 호스트는 사용할 수 없다는 것입니다.따라서 호스트가 컨테이너에서 심볼릭 링크를 따라갈 수 없기 때문에 원래 폴더에서 마운트된 폴더로 심볼릭 링크를 사용하는 것만으로는 작동하지 않습니다.

sbm을 사용하여 다음과 같이 svendowide samba 컨테이너와 파일을 공유할 수 있습니다.

docker run --rm -v $(which docker):/docker -v /var/run/docker.sock:/docker.sock svendowideit/samba <container name>

파일 시스템 경로 대신 볼륨을 사용하면 가능합니다.이미 존재하지 않는 경우 자동으로 생성됩니다.

docker run -d -v usr_share_wordpress:/usr/share/wordpress --name your_container ... image

컨테이너를 중지하거나 제거하면 볼륨이 컨테이너의 파일과 함께 파일 시스템에 저장됩니다.

busybox 이미지로 your_container의 라이프 타임 동안 볼륨 콘텐츠를 검사할 수 있습니다.예를 들어 다음과 같습니다.

docker run -it --rm --volumes-from your_container busybox sh

★★★★★★★★★ 후your_container볼륨을 확인할 수 있는 방법은 다음과 같습니다.

docker run -it --rm -v usr_share_wordpress:/usr/share/wordpress busybox sh

with륨 with with with with with with with with with 로 볼륨을 리스트 하다docker volume ls

컨테이너에서 호스트로 파일을 노출시켜야 하는 비슷한 필요성이 있었습니다.오늘부로 이것에 대해 미해결의 문제가 있다.다음 회피책 중 하나,binds는 꽤 깔끔합니다 때 합니다.컨테이너가 가동되고 있을 때 동작합니다.

container_root=$(docker inspect --format {{.State.Pid}} "$container_name")/root
sudo bindfs --map=root/"$USER" "$container_root/$app_folder" "$host_folder"

PS: 이것이 실가동에는 도움이 될지 모르겠지만, 개발 시나리오에서는 효과가 있을 것입니다.

안 돼: 왜 지 、 why 、 why 、 why 、 why 、 why 、 why 。docker run ... -v /usr/share/wordpress/:/usr/share/wordpress/usr/share/wordpress/도커: /usr/share/wordpress.이 방법으로 컨테이너의 다른 곳에 마운트할 수도 있습니다.newhost_path:container_path로 /my/new/path/usress를 합니다.docker run ... -v /usr/share/wordpress/:/my/new/path.

언급URL : https://stackoverflow.com/questions/28083920/how-to-mount-a-directory-in-the-docker-container-to-the-host

반응형