[Docker] Volumes 설정

컨테이너를 실행하면 컨테이너 내부에 데이터가 저장되어 관리되며 기본적으로 컨테이너가 제거되면 데이터가 모두 사라집니다. 파일이나 디렉토리를 volumes 설정을 통해 설정 파일과 데이터 등을 저장하여 사용합니다.

 

volumes 설정에는 크게 Volume과 Bind mount 두가지 방식이 존재하며 Bind mount 방식으로 설정해보겠습니다.

 

기본 설정

mariadb의 데이터를 계속 저장하여 관리할 수 있도록 data 디렉토리를 만들어 관리해봅시다.
data 디렉토리와 mariadb 데이터 디렉토리인 /var/lib/mysql 디렉토리를 ':'로 구분하여 volume을 설정합니다.

# cat docker-compose.yml
services:
  db:
    image: mariadb:10.4.25
    container_name: db-server
    environment:
      MARIADB_ROOT_PASSWORD: DbP@ssWord
    volumes:
      - ./data:/var/lib/mysql

 

mariadb 컨테이너 실행 시 자동으로 데이터를 생성하며 volume을 설정한 data 디렉토리에 데이터가 생성되었음을 확인할 수 있습니다.

# ls -al data/
total 140156
drwxr-xr-x 4  999 docker     4096 Oct  4 23:18 .
drwxr-xr-x 3 root root       4096 Oct  4 23:18 ..
-rw-rw---- 1  999 docker 17661952 Oct  4 23:18 aria_log.00000001
-rw-rw---- 1  999 docker       52 Oct  4 23:18 aria_log_control
-rw-rw---- 1  999 docker      930 Oct  4 23:18 ib_buffer_pool
-rw-rw---- 1  999 docker 50331648 Oct  4 23:18 ib_logfile0
-rw-rw---- 1  999 docker 50331648 Oct  4 23:18 ib_logfile1
-rw-rw---- 1  999 docker 12582912 Oct  4 23:18 ibdata1
-rw-rw---- 1  999 docker 12582912 Oct  4 23:18 ibtmp1
-rw-rw---- 1  999 docker        0 Oct  4 23:18 multi-master.info
drwx------ 2  999 docker     4096 Oct  4 23:18 mysql
-rw-r--r-- 1  999 docker       15 Oct  4 23:18 mysql_upgrade_info
drwx------ 2  999 docker     4096 Oct  4 23:18 performance_schema

 

디렉토리 뿐만 아니라 특정 파일을 설정할 수 있습니다.

mariadb 설정 파일을 volume 설정하여 컨테이너에 직접 들어가지 않고도 설정을 수정할 수 있습니다.

services:
  db:
    image: mariadb:10.4.25
    container_name: db-server
    environment:
      MARIADB_ROOT_PASSWORD: DbP@ssWord
    volumes:
      - ./data:/var/lib/mysql
      - ./conn.cnf:/etc/mysql/conf.d/conn.cnf

 

권한 설정

volumes 설정 뒤에 ro, rw 옵션을 추가하여 권한을 부여할 수 있습니다. (기본 설정은 rw 입니다)
기본 data 디렉토리를 삭제하고 ro 옵션을 추가한 후 다시 mariadb 컨테이너를 실행해봅니다.

volumes:
  - ./data:/var/lib/mysql:ro

 

컨테이너 실행 시 data 디렉토리에 대한 권한이 없기 때문에 데이터를 생성할 수 없게됩니다.

# ls -al data/
total 8
drwxr-xr-x 2 root root 4096 Oct  4 23:34 .
drwxr-xr-x 3 root root 4096 Oct  4 23:34 ..

 

권한 설정을 통해 컨테이너에서 파일을 추가, 수정하지 못하도록 제어할 수 있습니다. 상황에 따라 권한 설정을 부여하시기 바랍니다.

'Docker' 카테고리의 다른 글

[Docker] Syslog 서버 구축  (0) 2022.11.01
[Docker] Healthcheck 설정을 통한 컨테이너 상태 점검  (0) 2022.10.19
[Docker] Restart 설정  (0) 2022.09.20
[Docker] Container name 설정  (0) 2022.09.19
[Docker] compose 기본 사용법  (0) 2022.09.19

+ Recent posts