docker Kernel

moon.kick·2025년 5월 2일

맞아, 맞는 말이야.

도커(Docker)를 제대로 쓰려면 리눅스 명령어를 어느 정도 알아야 돼.
왜냐면 도커는 기본적으로 리눅스 컨테이너 기술(Linux Containers, LXC) 기반이고,
컨테이너 안도 결국 리눅스 환경이라서, 다음 같은 작업을 하게 되거든:

  • docker exec로 컨테이너 안에 들어가서 → ls, cd, cat, vim 같은 명령어로 파일/폴더 관리
  • docker build할 때 → Dockerfile에서 RUN apt-get update, RUN mkdir 이런 리눅스 명령어 사용
  • 권한 문제 생기면 → chmod, chown 같은 것도 다뤄야 하고
  • 프로세스 관리도 → ps, top, kill 써야 하고
  • 로그 보려면 → cat, tail -f 같은 것도 써야 하고
  • 파일 복사나 이동할 때도 → cp, mv, rm, mkdir 이런 기본 명령어 써야 하고
  • 네트워크 확인할 때도 → ping, curl, netstat, ss 이런 거 필요해

요약
👉 도커 자체 명령어 (docker run, docker ps, docker exec, docker build, docker-compose up)만 쓰는 건 별로 어렵지 않은데,
👉 컨테이너 안을 다루거나 디버깅 하려면 리눅스 명령어를 좀 알아야 실력이 붙어.

좋아, 깔끔하게 정리해줄게!
"도커 쓸 때 진짜 많이 필요한 리눅스 명령어 리스트" 여기다 정리한다.
(도커 실무 + 컨테이너 다룰 때 기준으로 골랐어.)


도커 사용할 때 가장 많이 쓰는 리눅스 명령어 리스트

1. 파일/디렉토리 조작

  • ls : 현재 디렉토리 파일 목록 보기
  • cd : 디렉토리 이동
  • pwd : 현재 경로 확인
  • mkdir : 새 디렉토리 생성
  • touch : 새 파일 생성
  • cp : 파일/디렉토리 복사
  • mv : 파일/디렉토리 이동 (또는 이름 변경)
  • rm : 파일/디렉토리 삭제 (rm -rf 조심)

2. 파일 읽기/편집

  • cat 파일명 : 파일 내용 한번에 출력
  • less 파일명 : 파일을 페이지로 나눠서 보기 (q로 종료)
  • tail -f 파일명 : 파일 마지막 줄 계속 실시간 보기 (로그 확인할 때 필수)
  • vim 파일명 : 파일 수정 (편집기, 조작법은 따로 익혀야 함)

3. 패키지 설치/업데이트

(컨테이너 안 OS가 Ubuntu/Debian 계열이면)

  • apt-get update : 패키지 목록 업데이트
  • apt-get install 패키지명 : 새 프로그램 설치
  • apt-get remove 패키지명 : 프로그램 삭제

(Redhat/CentOS 계열이면 yum 명령어 사용)

4. 권한/사용자 관리

  • chmod : 파일/폴더 권한 변경
  • chown : 파일/폴더 소유자 변경
  • whoami : 현재 로그인한 사용자 확인

5. 프로세스 관리

  • ps aux : 현재 실행 중인 프로세스 목록 보기
  • top : 실시간 리소스/프로세스 모니터링
  • kill PID : 특정 프로세스 강제 종료
  • kill -9 PID : 강제 종료 (강력한 kill)

6. 네트워크 확인

  • ping 주소 : 네트워크 연결 확인
  • curl 주소 : 웹 서버 응답 확인 (API 테스트할 때 유용)
  • netstat -tuln 또는 ss -tuln : 포트 열려 있는지 확인

7. 기타 유용한 명령어

  • df -h : 디스크 사용량 확인
  • du -sh 디렉토리명 : 디렉토리 크기 확인
  • history : 이전에 쳤던 명령어 기록 보기
  • clear : 터미널 화면 깨끗이 지우기

그리고 도커 컨테이너 안에서 특히 많이 쓰는 것

목적명령어
컨테이너 안 파일 보기docker exec -it 컨테이너명 ls /경로
컨테이너 안으로 접속docker exec -it 컨테이너명 /bin/bash 또는 /bin/sh
컨테이너 안 로그 보기docker logs 컨테이너명
컨테이너 안 서비스 확인ps aux, netstat, curl localhost:포트

요약

  • 컨테이너 안에서 "파일 보고 수정하고", "프로세스 보고 죽이고", "패키지 설치하고", "네트워크 체크"할 줄 알면 웬만한 디버깅은 다 가능해.
  • 그래서 리눅스 기본 명령어는 꼭 좀 익숙해지는 게 좋다.

좋은 질문이다.
"커널(kernel)" — 이 단어도 도커 쓰면서 진짜 많이 듣게 될 거야.
(리눅스 공부하거나, 서버 다룰 때는 더더욱.)

핵심만 깔끔하게 설명해줄게.


🧠 커널(Kernel) 이란?

운영체제(OS)의 심장부.

컴퓨터 하드웨어(메모리, CPU, 디스크 등)와 소프트웨어(프로그램) 사이를 중간에서 관리하고 제어하는 가장 핵심적인 부분.


📦 쉽게 말하면?

  • 메모리 관리
    → 누가 얼만큼 메모리 쓸지 커널이 정해줌.
  • 프로세스 관리
    → 어떤 프로그램 먼저 돌릴지, CPU 어떻게 나눠줄지 커널이 결정.
  • 파일 시스템 관리
    → 파일 읽고 쓰는 걸 커널이 다 관여.
  • 네트워크 관리
    → 인터넷 패킷 주고받을 때도 커널이 개입.

정리
👉 프로그램은 직접 하드웨어를 만지지 않고,
👉 커널을 통해서만 하드웨어를 조종할 수 있다.


🐳 도커랑 커널은 왜 관련 있어?

도커는 사실상 **"리눅스 커널의 기능"**을 이용해서 돌아간다.
특히 여기!

커널 기능도커에서 쓰는 부분
Namespace (네임스페이스)각 컨테이너마다 고립된 환경 제공 (ID, 네트워크 등)
Cgroups (컨트롤 그룹)컨테이너별로 CPU/메모리 사용량 제한
UnionFS (파일시스템)도커 이미지 계층 구조 관리 (레이어 쌓기)

요약하면
👉 도커 = 리눅스 커널의 기능을 활용해서
👉 진짜 가상머신(VM) 없이, 가볍게 가짜 시스템처럼 "컨테이너"를 만들어주는 기술.

그래서

  • 도커를 제대로 이해하려면
  • "리눅스 커널이 어떤 일 하는지" 기본 정도는 알아야 된다!

🔥 커널을 자주 듣게 되는 상황 예시

상황커널이 왜 나옴?
컨테이너가 갑자기 꺼짐메모리 초과(OOM), 커널이 강제 종료했을 수 있음
시스템 느려짐커널이 스왑(Swap) 처리 중일 수 있음
컨테이너끼리 격리 문제네임스페이스 설정(커널 기능) 이상일 수 있음
보안 설정 강화커널 레벨의 보안 설정(Seccomp, AppArmor 등) 건드림
도커 설치특정 커널 버전 이상 필요 (리눅스 커널 3.10 이상 추천)

📝 진짜 짧게 요약

  • 커널 = OS의 심장 (하드웨어랑 프로그램 중재자)
  • 도커 = 커널 기능(Namespace, Cgroups 등)을 이용해서 컨테이너 만들기
  • 그래서 도커 쓸 때도 커널 개념이 은근히 중요함.

혹시
✅ "리눅스 커널 버전 확인하는 명령어"
✅ "커널 관련 진짜 많이 쓰는 리눅스 명령어"
✅ "Namespace랑 Cgroups 완전 쉬운 버전 설명"

이것들도 정리해줄까?
(요거 알면 도커 한 단계 더 편하게 쓸 수 있어!)
필요하면 말해줘 ✨🚀

좋아, 바로 깔끔하게 정리해줄게.
"커널 관련 진짜 많이 쓰는 리눅스 명령어" — 도커 쓸 때도, 서버 다룰 때도 꼭 알면 좋은 것들 위주야.


🧠 커널 관련 리눅스 명령어 베스트

1. 커널 버전 확인

uname -r
  • 현재 시스템에 설치된 커널 버전 출력 (ex: 5.15.0-1067-azure)
uname -a
  • 커널 버전 + 운영체제 + 하드웨어 정보까지 전체 출력

2. 커널 모듈 확인 / 관리

모듈 = 커널 기능을 확장하는 조각 (필요할 때 불러다 씀)

lsmod
  • 현재 로딩된 커널 모듈 목록 보기
modinfo 모듈이름
  • 특정 모듈의 상세 정보 보기 (버전, 파일 위치 등)
modprobe 모듈이름
  • 모듈 로드(적재)
rmmod 모듈이름
  • 모듈 언로드(제거)

3. 커널 파라미터(설정값) 확인/수정

시스템 동작을 세밀하게 조정할 수 있어. 예를 들면, 메모리 관리, 파일 핸들 수 제한 등.

sysctl -a
  • 현재 커널 파라미터 전체 리스트 보기
sysctl 키=
  • 특정 파라미터 일시적으로 변경
    (ex: sysctl net.ipv4.ip_forward=1 → IP 포워딩 활성화)
cat /etc/sysctl.conf
  • 시스템 재부팅해도 적용하려면 여기에 설정 추가해야 함

4. 메모리/프로세스 관리 (커널 관여 영역)

top
  • CPU, 메모리 사용량 실시간 모니터링
vmstat 1
  • 메모리, 프로세스, I/O, 시스템 부하 통계 1초마다 갱신
free -h
  • 메모리 사용 현황 보기 (사람이 읽기 쉽게)
dmesg
  • 커널 메시지 출력
    (부팅 로그, 드라이버 문제, 메모리 에러 등 커널 로그)

5. 디바이스 / 드라이버 확인

lscpu
  • CPU 정보 보기 (커널이 인식한 것 기준)
lsblk
  • 블록 장치(디스크, USB) 보기
lspci
  • PCI 장치(그래픽 카드, 네트워크 카드 등) 보기
lsusb
  • USB 장치 보기

📋 요약 정리 표

목적명령어
커널 버전 확인uname -r
현재 모듈 확인lsmod
모듈 상세 정보modinfo 모듈이름
모듈 적재modprobe 모듈이름
모듈 제거rmmod 모듈이름
커널 설정 보기/수정sysctl -a, sysctl 키=값
커널 로그 확인dmesg
CPU/메모리 상태 확인top, free -h, vmstat

🔥 도커 쓸 때 특히 주의해서 보는 것

  • sysctl net.ipv4.ip_forward (네트워크 설정)
  • sysctl kernel.pid_max (프로세스 ID 최대값)
  • dmesg (컨테이너가 죽거나 이상 있을 때 커널 로그 확인)
  • uname -r (커널 버전 확인, 호환성 문제 있을 때)

✅ 마무리

👉 "uname, lsmod, sysctl, dmesg" 이 4개만 알아도
👉 커널 관련 문제 80% 이상 진단 가능하다.


추가로
혹시 필요하면 ✍️

  • "컨테이너 튜닝할 때 자주 만지는 커널 파라미터 Top 10"
  • "dmesg 로그 읽는 법 (OOM Kill 에러, 하드웨어 문제 디버깅)"

이것도 정리해서 이어줄게! ✨
필요하면 "ㅇㅇ" 하고 알려줘! 😎🚀

profile
@mgkick

0개의 댓글