스택 오버플로에서 실시한 2022년 및 2023년 개발자 설문조사에 따르면, 가장 선호도가 높은 프로그래밍 도구로 Docker가 부상했습니다. IT 업계에서 널리 사용되면서 애플리케이션 배포 방식에 큰 영향을 미쳤습니다.
Docker 컨테이너는 가상 머신과 어느 정도 유사하지만, 더 컴팩트하고 운영 시스템에 필수적인 구성 요소만 통합하는 것이 특징입니다. 도커 컨테이너의 축소된 특성을 더 잘 이해하려면 컨테이너 내에서 우분투를 실행해 보세요.
1단계: 우분투 도커 이미지 가져오기
이 문서에 제공된 지침을 활용할 수 있도록 하려면 먼저 운영 체제에서 도커의 설치 프로세스를 숙지하는 것이 좋습니다. 우분투를 사용 중이라면 트위터의 Docker 설치에 대한 종합 가이드를 참조하세요. 또한 macOS 또는 Windows를 실행하는 사용자는 해당 플랫폼에 Docker를 설치하기 위한 단계별 지침을 따를 수도 있습니다.
도커 허브는 공개적으로 인증되고 공식적으로 승인된 도커 이미지를 모두 얻을 수 있는 진정한 소스 역할을 하며, 비공개 도커 이미지를 감독하고 생성할 수 있는 기능도 제공합니다.
Azure 및 AWS를 포함한 클라우드 서비스 제공업체는 사용자 지정 Docker 컨테이너 이미지를 호스팅하고 관리할 수 있는 Docker 레지스트리를 제공합니다.
다음 명령을 사용하여 가장 최신의 Ubuntu Docker 이미지를 얻을 수 있습니다:
sudo docker pull ubuntu
해당 이미지가 현재 시스템에 없는 경우 Docker 플랫폼은 지정된 이미지의 최신 버전을 자동으로 검색하여 컴퓨터에 설치합니다.
도커 허브에서 이미지를 다운로드하는 프로세스에는 원하는 버전에 대해 사용 가능한 태그를 숙독한 후 해당 태그를 사용하여 이미지를 가져오는 과정이 포함됩니다. 예를 들어 우분투 20.04를 획득하려면 다음 명령을 실행해야 합니다:
sudo docker pull ubuntu:20.04
“sudo docker images” 명령을 사용하면 현재 개인용 컴퓨터에 있는 도커 이미지의 포괄적인 인벤토리를 검색할 수 있습니다.
2단계: 우분투 도커 이미지 실행
도커 이미지는 도커 이미지의 운영 인스턴스인 컨테이너를 구성하기 위한 가이드라인 역할을 합니다. 다운로드한 Docker Ubuntu 이미지를 활성화하려면 다음 지시문을 실행합니다.
sudo docker run -ti --rm ubuntu /bin/bash
앞서 언급한 지시문은 Bash 셸 터미널(-bin/bash)을 사용하여 대화형 터미널 모드(-ti)에서 Docker Ubuntu 컨테이너를 실행하도록 Docker에 지시합니다.또한 –rm 플래그를 배포하면 우분투 도커 컨테이너가 중단될 때 자동으로 제거됩니다.
초기화 시 셸은 루트 사용자로서 관리 권한으로 시작되며 터미널 인터페이스는 기존 Linux 플랫폼의 인터페이스와 유사합니다. 또한 컨테이너에는 기본적으로 임의의 호스트 이름이 할당됩니다.
우분투 도커 이미지에는 그래픽 사용자 인터페이스 및 다양한 명령줄 유틸리티와 같이 일반적으로 운영 체제와 관련된 특정 기능이 없습니다. 최소한의 구성에도 불구하고 크기가 약 78메가바이트로 매우 컴팩트합니다.
우분투 도커에서 리눅스 명령 실행
리눅스 시스템에서 운영체제 정보를 검색하는 일반적인 방법은 `lsb_release -a` 명령을 사용하는데, 이 경우 도커 우분투 이미지에 `lsb-core` 패키지가 사전 설치되어 있지 않아 이 명령을 사용할 수 없는 것으로 확인되었습니다. Docker 이미지에는 필수 구성 요소만 탑재되어 있으며 기본적으로 추가 소프트웨어나 패키지가 포함되어 있지 않다는 점에 유의하시기 바랍니다.
다행히도 Bash 셸에 통합되어 있는 cat 명령을 사용하여 운영 체제 정보를 검색할 수 있습니다.
cat /etc/os-release
앞서 언급한 출력은 에 배포된 우분투의 장기 지원(LTS) 버전에 관한 것으로, 도커의 효율성으로 인해 시스템 리소스를 거의 소모하지 않고도 도커 내에서 우분투를 운영할 수 있게 되었습니다.
이 운영 체제는 경량 운영 체제이기 때문에 우분투에서 일반적으로 사용되는 익숙한 명령 프롬프트를 사용하여 추가 소프트웨어 패키지를 설치할 수 있습니다. 프로세스를 시작하려면 소스 코드 리포지토리를 새로 고치고 다음 명령을 입력하여 필수 구성 요소를 설치하세요:
apt update && apt install lsb-core
이미 관리자 권한으로 Docker 셸에 로그인했으므로 더 이상 “sudo” 명령을 사용할 필요가 없습니다.
패키지 설치 명령을 실행하면 이제 lsb\_release -a 명령을 실행할 때 출력되는 것을 볼 수 있습니다.
Docker 컨테이너 상태 저장
이 시점에서 Docker 컨테이너를 중단하면 소프트웨어 업그레이드 및 추가 도구를 포함한 모든 수정 사항이 손실됩니다. 이는 쉽게 교체, 중지 및 관리할 수 있도록 설계된 Docker 컨테이너의 특성에 내재된 것입니다.
Docker는 원하는 경우 스토리지 컨테이너의 상태를 보존할 수 있는 적응형 도구입니다.명령을 사용하여 Docker 우분투 그림의 고유 식별자를 식별하려면 다음 지침을 따르세요.
sudo docker ps
이전 명령은 컴퓨터에 있는 모든 Docker 컨테이너의 목록을 표시합니다. 앞서 설명한 예제에서 우분투 이미지는 식별자 524aa76baafb로 식별되지만 각 컨테이너의 고유 식별자는 다를 수 있습니다.
다음 명령은 컨테이너의 현재 상태를 보존하는 데 사용됩니다:
docker commit -p container_id new_container_name
sudo docker commit -p 524aa76baafb myubuntu
앞서 설명한 명령은 컨테이너를 보존하기 전에 컨테이너를 중지시킨 후 “myubuntu”라는 이름의 새 Docker 이미지를 생성합니다. 이 새로 생성된 Docker 이미지는 컨테이너에 적용된 모든 변경 사항을 포함해야 합니다. 결과적으로 방금 개인화된 우분투 도커 이미지를 만들었습니다.
새로 만든 사용자 지정 이미지를 포함한 Docker 이미지 목록을 표시하려면 “sudo docker images” 명령을 사용합니다.
우분투 도커 컨테이너에 데이터 지속
도커의 주목할 만한 장점 중 하나는 마운트 볼륨 또는 도커 볼륨을 통해 호스트 컴퓨터와 데이터를 저장 및 공유할 수 있다는 점입니다. 두 방법 모두 고유한 장점이 있지만, 마운팅 볼륨에 비해 더 많은 이점을 제공하는 Docker 볼륨을 사용할 것을 권장합니다.
개인 컴퓨터의 어느 위치에서나 Docker 볼륨을 생성할 수 있으며, 홈 디렉터리 내에 해당 볼륨을 설정하고 “Docker\_Share”라는 제목을 지정할 수 있습니다.
sudo mkdir -p Docker_Share
발화 1: 주어진 명령의 “container\_id”를 현재 작동 중인 컨테이너의 특정 식별자로 대체하여 실행 중인 Ubuntu Docker 컨테이너 인스턴스를 중지합니다: “`bash 도커 중지 컨테이너_id “` 발화 2: 다음 명령을 사용하여 중지된 우분투 컨테이너를 강제로 종료하고, 다시 “container\_id”를 컨테이너의 ID로 바꿉니다: “`bash 도커 rm 컨테이너_id
sudo docker stop container_id
앞의 단계를 완료하면 다음 명령을 사용하여 Docker\_Share 디렉토리 내에서 Ubuntu Docker 이미지를 실행할 수 있습니다. 또한 docker-compose 파일을 생성하여 여러 개의 Docker 이미지를 쉽게 설정하고 점화할 수 있습니다.
sudo docker run -ti --rm -v ~/Docker_Share:/data ubuntu /bin/bash
명령 실행 시 우분투에서 실행되는 Docker 컨테이너가 시작되고, 그 안에 “/데이터”라는 디렉터리가 생성되며, 컨테이너 외부에 앞서 지정한 “Docker\_Shared” 폴더와 대응하여 연결됩니다.
Docker\_Share 디렉터리는 컨테이너의 /data 디렉터리 내의 모든 파일에 액세스하고 수정할 수 있는 수단을 제공하며, 컨테이너의 /data 디렉터리에 이러한 변경 사항을 동시에 반영하여 두 환경 간의 원활한 동기화를 보장합니다.
가상 머신의 훌륭한 대체재
Docker는 보호되고 안전한 도메인 내에서 애플리케이션을 배포하고 운영할 수 있는 매우 강력한 기술입니다. 이 다목적 플랫폼은 매우 다양한 용도로 활용될 수 있으며, 대부분의 경우 가상 머신을 사용하는 대신 최소한의 우분투 도커 컨테이너를 실행하는 것으로 충분합니다.