6.3.파일 시스템 마운트를 사용하는 컨테이너 실행하기

바인드 마운트 * 호스트 컴퓨터 파일 시스템의 디렉터리를 컨테이너 파일 시스템의 디렉터리로 사용 * 호스트 컴퓨터에서 접근 가능한 파일 시스템(SSD 디스크, 고사용성 디스크 어레이, 분산 스토리지)이라면 무엇이든 컨테이너에서도 사용할 수 있다.

바인드 마운트를 사용한 컨테이너 실행

001)  source="$(pwd)/databases" && target='/data'
002)  echo $source
003) /Users/woogie/databases
004) 005)  mkdir ./databases
006) 007)  docker container run --mount type=bind,source=$source,target=$target -dp 8012:80 diamol/ch06-todo-list
008) 10d660c33baceb59e325c167717ff82104843e6c9021ec3910e423c70560fb82
009) 010)  curl http://localhost:8012
011) 
012) <!DOCTYPE html>
013) <html lang="en">
014)   <-- 생략 -->
015) </html>
016) 017)  ls ./databases
018) todo-list.db
  1. 001: 변수선언
  2. 007: 바인드 마운트를 적용해 컨테이너 실행
  3. 010: 8012번 포트로 요청을 보내면 애플리케이션이 시작되면서 데이터베이스 파일이 생성된다.
  4. 017: 컨테이너에서 생성한 파일

  5. 바인드 마운트는 양방향으로 동작한다. (컨테이너 <-> 호스트 컴퓨터)

  6. 바인드 마운트를 사용하면 호스트 컴퓨터 파일에 접근하기 위해 권한 상승이 필요하다.
  7. 그래서 Dockerfile 스크립트에서 USER 인스트럭션을 사용해 컨테이너에 관리자 권한을 부여한다
  8. 리눅스는 root
  9. 윈도는 ContainerAdministrator

호스트 컴퓨터의 디렉터리를 읽기 전용으로 컨테이너 실행

001)  source="$(pwd)/config" && target='/app/config'
002)  echo $source
003) /Users/woogie/Desktop/real/080258/ch06/exercises/todo-list/config
004) 005)  docker container run --name todo-configured -dp 8013:80 --mount type=bind,source=$source,target=$target,readonly diamol/ch06-todo-list
006)  
007)  curl http://localhost:8013
008) 
009) <!DOCTYPE html>
010) <html lang="en">
011)   <-- 생략 -->
012) </html>
013) 
014)  docker container logs todo-configured
015) 
016) ...
017) dbug: Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets[6]
018)       Connection id "0HMRLBRKNB2MK" received FIN.
019) dbug: Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets[7]
020)       Connection id "0HMRLBRKNB2MK" sending FIN because: "The client closed the connection."
021) ...

links

social