20. Ubuntu Server에 Docker를 설치하는 방법: 컨테이너화 단계별 가이드

컨테이너화는 소프트웨어를 격리되고 가벼운 환경으로 패키징하여 애플리케이션 배포를 혁신하고 서로 다른 시스템 간의 일관성을 보장합니다. Ubuntu Server의 Docker 는 이 과정을 단순화하는 강력한 조합으로, 개발자와 시스템 관리자가 애플리케이션을 원활하게 빌드, 제공, 실행할 수 있게 합니다. 업계를 선도하는 컨테이너화 플랫폼인 Docker는 워크플로를 간소화하고 최신 애플리케이션 개발의 확장성을 향상시킵니다.

이 가이드에서는 Ubuntu Server에 Docker를 설치하고 첫 번째 컨테이너화된 애플리케이션을 실행하는 단계를 안내합니다. Docker를 처음 사용하든 배포 프로세스를 최적화하려 하든, 이 튜토리얼은 Ubuntu Server에서 컨테이너화를 시작하는 데 도움이 됩니다.


이전 글:

01. Ubuntu Server 소개 – SysOSX: AI & Cloud

02. 첫 Ubuntu 서버 설정 방법: 초보자 가이드 – SysOSX: AI & Cloud

03. Ubuntu Server용 Linux 명령줄 익히기 – SysOSX: AI & Cloud

04. Ubuntu Server에서 사용자 및 권한 관리: 종합 가이드 – SysOSX: AI & Cloud

05. Ubuntu Server 네트워킹 기초: 종합 가이드 – SysOSX: AI & Cloud

06. Ubuntu Server에 소프트웨어 설치 및 관리: 완전 가이드 – SysOSX: AI & Cloud

07.Ubuntu Server 패치 및 업데이트: 종합 가이드 – SysOSX: AI & Cloud

08. Ubuntu 서버 보안: 강화 및 보호를 위한 실질적인 단계 – SysOSX: AI & Cloud

09. Ubuntu 서버 감사 및 로깅

10. Ubuntu Server용 시스템 모니터링 도구: 종합 가이드 – SysOSX: AI & Cloud

11. Ubuntu 서버를 위한 중앙 집중식 로깅: 필독 가이드 – SysOSX: AI & Cloud

12. Ubuntu Server 감사 및 규정 준수: 모범 사례 – SysOSX: AI & Cloud

13. 호스팅 및 웹 애플리케이션을 위한 Ubuntu 서버 설정: 최종 가이드 – SysOSX: AI & Cloud

14. 단일 Ubuntu 서버에서 여러 웹사이트 호스팅: 유용한 팁 – SysOSX: AI & Cloud

15. Ubuntu Server 스토리지 및 디스크 관리: 간단 가이드 – SysOSX: AI & Cloud

16. Ubuntu Server에서 파일 공유 서비스 설정: 완전 가이드 – SysOSX: AI & Cloud

17. Ubuntu에서 보안 데이터베이스 서버 설정: MySQL 대 MariaDB – SysOSX: AI & Cloud

18. Ubuntu Server에서 LVM 구성 및 사용 방법: 종합 가이드 – SysOSX: AI & Cloud

19. KVM을 사용한 가상화 소개: Ubuntu Server 초보자 가이드 – SysOSX: AI & Cloud



필수 조건

Docker를 설치하기 전에 Ubuntu 서버가 다음 요구 사항을 충족하는지 확인합니다.

  • Ubuntu 20.04 LTS 이상 (64비트).
  • sudo 권한 또는 루트 액세스 권한.
  • 안정적인 인터넷 연결 패키지 다운로드용.

1단계: Ubuntu Server에 Docker 설치

시스템 패키지 업데이트
sudo apt update && sudo apt upgrade -y  

필요한 종속성 설치
sudo apt install apt-transport-https ca-certificates curl software-properties-common -y  
Docker 공식 GPG 키 추가
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg  

Docker 리포지토리 설정
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null  

Docker Engine 설치
sudo apt update  
sudo apt install docker-ce docker-ce-cli containerd.io -y  
설치 확인
sudo docker run hello-world  

성공하면 아래와 같은 확인 메시지가 표시됩니다 .


2단계: 루트가 아닌 사용자로 Docker 관리

기본적으로 Docker에는 sudo 권한이 필요합니다. 매번 sudo 을(를) 반복 입력하지 않으려면 다음과 같이 하세요:

  1. Docker 그룹 만들기 (존재하지 않는 경우): sudo groupadd docker
  2. 사용자를 그룹에 추가합니다: sudo usermod -aG docker $USER
  3. 변경 사항 적용: newgrp docker

3단계: 첫 번째 컨테이너 실행

몇 초 만에 Nginx 웹 서버 를 실행합니다:

docker run -d -p 8080:80 --name my-nginx nginx  

  • -d: 분리 모드로 실행합니다.
  • -p 8080:80: 호스트 포트 8080을 컨테이너 포트 80에 매핑합니다.
  • --name: 컨테이너에 사용자 지정 이름을 할당합니다.

액세스 확인:

curl http://localhost:8080  

4단계: 필수 Docker 명령어

명령어설명
docker ps실행 중인 컨테이너 나열
docker images다운로드한 이미지 보기
docker stop <container-id>컨테이너 중지
docker rm <container-id>컨테이너 제거
docker rmi <image-id>이미지 삭제

5단계: Docker Compose로 워크플로 자동화

다중 컨테이너 애플리케이션에는 Docker Compose:

  • Docker Compose 설치:
sudo apt install docker-compose -y
  •  docker-compose.yml 파일을 만듭니다:
version: '3'  
services:  
  web:  
    image: nginx  
    ports:  
      - "8080:80"  

  • 스택 시작:
docker-compose up -d

Ubuntu에서 Docker 모범 사례

  • Docker를 정기적으로 업데이트:
sudo apt update && sudo apt upgrade docker-ce -y
  • 사용하지 않는 리소스 정리:
docker system prune -a
  • 공식 이미지를 사용합니다. 출처는  Docker Hub 이며, 보안과 안정성을 보장합니다.

일반적인 문제 해결

  • 권한 거부됨: 사용자가 docker 그룹에 속해 있는지 확인합니다.
  • 포트 충돌: 동일한 포트를 사용하는 다른 서비스가 있는지 확인합니다.
  • 이미지 가져오기 오류: 인터넷 연결과 이미지 이름 철자를 확인합니다.

Docker와 다른 컨테이너화 도구 비교

Docker가 컨테이너화 분야를 지배하고 있지만, 대안을 이해하면 사용 사례에 적합한 도구를 선택하는 데 도움이 됩니다.

도구유형주요 기능적합한 용도
Docker애플리케이션 컨테이너– 이식 가능하고 앱 중심의 패키징에 중점<br>- 거대한 생태계(Docker Hub)<br>- 간단한 CLI 및 Compose개발자, 마이크로서비스, CI/CD 워크플로
LXD시스템 컨테이너– 완전한 OS 환경(경량 VM과 유사)<br>- LXC/Linux와의 긴밀한 통합<br>- 고급 리소스 관리서비스형 인프라, 하이퍼바이저 대체
Podman애플리케이션 컨테이너– 데몬리스 아키텍처<br>- 기본적으로 루트리스<br>- Docker 호환 CLI보안 중심 워크로드, 에지 컴퓨팅
containerd컨테이너 런타임– 하위 수준 런타임(Docker/Kubernetes에서 사용)<br>- 미니멀한 설계<br>- 확장성에 중점Kubernetes 클러스터, 대규모 배포
CRI-OKubernetes 런타임– Kubernetes CRI에 최적화<br>- 가볍고 안전<br>- Red Hat 지원OpenShift/OKD 클러스터, Kubernetes 네이티브 운영
Docker가 여전히 뛰어난 이유
  • 초보자 친화적: 앱 개발 및 테스트를 위한 워크플로가 단순합니다.
  • 이식성: 컨테이너는 macOS, Windows, Linux에서 동일하게 실행됩니다.
  • 커뮤니티 지원: 800만 개가 넘는 Docker Hub 이미지와 광범위한 문서.
대안을 고려해야 하는 경우
  • LXD: 완전한 OS 격리가 필요한 경우(예: 별도의 사용자로 여러 서비스를 호스팅하는 경우).
  • Podman: 보안을 우선시하는 경우(예: 정부/의료 워크로드).
  • containerd/CRI-O: Kubernetes 네이티브 인프라를 구축하는 경우.

결론

이 가이드를 따라 Ubuntu Server에 Docker를 설치하고 첫 번째 컨테이너화된 애플리케이션을 배포했습니다. Docker의 유연성 덕분에 DevOps, 클라우드 네이티브 개발, 하이브리드 환경에 없어서는 안 될 도구가 되었습니다. 다음과 같은 고급 기능, 예를 들어 Docker Swarm 또는 Kubernetes 통합 을 활용하여 컨테이너 워크로드를 확장하세요.

참고: Docker 공식 문서

다음은? Linux 컨테이너를 위한 LXD를 살펴볼 준비를 하세요

애플리케이션 컨테이너화를 위한 Docker를 익혔으니, 이제 Linux 시스템 컨테이너의 세계를 더 깊이 살펴보겠습니다! 곧 공개될 가이드를 기대해 주세요 .

“Linux 컨테이너를 위한 LXD 소개: 경량 가상화를 간단하게“

2 thoughts on “20. How to Install Docker on Ubuntu Server: A Step-by-Step Guide to Containerization”

댓글 남기기