
Docker를 사용하면 호스트의 커널을 공유하지만 독립적인 VM처럼 보이고 느껴지는 자급자족 컨테이너로 소프트웨어를 패키징할 수 있습니다. 내부의 소프트웨어는 거의 기본 성능으로 실행됩니다. 따라서 Docker 컨테이너는 시스템에 “베어 메탈”을 설치하지 않고 새 패키지를 안전하게 시험해 볼 수 있는 좋은 방법입니다. 다음은 사용할 수 있는 몇 가지 기술입니다.
Docker를 사용하여 소프트웨어를 사용하는 이유는 무엇입니까?
소프트웨어를 처음 시도할 때 패키지 관리자에서 직접 설치하는 것이 항상 바람직한 것은 아닙니다. 하드웨어에서 검증되지 않은 데몬이나 네트워크 서비스를 실행하고 싶지 않을 수 있습니다. 일부 제거 프로그램은 패키지에 연결된 모든 파일을 제거하지 않으므로 소프트웨어를 장기간 사용하지 않기로 결정한 경우 시스템이 분리된 구성으로 복잡해집니다.
최악의 경우 다운로드한 패키지가 악의적이거나 손상될 수도 있습니다. 베어메탈 설치를 선택하면 데이터가 위험에 노출됩니다. 문제를 인지하고 있을 때 공격자는 이미 악의적인 설치 스크립트에서 민감한 정보를 수집했을 수 있습니다.
Docker 컨테이너는 이러한 문제에 대한 걱정 없이 새 패키지를 설치할 수 있는 격리된 샌드박스를 제공합니다. 완전히 새로운 VM을 가동하는 것과 비교할 때 Docker는 더 가볍고 빠르지만 안전한 실행을 위해 구성된 경우 비슷한 수준의 보안을 제공합니다.
컨테이너 내에 설치하는 패키지는 해당 컨테이너의 파일 시스템을 수정하여 호스트의 데이터를 그대로 유지합니다. 악성 패키지는 호스트에 도달하기 위해 컨테이너에서 빠져나와야 하므로 시스템을 손상시키는 데 훨씬 더 많은 시간이 소요됩니다. 다른 패키지에서 흥미로운 구성 파일을 찾는 설치 프로그램은 사용자 데이터 대신 새로운 파일 시스템을 보게 됩니다.
패키지가 적합하지 않은 것으로 판명되면 샌드박스가 적용된 Docker 컨테이너를 삭제하여 패키지를 “제거”하십시오. 시스템에 흔적이 남지 않습니다.
도커 이미지 찾기
새로운 것을 시도하려는 경우 먼저 Docker Hub를 검색하고 선택한 패키지에 대한 컨테이너 이미지가 이미 있는지 확인하는 것이 가장 좋습니다. 이미지는 패키지 세트로 미리 구성된 VM ISO와 유사한 특정 소프트웨어의 즉시 사용 가능한 배포를 제공합니다.
많은 인기 있는 프로젝트가 이제 릴리스의 일부로 공식 Docker 이미지를 제공합니다. 이는 Docker Hub에 녹색 “공식 이미지” 배지로 명확하게 표시됩니다.

찾고 있는 패키지를 제공하지만 커뮤니티 회원이 게시한 비공식 이미지를 찾을 수 있습니다. 다른 사람들이 성공적으로 사용하고 있는지 평가하려면 먼저 다운로드 통계를 확인하는 것이 좋습니다.
또한 이미지에 원하는 소프트웨어 버전의 변형이 있는지 확인해야 합니다. 이미지는 다음과 같은 Docker 태그를 사용하여 다른 버전을 구별합니다. mongo:5 MongoDB 5 및 mongo:4 MongoDB 4용. Docker Hub의 태그 보기를 사용하여 사용 가능한 옵션과 마지막 업데이트 시간을 확인합니다.
이미지 사용
이미지를 찾았으면 이미지에서 컨테이너를 시작합니다. 선택한 소프트웨어에 대한 특정 지침을 얻으려면 Docker Hub에서 이미지 설명을 참조해야 합니다.
일반적으로 대화형 애플리케이션을 패키징하는 이미지는 다음 시퀀스를 사용하여 시작할 수 있습니다.
docker run -it example-image:latest
백그라운드 프로세스를 제공하는 시작 이미지 -d 대신 플래그:
docker run -d example-image:latest
그만큼 docker run 명령은 지정된 이미지를 사용하여 컨테이너를 시작합니다. 귀하의 소프트웨어는 이제 자체 파일 시스템이 있는 격리된 환경에서 실행됩니다. 이미지에서 여러 컨테이너를 시작하여 여러 독립 인스턴스를 동시에 실행할 수 있습니다.
이미지가 없다면?
선택한 소프트웨어 패키지에 대한 공식 또는 비공식 도커 이미지가 없다고 해서 도커 체험 여정이 끝나는 것은 아닙니다. 이 상황에서 운영 체제 기본 이미지에서 컨테이너를 생성하여 격리된 환경을 호스팅합니다. 그런 다음 소프트웨어의 일반 설치 절차를 실행하여 컨테이너에 넣을 수 있습니다.
다음은 Docker에서 새로운 Ubuntu 환경을 시작하는 예입니다.
docker run -it ubuntu:20.04
그만큼 -it 플래그는 터미널 내에서 실행되는 대화형 셸에 빠지게 됨을 의미합니다. 이제 사용할 수 있습니다. apt, curl, wget, 또는 대상 패키지를 설치하고 시도하는 데 필요한 기타 단계.
apt update apt install example-package example-package --example-flags
나중에 이 단계를 다시 반복하려면 고유한 이미지를 빌드할 수 있는 Dockerfile을 작성하세요.
FROM ubuntu:20.04 apt update apt install example-package ENTRYPOINT ["example-package"] CMD [""]
이미지 구축:
docker build -t example-package:latest .
이제 이미지를 사용하여 자동으로 실행되는 컨테이너를 시작합니다. example-package Ubuntu 기본 이미지에 추가된 바이너리:
docker run -it example-package:latest --example-flags
바이너리가 Dockerfile에서 Docker 이미지의 명령으로 설정되어 있기 때문에 작동합니다. 컨테이너가 시작될 때 자동으로 실행되어 전달한 플래그를 수신합니다. docker run.
스냅샷 찍기
Docker를 사용하여 새 소프트웨어를 시도할 때의 또 다른 이점은 컨테이너의 현재 상태에 대한 스냅샷을 생성할 수 있다는 것입니다. 이것은 다른 설정을 시도하고 나중에 쉽게 돌아갈 수 있도록 특정 구성을 백업하려는 경우에 유용합니다.
사용 docker commit 컨테이너의 파일 시스템에서 새 이미지를 만드는 명령:
docker commit my-container package-snapshot:latest
당신은 대체해야 my-container 컨테이너의 ID 또는 이름으로 다음을 실행하여 이러한 세부 정보를 얻을 수 있습니다. docker ps 실행 중인 모든 컨테이너가 시작된 순서대로 표시됩니다. 이 명령은 스냅샷된 이미지에 다음과 같이 태그를 지정합니다. package-snapshot:latest.

이제 현재 상태가 깨지는 것에 대해 걱정하지 않고 기존 컨테이너에 필요한 변경 사항을 적용할 수 있습니다. 롤백하려면 다음을 사용하십시오. docker run 다른 컨테이너를 시작하려면 package-snapshot:latest 영상.
청소
실험을 마치면 Docker를 사용하면 흔적을 남기지 않고 소프트웨어를 쉽게 “제거”할 수 있습니다. 먼저 컨테이너를 삭제합니다.
docker rm my-container
그런 다음 다운로드한 이미지를 지웁니다.
docker rmi example-image:latest
이제 깨끗한 상태로 돌아왔습니다. 소프트웨어와 관련된 모든 것은 컨테이너 내부에만 존재하므로 호스트의 파일 시스템은 변경되지 않은 상태로 유지됩니다.
영구 데이터
직면할 수 있는 한 가지 문제는 시도를 일시 중지하고 나중에 다시 시작하려는 경우입니다. Docker 컨테이너는 중지될 때 상태를 재설정하므로 구성 파일 추가와 같은 파일 시스템 변경 사항은 손실됩니다.
중요한 파일이 호스트에 유지되도록 컨테이너에 볼륨을 탑재하여 이 문제를 해결할 수 있습니다. 사용 -v 플래그 docker run 이것을 위해.
docker run -it -v config-volume:/etc/example-package/conf.d example-package:latest
볼륨은 개별 컨테이너보다 오래 지속되므로 동일한 컨테이너를 제공하여 파일을 새 컨테이너로 복원할 수 있습니다. -v 플래그. 다음을 사용하여 볼륨 삭제 docker volume rm 명령.
결론
Docker는 호스트 시스템의 환경을 오염시키지 않고 소프트웨어를 안전하게 시험해 볼 수 있는 빠르고 쉬운 방법입니다. 이를 통해 민감한 시스템 및 베어메탈 하드웨어에 새 패키지를 도입하기 전에 새 패키지를 분류할 수 있습니다.
Docker를 사용하면 소프트웨어를 실행하기 전에 스캔할 수 있습니다. 내장된 Docker Scan 구성 요소는 이미지 내 패키지의 취약점을 식별하여 보안 영향에 대한 개요를 제공합니다. 사용 docker scan example-package:latest 다운로드한 이미지를 스캔합니다.
초기 실험 후에 Docker화된 소프트웨어 설치를 계속 사용하도록 선택할 수 있습니다. 또는 배운 내용을 사용하여 패키지가 요청한 대로 작동한다는 확신을 갖고 작동하는 베어메탈 설치를 설정할 수 있습니다.








