Docker 컨테이너에서 Docker 컨테이너를 시작할 때 마운트하는 방법

4144 단어 Docker

개요


공유 호스트 Docker daemon의 Docker 컨테이너(컨테이너 1)에서 Docker 컨테이너(컨테이너 2)를 시작할 때 컨테이너 1의 디렉토리를 컨테이너 2에 설치하는 방법 소개
원래 그런 용도가 있나요?예를 들어, 컨테이너 기반 CI 환경에서 테스트용 컨테이너에 소스 관리용 컨테이너의 리소스를 로드하고 테스트하는 경우

결론


호스트 Docker daemon을 마운트하는 컨테이너 1의 디렉토리를 컨테이너 2로 마운트할 때 지정한 파일 경로는 호스트가 보는 파일 경로여야 합니다.

인증 코드


이 검증은 용기에서 새 용기를 시작합니다
환영 연회상태, 어느 세계에 있는지 몰라
따라서 아래의 명령으로 집행 환경을 표시하기 위해[コンテナ1] 등으로 표시한다

  • 제작 용기 1, 용기 1로 docker 설치
    
    # [ホスト] コンテナ1を作成
    > docker run --rm -it --name container1 -v /var/run/docker.sock:/var/run/docker.sock:ro ubuntu:14.04 /bin/bash
    
    # [コンテナ1] dockerをインストール
    > apt-get update && apt-get install -y docker.io
    
    # [コンテナ1] 確認用のファイルを作成し、作成されたファイルを確認
    > mkdir /tmp/mount_test && touch /tmp/mount_test/test1.txt && touch /tmp/mount_test/test2.txt && touch /tmp/mount_test/test3.txt && ls -la /tmp/mount_test
    
    

  • 용기 1에 용기 1 /tmp/mount_test 을 마운트하는 용기 2 만들기 (실패 예시)
    # [コンテナ1] コンテナ2を作成
    > docker run --rm -it --name container2 -v /tmp/mount_test:/tmp/mount_test ubuntu:14.04 /bin/bash
    

  • 컨테이너 2에 마운트 확인/tmp/mount_test서류가 없는 걸 확인할 수 있어요.
    왜 없지!?호스트의 Docker daemon을 마운트 중이므로 마운트할 때 호스트의 파일 경로가 표시됩니다.
    따라서 호스트에 /tmp/mount_test가 없으므로 마운트 대상이 비어 있음
    # [コンテナ2] /tmp/mount_testを確認
    > ls -la /tmp/mount_test
    
      drwxr-xr-x 2 root root   40 Sep 15 06:15 .
      drwxrwxrwt 1 root root 4096 Sep 15 06:15 ..
    

  • 다시 정신을 차리고 다음에 호스트에서 본 용기 1의 파일 경로로 마운트하세요
    파일 경로 사용docker inspect 명령 획득
    요점 은 용기화 시 만들어진 차분 을 diff 속 에서 생성하는 것 이다
    상기 코드/tmp/mount_test를 통해 용기 이미지를 디프에 차분으로 저장
    # [コンテナ2] コンテナ2から抜けます
    > exit
    
    # [コンテナ1] ホストから見たコンテナ1のファイルパスを取得する
    > docker inspect --format='{{.GraphDriver.Data.UpperDir}}' container1
    
    # [コンテナ1] テナント2を作成
    # 上記のコマンドで得られたファイルパスを以下の<xxx>に置き換えてください
    > docker run --rm -it --name container2 -v <xxx>/tmp/mount_test:/tmp/mount_test ubuntu:14.04 /bin/bash
    

  • 컨테이너 2에 마운트 확인/tmp/mount_test컨테이너 1의 파일이 마운트되었는지 확인할 수 있습니다.
    # [コンテナ2] /tmp/mount_testを確認
    > ls -la /tmp/mount_test
    
      drwxr-xr-x 2 root root 4096 Sep 15 06:00 .
      drwxrwxrwt 1 root root 4096 Sep 15 08:48 ..
      -rw-r--r-- 1 root root    0 Sep 15 06:00 test1.txt
      -rw-r--r-- 1 root root    0 Sep 15 06:00 test2.txt
      -rw-r--r-- 1 root root    0 Sep 15 06:00 test3.txt
    
  • 좋은 웹페이지 즐겨찾기