일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Spring Boot
- 백트래킹
- 카프카
- 쿠버네티스
- Docker
- Elasticsearch
- VPC
- 인천여행
- aws
- Kafka
- gcp
- JPA
- 스프링
- 클라우드 컴퓨팅
- 백준
- 스프링 부트
- 오일러프로젝트
- Apache Kafka
- springboot
- 프로그래밍문제
- 클라우드
- 알고리즘
- 월미도
- 로드밸런서
- 자료구조
- Spring
- DFS
- Spring Data JPA
- 코드업
- 스프링부트
- Today
- Total
GW LABS
SElinux 보안정책과 Docker volume 본문
SElinux를 사용하고 있는 리눅스에서 Docker를 사용할 때에는 SElinux의 보안정책에 주의해야한다. CentOS에서 Docker를 설치하고 사용하고자 하는 컨테이너에 volume을 마운트하면 컨테이너가 마운트한 경로에 접근이 안되는 경우가 발생할 수 있기 때문이다. 왜 그럴까? 이유는 Docker 호스트가 컨테이너에 대한 SElinux의 정책을 알 수 없기 때문이다.
# docker run -v /var/db:/data1 some_image_name
따라서 SElinux를 사용하고 있는 리눅스에서는 위의 명령어와 같은 방식으로 Docker 컨테이너를 생성할 때 /var/db 경로는 컨테이너에 쓸 수 없다. 컨테이너 내부에서 접근하려고 해도 호스트의 SElinux 정책으로 접근권한이 없다는 메세지가 발생하게 된다. 문제를 해결하려면 마운트하고자 하는 폴더인 /var/db의 SElinux 보안정책을 모든 컨테이너가 읽고 쓸 수 있도록 변경해줘야 한다. 이는 chcon 명령어로 가능하다.
# chcon -Rt svirt_sandbox_file_t /var/db
위의 명령어처럼 해당 경로의 SElinux 보안정책을 변경하면 정상적으로 컨테이너에 마운트시킬 수 있다. 특이한 점은 NAS 같이 대부분의 읽기/쓰기 권한이 풀려있는 스토리지를 컨테이너 내부에 마운트시킬 때에는 문제가 없었다. (호스트 서버에 NAS 마운트 > 컨테이너에 NAS 마운트) NAS를 마운트하고 운영할 때 발생한 문제들은 다른 포스팅에서 정리해보고자 한다.
Reference
- www.projectatomic.io/blog/2015/06/using-volumes-with-docker-can-cause-problems-with-selinux/
'Infrastructure > Docker' 카테고리의 다른 글
Docker 이미지 수동 저장/배포 (0) | 2019.11.11 |
---|