본문 바로가기

카테고리 없음

Docker (3)

 

Docker 볼륨

 

컨테이너 레이어에 기록된 데이터는 컨테이너가 삭제되면 삭제되기 때문에

이러한 문제를 해결하기 위해 볼륨을 구성한다.

즉, 볼륨은 컨테이너가 호스트에 데이터를 저장하는 기능이다.

 

1. volume  방식

리눅스에 파일이 아무것도 없다면 컨테이너에 있는 파일이 리눅스로 동기화된다.

리눅스에 파일이 있다면 컨테이너에 있는 파일이 덮어쓰기 되면서 동기화된다. (기존 컨테이너 파일 삭제)

 

2. bind mounts 방식

리눅스에 파일이 있던 없던 리눅스에 있는 파일로 동기화된다. (기존 컨테이너 파일 삭제)

 

위의 이유로 인해 bind mounts 방식보다는 volume 방식이 더 선호된다.

 

컨테이너(mynginx) 생성 후 볼륨(testvol)과 연결
볼륨의 index.html 파일을 'volume test'로 변경해주었다.

그렇게 되면 http://192.168.2.10:8080/로 접속하였을때  volume test가 나오는 것을 확인할 수 있다.

(볼륨의 파일을 변경했는데 컨테이너 파일까지 동기화된 모습을 확인)

 

MYSQL 볼륨 컨테이너 구성

mydb라는 이름의 mysql 컨테이너 생성

( ' \'는 줄바꿈의 의미가 있다)

docker2에서 docker1의 mysql에 접속한 모습이다.

그 후에 cisco라는 테이블을 만들고 데이터를 넣어보았다.

이후에 컨테이너를 삭제해도  mysqlvol이라는 볼륨에 cisco라는 테이블이 남아있기 때문에 다시 컨테이너를 만들고

mysqlvol에 연결해주면 cisco라는 테이블은 남아있다.

 

NFS

NFS : Network File System 으로서 NFS 서버에서 네트워크를 통해 자신의 저장소를 빌려주는 시스템

docker2에 NFS서버를 구축하고 docker1이 서버를 빌리는 시스템을 구현해보려고 한다.

1. docker2에 nfs-utils를 설치해주고 /nfsweb이라는 디렉터리 생성 후 index.html 파일도 생성해준다.

2. /etc/exports 파일을 아래와 같이 만들어준다.

3. nfs-server을 활성화시킨다. # systemctl enable nfs-server

4. docker1로 넘어가서 /web이라는 디렉터리를 생성하고 docker2의 /nfsweb에 마운트시킨다.

5. 컨테이너를 /web에 연결시켜 구동시키고 curl을 활용하여 마운트 결과를 확인한다.

-> /nfsweb/index.html이 마운트 된것을 확인할 수 있다.

 

번외) #docker volume prune -a (모든 볼륨 삭제)