logo

도커란 무엇입니까?

Docker는 운영 체제 수준 가상화를 사용하여 컨테이너라는 패키지로 소프트웨어를 제공하는 PaaS(Platforms as a Service) 제품 세트입니다. 컨테이너는 서로 격리되어 있으며 자체 소프트웨어, 라이브러리 및 구성 파일을 번들로 묶습니다. 그들은 잘 정의된 채널을 통해 서로 통신할 수 있습니다. 모든 컨테이너는 단일 운영 체제 커널에 의해 실행되므로 가상 머신보다 적은 리소스를 사용합니다.

내용의 테이블



도커란 무엇입니까?

도커 오픈 소스입니다 컨테이너화 애플리케이션과 모든 종속성을 컨테이너라고 하는 표준화된 단위로 묶을 수 있는 플랫폼입니다. 컨테이너는 무게가 가벼워서 휴대가 가능하며 기본 인프라 및 다른 컨테이너와 격리되어 있습니다. 당신은 실행할 수 있습니다 도커 이미지 로서 도커 컨테이너 의존하지 않고 도커가 설치된 모든 머신에서 운영 체제.

Docker는 소프트웨어 개발 및 배포에 미치는 영향으로 인해 인기를 얻었습니다. Docker가 인기를 얻는 주요 이유는 다음과 같습니다.

  1. 이식성: Docker는 개발자가 모든 종속성을 포함하는 애플리케이션을 단일 경량 컨테이너로 패키징하는 데 도움을 줍니다. 다양한 컴퓨팅 환경에서 일관된 성능을 보장하는 기능을 제공합니다.
  2. 재현성: 컨테이너 내의 종속성과 함께 애플리케이션을 캡슐화함으로써 소프트웨어 설정이 개발, 테스트 및 프로덕션 환경 전반에 걸쳐 일관성을 유지하도록 보장합니다.
  3. 능률: Docker는 컨테이너 기반 아키텍처를 통해 리소스 활용도를 최적화합니다. 이를 통해 개발자는 단일 호스트 시스템에서 격리된 여러 응용 프로그램을 실행할 수 있습니다.
  4. 확장성: Docker의 확장성 기능은 개발자가 워크로드 증가 시 애플리케이션 처리를 더 쉽게 만드는 데 도움이 되었습니다.

Dockerfile이란 무엇입니까?

그만큼 도커파일 DSL(도메인 특정 언어)을 사용하며 Docker 이미지 생성을 위한 지침이 포함되어 있습니다. Dockerfile은 이미지를 빠르게 생성하는 프로세스를 정의합니다. 애플리케이션을 생성하는 동안 Dockerfile을 순서대로 생성해야 합니다. 도커 데몬 모든 명령을 위에서 아래로 실행합니다.



(간단히 Docker라고도 하는 Docker 데몬은 시스템에서 Docker 컨테이너를 관리하는 백그라운드 서비스입니다.)

  • 실행 시 Docker 이미지를 어셈블하는 데 도움이 되는 필수 명령이 포함된 텍스트 문서입니다.
  • Docker 이미지는 Dockerfile을 사용하여 생성됩니다.
도커파일

Dockerfile에 대한 자세한 내용은 다음을 참조하세요. Docker - Dockerfile의 개념 .

Docker 아키텍처란 무엇이며 Docker는 어떻게 작동하나요?

Docker는 클라이언트-서버 아키텍처를 사용합니다. Docker 클라이언트는 Docker 컨테이너를 구축, 실행 및 배포하는 데 도움이 되는 docker 데몬과 대화합니다. Docker 클라이언트는 동일한 시스템에서 데몬과 함께 실행되거나 Docker 클라이언트를 Docker 데몬과 원격으로 연결할 수 있습니다. UNIX 소켓이나 네트워크를 통한 REST API의 도움으로 Docker 클라이언트와 데몬은 서로 상호 작용합니다. docker 작업에 대한 자세한 내용은 다음을 참조하세요. 도커의 아키텍처 .



도커 아키텍처

도커 이미지란 무엇입니까?

Docker 컨테이너에서 코드를 실행하는 데 사용되는 여러 레이어로 구성된 파일입니다. 도커 컨테이너를 만드는 데 사용되는 일련의 지침입니다. Docker 이미지는 애플리케이션을 실행하는 데 필요한 모든 것을 포함하는 실행 가능한 소프트웨어 패키지입니다. 이 이미지는 컨테이너가 인스턴스화되는 방법을 알려주고, 어떤 소프트웨어 구성 요소가 실행될지, 어떻게 실행되는지 결정합니다. Docker 컨테이너는 애플리케이션을 실행하는 데 필요한 모든 종속성과 함께 애플리케이션 코드를 번들로 묶는 가상 환경입니다. 애플리케이션은 한 컴퓨팅 환경에서 다른 컴퓨팅 환경으로 빠르고 안정적으로 실행됩니다.

도커 컨테이너란 무엇입니까?

Docker 컨테이너는 이미지의 런타임 인스턴스입니다. 개발자가 라이브러리 및 기타 종속성과 같은 필요한 모든 부분을 포함하는 애플리케이션을 패키징할 수 있습니다. Docker 컨테이너는 Docker 이미지의 런타임 인스턴스입니다. 컨테이너에는 애플리케이션에 필요한 전체 키트가 포함되어 있으므로 애플리케이션을 격리된 방식으로 실행할 수 있습니다. 예를 들어, 이 이미지가 docker run 명령으로 실행될 때 NGINX SERVER가 포함된 Ubuntu OS 이미지가 있다고 가정하면 컨테이너가 생성되고 NGINX SERVER가 Ubuntu OS에서 실행됩니다.

도커 허브란 무엇인가요?

Docker Hub는 리포지토리 서비스이며 사람들이 Docker 컨테이너 이미지를 푸시하고 인터넷을 통해 언제 어디서나 Docker Hub에서 Docker 컨테이너 이미지를 가져오는 클라우드 기반 서비스입니다. 일반적으로 이미지를 쉽게 찾고 재사용할 수 있습니다. Docker 이미지를 저장하고 공유할 수 있는 개인용 또는 공용 레지스트리로 이미지를 푸시할 수 있는 등의 기능을 제공합니다.

DevOps팀은 주로 Docker Hub를 사용합니다. 오픈 소스 도구이며 모든 운영 체제에서 무료로 사용할 수 있습니다. 이는 이미지를 저장하고 필요할 때 이미지를 가져오는 저장소와 같습니다. Docker Hub에서 이미지를 푸시/풀하려면 Docker에 대한 기본 지식이 있어야 합니다. Docker 도구의 요구 사항에 대해 논의하겠습니다.

Docker Compose란 무엇입니까?

Docker Compose는 YAML 기반 다중 컨테이너 애플리케이션을 실행합니다. YAML 파일은 컨테이너를 배포하는 데 필요한 모든 구성으로 구성됩니다. 도커 작성 , 이는 다음과 통합됩니다. 도커 스웜 , 컨테이너 구축 및 배포에 대한 지침을 제공합니다. Docker Compose를 사용하면 각 컨테이너가 단일 호스트에서 실행되도록 구성됩니다.

Docker Desktop을 다운로드하는 방법은 무엇입니까?

Docker Desktop은 Docker 컨테이너, Docker 이미지 및 Docker 네트워크에서 작업할 수 있는 GUI를 제공합니다. Docker Desktop은 Docker Engine, Docker CLI, Docker Compose, 쿠버네티스, 애플리케이션을 보다 사용자 친화적으로 만드는 컨테이너 형태로 애플리케이션을 구축, 배송 및 실행하는 데 필요한 기타 도구입니다. Docker Desktop 설치 방법에 대한 자세한 내용은 다음을 참조하세요. Docker 데스크탑 샘플 이미지.

도커 명령

필수 docker 명령을 도입함으로써 docker는 컨테이너 관리 프로세스를 간소화하는 강력한 소프트웨어가 되었습니다. 이는 원활한 개발 및 배포 워크플로를 보장하는 데 도움이 됩니다. 다음은 일반적으로 사용되는 일부 docker 명령입니다.

  • 도커 실행: 런타임 옵션과 명령을 지정하여 이미지에서 컨테이너를 시작하는 데 사용됩니다.
  • 도커 풀: Docker Hub와 같은 컨테이너 레지스트리에서 로컬 머신으로 컨테이너 이미지를 가져옵니다.
  • 도커 ps : 컨테이너 ID, 사용된 이미지, 상태 등 중요한 정보와 함께 실행 중인 컨테이너를 표시하는 데 도움이 됩니다.
  • 도커 중지 : 실행 중인 컨테이너를 중지하고 컨테이너 내의 프로세스를 정상적으로 종료하는 데 도움이 됩니다.
  • 도커 시작: 중지된 컨테이너를 다시 시작하고 이전 상태에서 작업을 재개하는 데 도움이 됩니다.
  • 도커 로그인: 개인 저장소에 액세스할 수 있도록 도커 레지스트리에 로그인하는 데 도움이 됩니다.

docker 명령에 대한 자세한 내용은 다음을 참조하세요. Docker – 명령 명령 .

자바 인스턴스

도커 엔진

컨테이너를 호스팅하는 소프트웨어의 이름은 Docker Engine입니다. Docker 엔진은 클라이언트-서버 기반 애플리케이션입니다. Docker 엔진에는 3가지 주요 구성요소가 있습니다.

  1. 섬기는 사람: Docker에서 Docker 이미지, 컨테이너, 네트워크 및 볼륨을 생성하고 관리하는 역할을 담당합니다. 이를 데몬 프로세스라고 합니다.
  2. REST API : 애플리케이션이 서버와 상호 작용하는 방법을 지정하고 수행할 작업을 지시합니다.
  3. 고객: 클라이언트는 docker 명령을 사용하여 Docker와 상호 작용할 수 있게 해주는 docker 명령줄 인터페이스(CLI)입니다.

도커를 사용하는 이유는 무엇입니까?

Docker를 사용하면 애플리케이션과 해당 종속성을 패키징할 수 있으므로 더 가볍고 더 안정적으로 코드를 더 빠르게 제공할 수 있습니다. Docker는 프로덕션 환경에서 애플리케이션을 매우 간단하게 실행할 수 있도록 해줍니다. Docker 엔진이 머신에 설치된 경우 Docker 컨테이너는 플랫폼 독립적일 수 있습니다.

  • 자원 효율성 : Docker는 단일 호스트에서 여러 컨테이너를 실행하여 리소스 활용도를 극대화하는 데 도움이 됩니다. 인프라 비용을 절감하고 효율성을 높이는 데 도움이 됩니다.
  • 버전 관리: 애플리케이션 및 해당 종속성에 대한 버전 관리를 단순화하여 일관성을 보장하고 팀 전체의 협업을 더 쉽게 만듭니다.
  • 마이크로서비스 민첩성: 이를 통해 마이크로서비스 아키텍처를 채택하여 확장성, 유연성, 결함 격리, 민첩한 애플리케이션 개발을 촉진할 수 있습니다.

AWS용 도커란 무엇입니까?

Docker는 컨테이너 형태로 애플리케이션을 실행하는 가장 강력한 도구입니다. Docker 컨테이너는 무게가 가벼우며 모든 운영 체제에서 실행될 수 있습니다.

AWS는 Amazon Elastic Container Service( 아마존 ECS ) Docker 컨테이너를 배포, 확장 및 관리할 수 있는 완전 관리형 컨테이너 서비스입니다. Amazon ECS는 성능면에서 가장 안정적인 플랫폼이며 로드 밸런싱, 서비스 검색, 컨테이너 상태 모니터링과 같은 다른 AWS 서비스와 통합될 수도 있습니다. 자세히 알아보려면 Amazon Elastic Container Service(Amazon ECS) .

Docker 컨테이너와 가상 머신의 차이점

Docker 컨테이너와 가상 머신의 차이점은 다음과 같습니다.

도커 컨테이너

가상 머신

Docker 컨테이너에는 애플리케이션 자체와 함께 바이너리, 라이브러리 및 구성 파일이 포함되어 있습니다.

VM(가상 머신)은 하이퍼바이저에서 실행되므로 여러 가상 머신이 자체 운영 체제와 함께 단일 머신에서 실행될 수 있습니다.

여기에는 각 컨테이너에 대한 게스트 OS가 포함되어 있지 않으며 기본 OS 커널에 의존하므로 컨테이너가 가볍습니다.

각 VM에는 애플리케이션 및 필수 바이너리와 함께 자체 운영 체제 복사본이 있으므로 크기가 훨씬 커지고 더 많은 리소스가 필요합니다.

컨테이너는 동일한 호스트 OS의 다른 컨테이너와 리소스를 공유하고 OS 수준 프로세스 격리를 제공합니다.

하드웨어 수준의 프로세스 격리를 제공하고 부팅 속도가 느립니다.

우분투에 도커 설치

다음 단계는 Ubuntu에 Docker를 설치하는 방법을 안내합니다.

np.linspace

1단계: 이전 버전의 Docker 제거

  • 이전 버전의 Docker 소프트웨어를 제거하려면 다음 명령을 실행하십시오.
$ sudo apt-get remove docker docker-engine docker.io containerd runc>

2단계: Docker 엔진 설치

  • Docker 엔진 설치에는 다음 명령이 사용됩니다.
$ sudo apt-get update   $ sudo apt-get install   ca-certificates   curl   gnupg   lsb-release $ sudo mkdir -p /etc/apt/keyrings $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg $ echo   'deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu   $(lsb_release -cs) stable' | sudo tee /etc/apt/sources.list.d/docker.list>/dev/null $ sudo apt-get 업데이트 $ sudo apt-get 설치 docker-ce docker-ce-cli 컨테이너d.io docker-compose-plugin $ sudo groupadd docker $ sudo usermod -aG docker $USER>

3단계: Docker 설치 확인

  • 다음 명령을 사용하여 컨테이너를 실행하여 시스템에 docker가 성공적으로 설치되었는지 확인합니다.
$ sudo docker run hello-world>

우분투에서의 도커 설치에 대한 자세한 내용은 다음을 참조하세요. 기사

샘플 예: Docker를 사용하여 애플리케이션 컨테이너화

다음 단계는 Docker를 사용하여 애플리케이션을 컨테이너화하는 방법을 안내합니다.

1단계: Dokcerfile 및 Python 애플리케이션 생성

  • 2개의 파일(Dockerfile 및 main.py 파일)이 포함된 폴더를 만듭니다.

2단계: Python 코드 개발

  • 아래 코드로 main.py를 편집하거나, 자신만의 Python 코드를 개발해 볼 수도 있습니다.
파이썬
#!/usr/bin/env python3 print('Docker and GFG rock!')>

3단계: Dockerfile 개발

  • Dockerfile 개발을 위한 아래 지침에 따라 Dockerfile을 편집합니다.
FROM python:latest COPY main.py / CMD [ 'python', './main.py' ]>

4단계: Docker 이미지 생성

  • main.py 파일과 Dockerfile을 만들고 편집한 후 다음 명령을 실행하여 애플리케이션이 포함된 이미지를 만듭니다.
$ sudo docker build -t python-test .>
  • '-t' 옵션을 사용하면 이미지 이름을 정의할 수 있습니다. 'python-test'는 이미지에 대해 선택한 이름입니다.

5단계: Docker 컨테이너 실행

  • 이미지가 생성되면 코드를 시작할 준비가 된 것입니다.
$ sudo docker run python-test>

애플리케이션의 컨테이너화에 대해 자세히 알아보려면 다음을 참조하세요. 기사

Docker Hub에 이미지를 푸시하는 샘플 예

다음 단계는 Dockerhub에 이미지를 푸시하는 방법을 안내합니다.

1 단계: Docker Hub에서 계정을 생성하거나, 이미 계정이 있는 경우 기존 계정을 사용하세요.

2 단계: Create Repository 버튼을 클릭하고 파일 이름을 입력한 후 Create를 클릭합니다.

3단계: 이제 이미지에 태그를 지정하고 방금 만든 Docker Hub 저장소에 푸시하겠습니다.

  • 이제 아래 명령을 실행하여 Docker 이미지를 나열하십시오.
$ docker images>
  • 위의 내용은 우리에게 이러한 결과를 제공합니다
REPOSITORY TAG IMAGE_ID CREATED SIZE afrozchakure/python-test latest c7857f97ebbd 2 hours ago 933MB>
  • 이미지 ID는 이미지에 태그를 지정하는 데 사용됩니다. 이미지에 태그를 지정하는 구문은 다음과 같습니다.
docker tag /python-test:latest $ docker tag c7857f97ebbd afrozchakure/python-test:latest>

4단계: Docker Hub 저장소에 이미지 푸시

$ docker push afrozchakure/python-test>

dockerhub에 이미지를 게시하는 방법에 대해 자세히 알아보려면 다음을 참조하세요. 기사

Docker Hub에서 이미지 가져오기 및 실행

1. 로컬 시스템에서 특정 이미지의 모든 버전을 제거하기 위해 해당 이미지 ID를 사용합니다.

$ docker rmi -f af939ee31fdc>

2. 이제 이미지를 실행하면 로컬 컴퓨터에 이미지가 없으면 Docker 허브에서 이미지를 가져옵니다.

$ docker run afrozchakure/python-test>

도커의 장점

Docker의 장점은 다음과 같습니다.

  • 이식성: 기본 운영 체제에 관계없이 모든 시스템에서 사용할 수 없는 경량 휴대용 컨테이너를 생성하는 Docker 기능입니다.
  • 격리: 컨테이너를 통한 Docker는 애플리케이션이 서로 독립적으로 실행될 수 있도록 하여 높은 수준의 격리를 제공하여 한 컨테이너가 다른 컨테이너에 영향을 주지 않는 문제를 해결합니다.
  • 재현성: Docker 개발자는 이를 통해 애플리케이션과 해당 종속성을 재사용 가능한 이미지로 쉽게 패키징할 수 있습니다. 개발, 테스트, 프로덕션 환경 전반에서 일관되고 재현 가능한 빌드가 가능합니다.
  • DevOps 통합 : 증가하는 워크로드를 처리하면서 소프트웨어 개발 수명주기 전반에 걸쳐 협업과 자동화를 촉진합니다.

도커의 대안

Docker의 대안은 다음과 같습니다.

  • 차분해진 : 보안 및 호환성에 중점을 둔 Docker 호환 컨테이너 엔진을 제공하며 Docker를 선호하지 않거나 사용할 수 없는 환경에 이상적입니다.
  • 르크트: 단순성, 보안 및 구성 가능성을 위해 설계된 CoreOS에서 개발한 경량 컨테이너 런타임으로 Docker의 컨테이너 런타임에 대한 대안을 제공합니다.
  • LXC(리눅스 컨테이너): 단일 호스트에서 여러 개의 격리된 Linux 시스템(컨테이너)을 실행하기 위한 운영 체제 수준 가상화를 제공하여 특정 사용 사례에 대해 Docker에 대한 경량 대안을 제공합니다.
  • 컨테이너: Docker, Inc.에서 개발한 업계 표준 코어 컨테이너 런타임으로, 컨테이너화된 애플리케이션 구축을 위한 최소한의 안정적인 플랫폼을 제공하며, Kubernetes와 같은 고급 컨테이너 오케스트레이션 시스템을 위해 Docker의 하위 수준 대안으로 자주 사용됩니다.

도커 보안

다음은 Docker 보안에 대한 몇 가지 통찰력입니다.

  • 격리 : Docker 컨테이너는 애플리케이션 실행과 처리를 보장하는 강력한 격리를 제공합니다.
  • 불변의 인프라 : 버전이 제어되는 불변 이미지로 컨테이너가 구축되는 불변 인프라의 사용을 촉진합니다.
  • 자원 제약: 이를 통해 CPU 및 메모리 제한과 같은 컨테이너의 리소스 제약 조건을 정의할 수 있습니다.
  • 보안 검색: 배포하기 전에 컨테이너 이미지에서 알려진 취약점과 맬웨어를 검사할 수 있는 기본 제공 보안 검사 도구를 제공합니다.

결론

지금까지 Docker의 기본 사항, 가상 머신과 Docker 컨테이너의 차이점, Docker의 몇 가지 공통 용어에 대해 배웠습니다. 또한 시스템에 Docker 설치를 진행했습니다. Docker를 사용하여 애플리케이션을 만들고 이미지를 Docker Hub에 푸시했습니다. 마지막으로 로컬 시스템에서 특정 이미지를 제거하고 나중에 이미지가 로컬에 없으면 Docker Hub에서 이미지를 가져오는 방법을 배웠습니다.

도커 – FAQ

Docker Hub란 간단히 말해서 무엇인가요?

Docker Hub는 사용자/개발자가 자신이 만든 시스템 이미지를 저장 및 공유하고 다른 소프트웨어 개발자를 위해 이미지에 쉽게 액세스하고 재사용할 수 있는 공용 레지스트리입니다.

Docker Hub를 사용하려면 무엇이 필요합니까?

Docker Hub를 사용하려면 사용자는 Docker Hub 플랫폼에 계정이 있어야 합니다. Docker Hub에 계정이 없으면 가입하여 계정을 만들 수 있습니다. Docker에 계정이 있으면 Docker Hub에서 이미지를 푸시하고 가져오는 등의 작업을 수행할 수 있습니다.

Docker 로그란 무엇입니까?

Docker 데몬과 Docker 컨테이너는 문제 해결, 애플리케이션 성능 모니터링, Docker 환경 상태에 대한 정보 수집에 도움이 되는 텍스트 메시지 형태로 Docker 로그를 생성합니다.

도커 빌드란 무엇입니까?

Docker 빌드는 Dockerfile을 사용하여 도커 이미지를 빌드하는 데 사용되는 명령입니다.

도커 우분투란 무엇입니까?

Docker Ubuntu는 Ubuntu 기반 운영 체제에서 Docker 서비스를 활용하는 데 사용되는 용어입니다. Docker를 실행하는 것은 널리 사용되는 Linux 배포판 Ubuntu에 가장 적합합니다.