[Docker 기본1] 도커입니다!

Docker란 응용 프로그램의 소프트웨어 컨테이너 내부에서 작업을 활성화하는 오픈 소스 프로젝트로서 Docker 문서에 따르면 CaaS(Containers as a Service) 플랫폼을 정의하고 있습니다.

Docker는 홈페이지에 Docker의 기능을 동일하게 취급하고 있습니다.

Docker 컨테이너는 내부 소프트웨어 실행에 필요한 모든 항목을 포함하는 완전한 파일 시스템 내부에 있습니다. 여기는 코드, 액세서리, 시스템 도구, 시스템 라이브러리 등 서버 설치에 있는 무엇이든 외부 보호입니다. 이 차량은 주행 환경과 관계 없이 동일하게 주행할 수 있음을 보장합니다.

Docker는 외부인의 역할에 대한 추상화 및 자동화 부분을 제공합니다. 또한, 제외, 통합 파일 시스템의 인스턴스 인스턴스 기능을 사용하며, 이를 포함하는 컨테이너 가 하나도 포함되도록 할 수 있도록 가상 머신에 대한 유지 보수를 포함할 수 있습니다.

모놀리식에서 마이크로서비스로

지금은 제외하고, OS/런타임/미들웨어 기반의 인프라를 제외하고 잘 정돈되어져, 그보다 더 많은 기능을 제공하는 대형 애플리케이션이 실행되고 있습니다. 해당 응용 프로그램에서 장애가 있을 수 없는 일로 간주됩니다. 하지만, 애플리케이션의 이러한 구조는 모바일 기기를 필두로 한 자리에 앉히는 IT 산업의 위치에 있으며, 곧 애플리케이션의 사용자를 크게 확장할 수 있습니다.

이러한 방식이 좀 더 편리해지고 애플리케이션의 구조가 점점 더 좋아졌습니다. 다양한 애플리케이션은 다양한 기기와 환경에 맞서 빠르게 지원하기 위해 잘게 쪼개짐, 개발자들은 결합 성능을 사용할 수 있는 서비스를 개별적으로 조립하여 제공했습니다. 또한, 조립된 서비스에 비해 인프라스트럭처도 Public / Private / Virtualized 다양한 환경을 구성하여 사용하게 되었습니다.

그렇다면, 왜 Docker인가

그러한 자산은 다음과 같은 자산으로 시작되었습니다.

  • 다양한 방식으로 조립된 서비스가 일관되게 결합할 수 있도록 할 수 있는 방법은 무엇입니까?
  • 각 서비스별 “Dependency Hell”을 더욱 강화할 수 있는 방법은 무엇입니까?
  • 수많은 애플리케이션의 다양성으로 신속하게 마이그레이션 및 확장할 수 있나요?
  • 각 환경에 배포된 애플리케이션의 호환성이 관련되어 있습니까?
  • n 개의 서비스가 n 개의 인프라에서 잘 작동할 수 있도록 할 수 있도록 많은 설정을 어떻게 강화할 수 있습니까?

스피커들에 대한 솔루션으로 생각하는 것이 Container 입니다. 컨테이너는 라이브러리, 시스템 도구, 코드, 런타임 등 애플리케이션에 필요한 모든 것이 포함되어 있는 단위로, 환경에 구애받지 않고 애플리케이션을 신속하게 배포하고 확장할 수 있는 환경을 밝게 할 수 있습니다.

따라서 Docker는 이러한 컨테이너를 관리할 수 있는 서비스를 제공함으로써,
애플리케이션이 다양한 환경 속에서 서비스를 제공할 수 있도록 허용합니다.

Docker를 사용하는 것과 비슷한 애플리케이션 환경으로 빠르게 배포할 수 있습니다.

Docker는 애플리케이션 및 서비스를 컨테이너를 사용하여 결합된 환경에서 구동할 수 있도록 하고, 개발을 단축하도록 합니다. 이러한 컨테이너의 이점은 CI/CD 워크플로를 확장하는 것입니다.

환경에 따라 배포와 축소가 이루어졌습니다.

Docker는 개발자의 노트북, 데이터 센터의 VM, 클라우드 환경 또는 다양한 환경을 쉽게 사용할 수 있습니다. Docker의 이와 같이 상대적으로 인해, 비즈니스 요구 사항에 비해 응용 프로그램과 서비스를 호출하여 그에 따라 동적으로 관리할 수 있고, 거의 점차 줄어들거나 확장할 수 있습니다. 타 플랫폼에 비해 동일한 하드웨어에서 더 많은 작업을 수행할 수 있습니다. Docker는 알아야 할 동작하기 때문에 Hypervisor 기반의 Virtual Machine을 대신하고 비용을 절감할 수 있습니다. 따라서, 정교한 리소스로 많은 작업을 수행해야 하는 중소 규모의 배포 품질 및 소규모 밀집 환경에 적합합니다.

도커님 안녕하세요

Docker는 내부 개발 환경 구성을 Community Edition(CE)과 실 운영 환경을 위해 Enterprise Edition(EE)의 두 가지 버전으로 제공하고 있습니다. Docker Community Edition(CE) 은 각 계층 환경에 맞는 설치파일을 제공하고 있습니다.

Docker 환경 구성 방법은 다음과 같습니다.

  1. 환경 환경에 맞는 Docker 설치파일을 다운받아 설치한 후 실행합니다.
  2. docker version으로 Docker의 버전을 확인합니다.

2-1. 내부 Docker 환경에 Server(Docker Daemon)과 클라이언트외에도 docker-compose와 docker-machine Tool도 같이 커넥터를 확인하실 수 있습니다.

2-2. docker run체육관으로 hello-worldImage를 Pull하여 Conatiner를 생성하여 실행합니다.

bash $ docker 실행 hello-world로컬에서 'hello-world:latest' 이미지를 찾을 수 없습니다. 
최신: library/hello-world 
ca4f61b1923c에서 가져오는 중: 전체 다이제스트 가져오기: sha256:97ce6fa4b6cdc0790cda65fe7290b74cfebd9fa0c9b8c38e979330d547d22ce1 
상태: hello-world:latest에 대한 최신 이미지를 다운로드했습니다.도커에서 안녕하세요! 이 메시지는 설치가 올바르게 작동하고 있음을 나타냅니다.이 메시지를 생성하기 위해 Docker는 다음 단계를 수행했습니다.Docker 클라이언트가 Docker 데몬에 연결되었습니다.Docker 데몬은 Docker Hub에서 "hello-world" 이미지를 가져왔습니다. (AMD64)Docker 데몬은 현재 읽고 있는 출력을 생성하는 실행 파일을 실행하는 해당 이미지에서 새 컨테이너를 생성했습니다.Docker 데몬은 해당 출력을 Docker 클라이언트로 스트리밍하여 터미널로 보냈습니다.좀 더 야심찬 작업을 시도하려면 다음을 사용하여 Ubuntu 컨테이너를 실행할 수 있습니다. $ docker run -it ubuntu bash무료 Docker ID를 사용하여 이미지 공유, 워크플로 자동화 등을 수행하세요: https://cloud.docker.com/더 많은 예제와 아이디어를 보려면 https://docs.docker.com/engine/userguide/ 를 방문하세요.

3. 같이 지내는 사람들이 공유하면, Docker 환경 구성이 마무리되는 것입니다.

한 마디로 Build로 인해 Run

지금까지 Docker 환경을 구성하여, hello-worldImage로부터 컨테이너를 가져왔습니다. Docker가 설치되어 있다면, hello-world어디에서든지 100% 같은 이름으로 찾아오는 것입니다. 그들이 애플리케이션을 더 이상 선호하지 않고, 서비스를 제공할 수 있다는 의미입니다.

한 반대 빌드로 독립된 Run할 수 있는 Docker. 이러한 가능성을 제공하는 Docker가 어떻게 구성되어 있는지, 어떤 식으로 동작하는지가 더욱 강화됩니다.