docker 의 Container 는 host ( 로컬콘솔) 의 cgroup 에 따라가는터라
host커널의 systemctl 을 사용하기가 기본적으로는 쉽지가 않아서 커스텀이 필요함.
systemctl 사용가능하도록 패키징된 git 버전을 쓰는게 편하고..
Container 안에서 nfs client 세팅하고 외부의 NFS mount 하는것도 쉽지가 않음
보통 docker run 으로 이미지 생성 시 -v 옵션으로 host에 기 마운트된 NFS Mountpoint 를 그냥 적재시키는 방법을 사용했습니다.
참고로 오래된 예전 자료 정리한거라서.. 더 좋은 방법 있으면 알려주세요 ㅎㅎ
NFS 마운트하기
1) DOCKER HOST 에서 /mnt 라는 마운트포인트로 외부 NFS 마운트.
( 리모트 NFS 마운트를 위해서는 RPCBIND 실행을 위해
클라이언트도 nfs-util 패키지를 설치해 주어야 함.. 설치만.. 안그러면 알수없는 타입 뜰겁니다. )
[root@docker ~]# mount -o nolock 192.168.0.10:/nfs_data /mnt
192.168.0.10:/nfs_data 6.7G 1.7G 5.1G 25% /mnt // df -h 로 마운트 확인
2) Container 생성 시 -v 옵션으로 HOST 의 NFS Mountpoint 를 같이 적재 하기
# docker run -i -t --name centos_nfs -v /mnt 4dd69d0e6123
run : container 만들기
-i : interective
-t : tty
--name : 컨테이너 이름지정
[root@aec58ea41a6c /]# df -h
Filesystem Size Used Avail Use% Mounted on
overlay 13G 2.2G 11G 18% /
tmpfs 1000M 0 1000M 0% /dev
tmpfs 1000M 0 1000M 0% /sys/fs/cgroup
/dev/sda3 13G 2.2G 11G 18% /mnt
shm 64M 0 64M 0% /dev/shm
tmpfs 1000M 0 1000M 0% /proc/acpi
tmpfs 1000M 0 1000M 0% /proc/scsi
tmpfs 1000M 0 1000M 0% /sys/firmware
이 방법의 문제는? -v 옵션으로 적재한 마운트포인트의 추적이 어렵다는 것인데
( #docker volume ls 명령어로 보이지가 않음 )
관리를 위해 Volume name 을 지정해서 운용하면 됩니다.
#docker volume NFS
[root@docker /]# docker volume ls
DRIVER VOLUME NAME
local NFS
#docker run -i -t --name "test3" -v NFS:/mnt 4dd69d0e6123
Localhost의 /mnt 를 마운트하는 컨테이너를 생성 하라는 커맨드입니다.