Docker storage driver를 overlay2로 사용하기

1. Environment
2. Symptoms
  • CentOS 7.4 이하 초기버전의 xfs 파일시스템에서는 gam 컨테이너의 Postgresql이 정상적으로 DB 생성이 되지 않는 이슈가 발생
  • 이에 스토리지 드라이버를 devicemapper로 변경하여 사용하였음
  • docker에서는 CentOS에서 overlay2를 권장
3. Solution
  • xfs 파일시스템에서 overlay2 스토리지 드라이브를 사용한다.
  • CentOS 7.4 이하버전 (ftype=0이 기본), CentOS 7.5 이상버전 (ftype=1이 기본)$ xfs_info /docker meta-data=/dev/sdb1 isize=512 agcount=4, agsize=1048512 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=4194048, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
  • xfs_info 명령어를 통해 ftype를 확인 한 후, ftype=0일경우 자료를 백업한 후 다시 포맷을 해야한다.
  • 이 명령어는 해당 디렉토리를 포맷하는 것으로 반드시 기존 자료는 백업 해 둔다.$ mkfs.xfs -n ftype=1 /dev/sdb1 $ mount /dev/sdb1 /docker
  • CentOS에서 overlay2 드라이브를 사용하기 위해서는 아래와 같은 옵션을 넣는다.
  • dm.basesize옵션은 overlay 드라이브에는 적용되지 않는다.
  • 따라서 MDRM 에서 사용하기 위해서는 아래와 같이 설정한다$ cat /etc/docker/daemon.json { "graph": "/docker", "storage-driver": "overlay2" }
  • gam 컨테이너를 실행한다.