해뜨기전에자자

container 간단히 본문

개발/linux & tools

container 간단히

조앙'ㅁ' 2019. 1. 17. 10:25

~적당히 알고있던 터라 약간 dive 해본다~


https://jvns.ca/blog/2016/10/10/what-even-is-a-container/


container는 linux kernel의 새로운 기능인 namespace, cgroups, seccomp-bpf 라는 기능으로 독립적인 프로세스를 실행할 수 있도록 한다.

실제로 우리가 사용하게 되는 환경은 vm 같아 보이지만 vm 은 아님. 그냥 리눅스 커널에 있는 process임


## namespace: isolated resources

격리된 환경을 제공하는 lightweight 가상화 기술

docker나 LXC가 모두 namespace 기반으로 만들어짐

hypervisor는 하드웨어 리소스를 가상화하는데 비해, namespace는 동일한 OS, kernel에서 동작하지만 고립된 사용환경만 제공된다는 점에서 다름

### 6 종류의 namespace

- UTC namespace: hostname 변경, 분할

- IPC namespace: inter-process communication 프로세스간 통신 격리

- PID namespace: pid 분할 관리

- NS namespace: filesystem mount지점 분할 격리

- NET namespace: network interface iptables등 network 리소스와 관련된 정보 분할

- USER namespace: user, group ID 분할 격리 


음 왠만하면 해볼려고했는데 c라서 그냥 눈으로만 훑었다. 하하 -싫어-


참조: 

http://jake.dothome.co.kr/namespace/

https://blog.yadutaf.fr/2013/12/22/introduction-to-linux-namespaces-part-1-uts/

http://bluese05.tistory.com/11?category=561065


network namespace는 전에 openstack 설치할때 해본거같다.. ㅜㅜ 기억 잘안남..

암튼 아래 보고 츄라이해볼수있다

https://www.joinc.co.kr/w/man/12/NetworkNamespace



## cgroup(control group): resource limits

프로세스들의 자원 사용(cpu, mem, disk io, network)을 제한하고 격리시키는 리눅스 커널 기능

kernfs, 방화벽, unified hierarchy 등의 기능이 추가되고있음

컨테이너, 컨테이너 서비스들(docker, LXC, kubernetes mesos, mesosphere), systemd도 쓰고 있음.

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/resource_management_guide/ch-using_control_groups


### 설치만 해보자

https://www.server-world.info/en/note?os=CentOS_7&p=cgroups&f=1

```

sudo yum -y install libcgroup libcgroup-tools

sudo systemctl start cgconfig 

sudo systemctl enable cgconfig


ll /sys/fs/cgroup 

lscgroup 

systemd-cgls 

```



## seccomp-bfp: security

프로세스가 호출할 수 있는 시스템콜 제한하는거. 

https://en.wikipedia.org/wiki/Seccomp




보다가 추가로 알게된 거


## chroot

현재 실행중인 process, child process group에서 root 디렉토리를 변경함. since 1981

참조: https://steemit.com/kr/@mishana/1-chroot

'개발 > linux & tools' 카테고리의 다른 글

k8s docker환경에서의 cpu request, limit  (0) 2019.10.04
perf sched for Linux CPU scheduler analysis  (0) 2019.04.03
systemd initd  (0) 2018.11.25
haproxy vs nginx?  (0) 2018.05.16
route private network  (0) 2018.03.20