관리자

Cgroup:

- Control Group

- Process Group 단위로 Resource를 제한하고 격리시키는 Linux의 기능

- 주로 Containe의 Resource 제어를 위해 사용됨

 

Cgroup 제어:

1. cgroupfs

- cgroup를 제어하기 위한 File System

- Linux Kernel 내부에서 관리

- Cgroup 제어는 Directory의 생성, 삭제, File 변경에 의해 이루어짐.

- resource type별로 cgroupfs가 존재한다.

따라서 하나만 존재하지 않는다.

-  `/sys/fs/cgroup`: 기본 경로

`/sys/fs/cgroup/memory` : memory를 관리하는 cgroup

- systemd가  `/sys/fs/cgroup`에 cgroupfs를 mount함

 

 

2. systemd

- linux의 init process

- daemon process를 제어하는 역할

- cgroup 제어 기능은 systemd의 daemon process를 관리 기능의 일부.

daemon process의 resource를 제어하는데 사용됨.

 

 

 

참고한 자료

tech.kakao.com/2020/06/29/cgroup-driver/

 

'linux, docker, kubernetes' 카테고리의 다른 글

apt vs apt-get 비교(APT, dpkg)  (0) 2021.01.10
docker centos, ubuntu systemctl(service)  (0) 2021.01.10
linux remote ssh 접속  (0) 2021.01.10

Debian Linux는 dpkg라는 package managemnet system을 사용한다.(Debian Package Management)

package managemnet system은 사용자가 소스 코드로부터 빌드하지 않고도 쉽게 프로그램을 설치할 수 있도록 관리해주는 tool이다.

 

APT(Advanced Package Tool)는 command-line을 통해 package management system을 사용할 수 있는 tool이다.(apt가 아니다)

dpkg보다 high level tool로, 조금 더 편리하게 package를 관리할 수 있다.

 

그리고 apt-get은 APT를 더 편리하게 사용할 수 있는 tool이다.

apt-get 외에도 apt-cache, Aptitude 등이 있다.

 

apt-get은 install, update, clean를 위한 tool인 반면,

새로운 package를 찾는 데에는(search) apt-cache를 이용한다,

 

그렇다보니 자주 사용하는 명령어가 apt-get과 apt-cache에 흩어져있고,

apt-get과 apt-cache에서 기본적으로 제공하는 기능이 너무 많아

일반 사용자가 사용하기가 불편했다.

 

이것을 보완하는 명령어가 apt 이다

apt는 apt-get과 apt-cache에서 자주 사용되는 명령어를 모아둔 것 정도로 생각할 수 있다.

 

- 명령어 목록

apt command apt-get command function
apt install apt-get install Installs a package
apt remove apt-get remove Removes a package
apt purge apt-get purge Removes package with configuration
apt update apt-get update Refreshes repository index
apt upgrade apt-get upgrade Upgrades all upgradable packages
apt autoremove apt-get autoremove Removes unwanted packages
apt full-upgrade apt-get dist-upgrade Upgrades packages with auto-handling of dependencies
apt search apt-cache search Searches for the program
apt show apt-cache show Shows package details

 

한 가지 유의할 점은,

apt가 apt-get의 여러 명령어와 동일하지만, backward compatible한 것은 아니라는 것이다,

 

- apt에만 있는 명령어

new apt command function of the command
apt list Lists packages with criteria (installed, upgradable etc)
apt edit-sources Edits sources list

 

 

요약

- apt는 apt-get, apt-cache에서 자주 사용되는 명령어를 모아둔 command line package management tool이다.

- apt> apt-get/apt-cache > APT > dpkg 순으로 user friendly하다.

- 대체로 apt만 알면 충분하다.

 

* 아래 글을 읽고 정리한 글입니다,

itsfoss.com/apt-vs-apt-get-difference/

 

Difference Between apt and apt-get Explained - It's FOSS

Explaining how apt command is similar yet different than apt-get and why you should be using apt instead of apt-get.

itsfoss.com

 

'linux, docker, kubernetes' 카테고리의 다른 글

Cgroup  (0) 2021.01.15
docker centos, ubuntu systemctl(service)  (0) 2021.01.10
linux remote ssh 접속  (0) 2021.01.10

centos docker container에서는 기본적으로 systemctl을 사용할 수 없다.

docker hub의 official centos image에 따르면, systemd가 포함은 되어있지만 default로 inactive하다.(centos:7 부터)

(systemctl은 systemd를 관리하는 명령어이다.)

 

hub.docker.com/_/centos/#Systemd_integration

systemd를 사용하기 위해서는 추가 작업이 필요하다.

해결방법

  1. systemd를 사용할 수 있는 base 이미지 만들기

    FROM centos:7
    ENV container docker
    RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \
        systemd-tmpfiles-setup.service ] || rm -f $i; done); \
        rm -f /lib/systemd/system/multi-user.target.wants/*;\
        rm -f /etc/systemd/system/*.wants/*;\
        rm -f /lib/systemd/system/local-fs.target.wants/*; \
        rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
        rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
        rm -f /lib/systemd/system/basic.target.wants/*;\
        rm -f /lib/systemd/system/anaconda.target.wants/*;
    VOLUME [ "/sys/fs/cgroup" ]
    CMD ["/usr/sbin/init"]
  2. 위에서 만든 base 이미지를 바탕으로 이미지를 생성한다.
    ex)

    FROM local/c7-systemd
    RUN yum -y install httpd; yum clean all; systemctl enable httpd.service
    EXPOSE 80
    CMD ["/usr/sbin/init"]
  1. docker run에서 cgroups mount

    $ docker run -ti -v /sys/fs/cgroup:/sys/fs/cgroup:ro -p 80:80 <image name:tag>
    • ubuntu를 사용한다면 -v /tmp/$(mktemp -d):/run도 cgroup과 함께 추가해준다.

 

부가 설명

  • systemd는 CAP_SYS_ADMIN capability가 필요하지만 docker의 non previlieged container는 보안 문제로 CAP_SYS_ADMIN capability가 없다.
    하지만 previleged container는 비권장 사항이다.

  • 또한, systemd는 cgroup 파일을 필요로하니, –v /sys/fs/cgroup:/sys/fs/cgroup:ro를 통해 read-only mode로 마운트한다.

  • systemd만을 사용하기 위해서 rm -rf <wants들>를 이용해서 삭제한다.

 

참고 링크

developers.redhat.com/blog/2014/05/05/running-systemd-within-docker-container/
unix.stackexchange.com/a/490783

'linux, docker, kubernetes' 카테고리의 다른 글

Cgroup  (0) 2021.01.15
apt vs apt-get 비교(APT, dpkg)  (0) 2021.01.10
linux remote ssh 접속  (0) 2021.01.10

remote server에 ssh로 접속하기 위해서는

openssh-server openssh-clients

가 필요하다

아래 명령어로 설치, 실행한다.

# yum 또는 apt-get
yum –y install openssh-server openssh-clients

systemctl sshd start

systemctl sshd enable

systemctl sshd status

'linux, docker, kubernetes' 카테고리의 다른 글

Cgroup  (0) 2021.01.15
apt vs apt-get 비교(APT, dpkg)  (0) 2021.01.10
docker centos, ubuntu systemctl(service)  (0) 2021.01.10

+ Recent posts