소개
Docker 는 컨테이너를 빌드하고 실행하는 플랫폼입니다. 컨테이너는 애플리케이션과 애플리케이션에 필요한 파일 및 라이브러리를 함께 패키징하므로, 서로 다른 환경에서도 애플리케이션이 일관되게 동작합니다.
컨테이너는 완전한 가상 머신과 같은 것이 아닙니다. 컨테이너는 호스트 커널을 공유하면서 프로세스와 파일 시스템 뷰를 격리합니다. 따라서 일반적으로 가상 머신보다 더 빠르게 시작되고 리소스도 적게 사용합니다.
컨테이너가 널리 사용되기 시작한 이유는 개발자와 운영 담당자가 다음과 같은 문제를 자주 겪었기 때문입니다. 한 컴퓨터에서는 정상적으로 작동하던 소프트웨어가 환경이 다르다는 이유로 다른 컴퓨터에서는 실패하는 문제입니다. 컨테이너는 애플리케이션을 패키징하고 시작하는 방식을 표준화하여 이러한 환경 차이를 줄입니다.
이 실습에서는 Docker 환경의 상태를 확인합니다. 컨테이너를 본격적으로 사용하기 전에 Docker Engine 이 설치되어 있는지, 클라이언트가 Docker Engine 과 통신할 수 있는지, 시스템이 테스트 이미지를 성공적으로 실행할 수 있는지 확인해야 합니다.
다음 항목을 확인합니다.
- 설치된 Docker 버전을 확인합니다.
- 테스트 컨테이너를 실행하여 시스템이 이미지를 다운로드하고 실행할 수 있는지 확인합니다.
- 컨테이너 상태를 확인하여 컨테이너 수명 주기를 이해합니다.
Docker 버전 확인
Docker 환경을 확인하는 첫 단계는 Docker 명령줄 인터페이스 (CLI) 에 접근할 수 있는지 확인하는 것입니다. 이 작업을 통해 시스템의 PATH 에서 docker 명령을 사용할 수 있는지 확인합니다.
이 확인만으로는 클라이언트 도구가 존재한다는 사실만 알 수 있습니다. 백그라운드에서 실행되는 Docker 엔진이 정상인지, 컨테이너를 실제로 실행할 수 있는지는 아직 확인되지 않습니다.
터미널을 열고 다음 명령을 실행합니다.
docker --version
출력 예시:
Docker version 20.10.21, build 20.10.21-0ubuntu1~22.04.3
출력에는 설치된 Docker 버전과 빌드 정보가 표시됩니다. 버전 번호가 표시되면 Docker 클라이언트가 성공적으로 설치되어 명령을 받을 준비가 되었다는 뜻입니다.
테스트 컨테이너 실행
이제 Docker 클라이언트를 사용할 수 있음을 확인했으므로, 다음 단계에서는 Docker Daemon(컨테이너를 관리하는 백그라운드 서비스) 이 실행 중이며 컨테이너를 시작할 수 있는지 확인합니다.
클라이언트와 데몬을 분리하는 구조는 Docker 의 핵심입니다. 입력하는 docker 명령은 클라이언트이고, 이미지를 가져오고 컨테이너를 생성하며 컨테이너의 수명 주기를 관리하는 실제 작업은 데몬이 수행합니다.
이 확인에는 공식 hello-world 이미지를 사용합니다. 이 최소 이미지에는 설치 상태를 테스트하기 위한 기능만 포함되어 있습니다.
터미널에서 다음 명령을 실행합니다.
sudo docker run hello-world
sudo를 사용하는 이유
Docker 데몬은 Unix 소켓을 통해 통신합니다. 기본적으로 이 소켓의 소유자는 root 사용자이므로, 다른 사용자는 sudo를 사용해야 소켓에 접근할 수 있습니다.
이 명령을 실행하면 발생하는 작업
- 로컬 확인: Docker 가 로컬 컴퓨터에
hello-world이미지가 있는지 확인합니다. - 가져오기: 로컬에서 이미지를 찾지 못하면 Docker Hub(공개 레지스트리) 에서 이미지를 다운로드합니다.
- 실행: Docker 가 해당 이미지로 새 컨테이너를 생성하고 실행합니다.
이 과정에서 이미지와 컨테이너의 차이도 확인할 수 있습니다. 이미지는 재사용할 수 있는 템플릿이고, 컨테이너는 해당 템플릿으로 생성된 실행 중이거나 중지된 인스턴스입니다.
컨테이너 출력 및 상태 분석
이 단계에서는 이전 명령의 출력을 분석하여 컨테이너가 성공적으로 실행되었는지 확인합니다.
sudo docker run hello-world를 실행하면 다음과 비슷한 메시지가 표시됩니다.
Hello from Docker!
This message shows that your installation appears to be working correctly.
...
이 메시지는 Docker 의 전체 처리 흐름인 클라이언트, 데몬, 레지스트리, 컨테이너가 모두 정상적으로 작동한다는 것을 확인해 줍니다.
hello-world 컨테이너는 이 메시지를 출력한 다음 즉시 종료되도록 설계되었습니다. 실행이 중지된 후에도 컨테이너 자체는 시스템에 남아 있습니다. 실행이 중지된 컨테이너를 포함하여 모든 컨테이너를 나열하면 이를 확인할 수 있습니다.
이는 컨테이너 수명 주기를 이해하는 데 유용한 첫 번째 예입니다. 컨테이너는 종료된 상태로 존재할 수 있습니다. Docker 에서 실행 중이라는 것과 존재한다는 것은 서로 관련 있지만 동일한 개념은 아닙니다.
다음 명령을 실행합니다.
sudo docker ps -a
ps: 컨테이너를 나열합니다.-a(또는--all): 실행 중인 컨테이너뿐 아니라 모든 컨테이너를 표시합니다.
출력에 hello-world가 Exited 상태로 표시되어야 합니다. 이는 컨테이너가 생성되고 실행된 후 작업을 성공적으로 완료했다는 뜻입니다.
요약
이 실습에서는 Docker 설치를 성공적으로 확인했습니다. 다음 작업을 수행하는 방법을 배웠습니다.
- Docker 버전을 확인하여 CLI 도구가 설치되어 있는지 확인합니다.
hello-world컨테이너를 실행하여 Docker 데몬과의 연결 및 이미지 가져오기 기능을 테스트합니다.- 출력을 확인하고 컨테이너 기록을 나열하여 컨테이너가 실행되었는지 검증합니다.
이 확인을 모두 완료했으므로 환경이 더 고급 Docker 작업을 수행할 준비가 되었음을 확신할 수 있습니다.



