인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

쏭쏭님의 프로필 이미지
쏭쏭

작성한 질문수

Jenkins를 이용한 CI/CD Pipeline 구축

SSH Server 설치

ssh-server 실행 시 추가된 옵션 문의드립니다

작성

·

714

0

안녕하세요.

ssh-server 실행할 때 옵션추가된 명령어로 실행하도록 문의 답변 주셨는데요, 추가된 옵션에 대해 설명을 해주실수 있을까요?

docker run --privileged --name docker-server -itd -p 10022:22 -p 8081:8080 -e container=docker  -v /sys/fs/cgroup:/sys/fs/cgroup:rw --cgroupns=host edowon0623/docker-server:m1 /usr/sbin/init

(볼륨에 :rw가 추가되었고, --cgroupns=host 이 추가된 것으로 보입니다)

[질문]

  1. /sys/fs/cgroup 를 volume으로 설정하는 이유

-v /sys/fs/cgroup:/sys/fs/cgroup:rw

 

  1. --cgroupns = host 를 추가해야하는 이유

(이하 문서 내용 발췌)
--cgroupns (API 1.41+)
cgroup namespace to use (host|private)
- 'host': Run the container in the Docker host's cgroup namespace
- 'private': Run the container in its own private cgroup namespace
- '': Use the cgroup namespace as configured by the default-cgroupns-mode option on the daemon (default)

감사합니다.

답변 1

0

Dowon Lee님의 프로필 이미지
Dowon Lee
지식공유자

안녕하세요, 이도원입니다.

Apple silicon chip에서 컨테이너 방식으로 sshd를 기동하는 과정에서 기존에 생성했던 도커 이미지가 정상작동되지 않았습니다. 원인은 D-Bus 실행에 문제가 생겼다는 오류였었는데, 정확한 오류 메시지를 알려주지 않는 상태여서 리소스 제어 문제라고 생각하고, 이를 해결하기 위해서 별도의 이미지를 생성해야만 했습니다. 따라서 위와 같은 옵션을 추가로 사용하여 Apple silicon chip용 이미지를 생성했었습니다.

1. /sys/fs/cgroup 를 volume으로 설정하는 이유

컨테이너에서 사용되는 리소스들을 제어하기 위해 cgroupfs driver가 사용되었는데, cgroupfs는 /sys/fs/cgroup 디렉토리에 파일 또는 디렉토리 형태로 마운트됩니다. 컨테이너 내부에서 해당 디렉토리가 정상적으로 제어되지 않는 문제로 인해 sshd의 실행에 실패하는 경우가 있었기 때문에, Docker Host의 특정 디렉토리(/sys/fs/cgroup)로 바인드 마운트하여 사용하였습니다. rw 옵선은 Docker host에 리소스 관련 정보를 수정할 수 있도록 하기 위해서 추가했습니다.

2. --cgroupns = host 를 추가해야하는 이유

컨테이너 프로세스를 격리하기 위한 방법으로, Linux Namespace로 각각 컨테이너에서 실행된 프로세스가 시스템에 대해서 독립될 수 있도록 구현할 수 있으며, Linux의 cgroups를 사용해 각각의 컨테이너(프로세스)가 사용할 수 있는 시스템 리소스(CPU, 메모리, network bandwidth)를 제한해 주는 것으로 알고 있습니다. namespace와 cgroups으로 리소스 사용을 공유하거나 격리되어 사용할 수 있는데, host 방식으로 Docker 호스트의 cgorup namespace를 지정하여 공유하여 사용하였습니다.

추가 질문 사항 있으시면 다시 글 남겨 주세요.

감사합니다.

와.. 이걸로 해결했습니다. 감사합니다!

쏭쏭님의 프로필 이미지
쏭쏭

작성한 질문수

질문하기