>  기사  >  백엔드 개발  >  PHP Docker의 원리와 기능에 대한 매우 상세한 분석

PHP Docker의 원리와 기능에 대한 매우 상세한 분석

王林
王林앞으로
2019-09-04 11:43:293766검색

PHP Docker의 원리와 기능에 대한 매우 상세한 분석

한 문장 요약:

Docker는 격리와 같은 컨테이너 원칙입니다. Docker는 컨테이너 내에서 모든 애플리케이션을 더 잘 실행할 수 있도록 일련의 애플리케이션 패키징, 전송 및 배포 방법을 제공합니다. Docker는 휴대용 애플리케이션 컨테이너입니다.

Docker는 Node.js 웹사이트 서버, API 서버, 데이터베이스 등 다양한 환경을 빠르게 생성합니다.

1. Docker의 장점은 무엇인가요?

1-1. 신속하게 격리 환경 구축: 애플리케이션마다 애플리케이션 환경이 다를 수 있습니다. 예를 들어 .net에서 개발한 웹사이트와 PHP로 개발한 웹사이트는 서로 다른 소프트웨어를 사용하는 경우 디버깅을 수행합니다. 서버에서 작업하는 데 시간이 오래 걸리고 매우 번거로우며 일부 충돌이 발생할 수 있습니다. 예를 들어 IIS와 Apache 액세스 포트 간에 충돌이 있습니다. 이때 .net으로 개발한 웹사이트와 PHP로 개발한 웹사이트를 분리해야 합니다. 일반적으로 서버에 서로 다른 가상 머신을 생성하고 서로 다른 가상 머신에 서로 다른 애플리케이션을 배치할 수 있지만 가상 머신 오버헤드는 상대적으로 높습니다. Docker는 가상 머신 격리 애플리케이션 환경의 기능을 실현할 수 있으며, 가상 머신보다 오버헤드가 작습니다.

1-2. 개발 환경 캡슐화 및 환경 버전 문제 해결: 소프트웨어를 개발할 때 Ubuntu를 사용하지만 운영 및 유지 관리는 개발 환경에서 소프트웨어를 이전할 때 Centos입니다. 프로덕션 환경 Ubuntu를 CentOS로 이전할 때 몇 가지 문제가 발생합니다. 예를 들어 Ubuntu에서만 지원되고 CentOS에서는 지원되지 않는 특수 버전의 데이터베이스가 있는 경우, 운영 및 유지 관리에서는 이러한 문제를 해결하는 방법을 찾아야 합니다. . 이때 도커가 있다면 개발환경을 직접 캡슐화해 운영 및 유지관리로 전달할 수 있고, 운영 및 유지관리는 자신에게 준 도커를 직접 배포할 수 있다. 배포도 빠릅니다.

1-3. 메모리 활용도: 서버 로드 측면에서 가상 머신을 단독으로 열면 가상 머신이 여유 메모리를 차지하게 되며, Docker를 배포하면 이 메모리가 활용됩니다.

2. 도커란? 도커는 무엇을 할 수 있나요?

Docker의 아이디어는 컨테이너에서 비롯되었습니다. 컨테이너는 어떤 문제를 해결하나요? 대형 선박에서는 화물을 깔끔하게 정리할 수 있습니다. 그리고 모든 종류의 상품은 컨테이너로 표준화되어 있으며 컨테이너는 서로 영향을 미치지 않습니다. 그렇다면 과일을 운반하기 위한 배나 화학 물질을 운반하기 위한 배는 필요하지 않습니다. 이 물건들을 컨테이너에 잘 포장하면 큰 배에 실을 수 있어요.

docker도 비슷한 개념입니다. 이제 클라우드 컴퓨팅이 대중화되고 있으며, 클라우드 컴퓨팅은 대형 화물선과 같습니다. 도커는 컨테이너입니다.

2-1. 애플리케이션마다 애플리케이션 환경이 다를 수 있습니다. 예를 들어 .net에서 개발한 웹사이트와 PHP로 개발한 웹사이트는 서로 다른 소프트웨어를 사용하는 경우 디버깅에 오랜 시간이 걸립니다. 매우 번거롭고 충돌이 발생할 수 있습니다. 예를 들어 IIS와 Apache 액세스 포트 간에 충돌이 있습니다. 이때 .net으로 개발한 웹사이트와 PHP로 개발한 웹사이트를 분리해야 합니다. 일반적으로 서버에 서로 다른 가상 머신을 생성하고 서로 다른 가상 머신에 서로 다른 애플리케이션을 배치할 수 있지만 가상 머신 오버헤드는 상대적으로 높습니다. Docker는 가상 머신 격리 애플리케이션 환경의 기능을 실현할 수 있으며, 가상 머신보다 오버헤드가 작습니다.

2-2. 소프트웨어를 개발할 때 Ubuntu를 사용하지만 운영 및 유지 관리는 centos입니다. 개발 환경에서 프로덕션 환경으로 소프트웨어를 이전할 때 Ubuntu에서 centos로 변환하는 데 문제가 있습니다. 예를 들어, Centos가 아닌 Ubuntu에서만 지원되는 특수 버전의 데이터베이스가 있습니다. 전송 프로세스 중에 운영 및 유지 관리는 이러한 문제를 해결하는 방법을 찾아야 합니다. 이때 도커가 있다면 개발환경을 직접 캡슐화해 운영 및 유지관리로 전달할 수 있고, 운영 및 유지관리는 자신에게 준 도커를 직접 배포할 수 있다. 배포도 빠릅니다.

2-3. 서버 로드 측면에서 가상 머신을 단독으로 열면 가상 머신이 여유 메모리를 차지하게 되며, 도커를 배포하면 이 메모리가 활용됩니다.

간단히 말하면 docker는 컨테이너 원리입니다.

3. 개발자는 무엇에 Docker를 사용할 수 있나요?

Docker는 요즘 많은 주목을 받고 있지만, 여전히 Docker와 일반 개발자의 관계가 무엇인지 이해하지 못하기 때문에 많은 사람들이 그 명성에 부응하기 어렵다고 생각합니다. 많은 개발자들은 Docker가 자신과 거리가 멀다고 생각합니다. Docker는 프로덕션 환경의 도구이며 그것과 아무 관련이 없습니다. 일반 개발자로서 자체 개발에 Docker를 사용하는 방법을 알아내는 데도 오랜 시간이 걸렸습니다. 솔직히 아직은 배우는 과정이에요.

이 기사에서는 Docker 사용 사례 목록을 제공하여 Docker를 이해하고 사고를 촉발하는 데 도움이 되기를 바랍니다. 이 기사에서는 일반 개발자가 일상적으로 Docker를 적용하는 방법에 대해서만 설명하고 완전한 솔루션을 제공하지는 않습니다.

사용 사례를 소개하기 전에 "Docker는 휴대용 애플리케이션 컨테이너입니다."라는 문장을 기억해 주시길 바랍니다. Docker가 "휴대용 컨테이너"라는 말이 무엇을 의미하는지 알 필요는 없지만 Docker가 일상 생활에서 엄청난 효율성 향상을 가져올 수 있다는 점은 알아야 합니다.

컨테이너에서 자체 애플리케이션을 실행해야 하는 경우(물론 모든 애플리케이션이 가능함) Docker는 애플리케이션 실행을 위한 기본 시스템으로 기본 시스템 이미지를 제공합니다. 즉, Linux 시스템의 모든 애플리케이션은 Docker에서 실행될 수 있습니다.

Docker에서 데이터베이스를 실행할 수 있나요? 확신하는.
Docker 내에서 Node.js 웹 서버를 실행할 수 있나요? 확신하는.
Docker 내에서 API 서버를 실행할 수 있나요? 확신하는.

Docker는 애플리케이션이 무엇인지, 무엇을 하는지 상관하지 않습니다. Docker는 컨테이너 내에서 모든 애플리케이션을 더 잘 실행할 수 있도록 일련의 애플리케이션 패키징, 전송 및 배포 방법을 제공합니다.

4. 새로운 소프트웨어를 사용해 보세요

개발자에게는 매일 태어나고 시도해야 할 온갖 새로운 기술이 있지만, 개발자가 일일이 환경을 설정하고 구현할 수는 없습니다. 하나. 시간은 소중하며 Docker 덕분에 하나 또는 몇 가지 명령으로 환경을 설정할 수 있습니다. Docker에는 소프트웨어를 얻는 확실한 방법이 있습니다. Docker 배경은 자동으로 환경 이미지를 얻고 환경을 실행합니다.
Docker는 신기술 환경 구축에만 사용되는 것이 아닙니다. 노트북에서 MySQL 데이터베이스나 Redis 메시지 대기열을 빠르게 실행하려는 경우 Docker를 사용하면 매우 쉽게 실행할 수 있습니다. 예를 들어 Docker는 MySQL 데이터베이스를 실행하는 데 단 하나의 명령만 필요합니다:

docker run -d -p 3306:3306 tutum/mysql。

번역가의 참고: MySQL 데이터베이스는 명령을 사용하면 매우 빠르게 설치할 수 있지만 최신 기술이나 매우 복잡한 기술을 사용하는 경우 Docker를 사용하는 것이 문제가 됩니다. Gitlab과 같은 매우 좋은 선택입니다. 일반 사용자가 Gitlab 플랫폼을 구축하는 데 약 하루가 걸리는 반면 Docker에는 하나의 명령만 필요합니다.

5. Linux 스크립트 배우기

물론 이 이유가 이상해 보일 수도 있지만, Linux 운영체제와 Shell 스크립트에 익숙하지 않은 사람들에게는 정말 좋은 기회입니다. 이 기사가 Linux에 관한 것은 아니지만 Linux의 중요성은 여전히 ​​자명합니다. Windows를 사용하는 경우 제안 사항을 하나 드리겠습니다. 클라우드 호스팅 제공업체에서 클라우드 호스트를 임대하세요. CoreOS 시스템 클라우드 호스트를 사용하는 것이 좋습니다. 이것이 전문적인 Linux 운영 및 유지 관리 전문가가 될 수는 없지만 Linux의 기본 사항을 빠르게 배우고 명령줄 작업에 빠져들고 천천히 Linux에 익숙해지고 감사하게 될 것입니다.

6. 리소스 활용도 향상

가상 머신의 세분성은 "가상 머신"인 반면 Docker의 세분성은 "제한된 애플리케이션"입니다. 이에 비해 Docker는 더 적은 메모리를 차지합니다.
저에게 있어 이것이 Docker의 장점입니다. 컴퓨터에서 여러 Docker 애플리케이션을 자주 실행하기 때문에 Docker를 사용하는 것이 가상 머신을 사용하는 것보다 더 간단하고 편리하며, 더 세밀하고 컨테이너 상태를 지속적으로 추적할 수 있습니다.

7. 마이크로서비스를 위한 맞춤화

기술 뉴스에 관심을 갖고 계셨다면 "마이크로서비스"라는 개념을 들어보셨을 것입니다. Docker는 마이크로서비스와 잘 결합될 수 있습니다. 개념적으로 마이크로서비스는 전체 애플리케이션 기능 세트의 일부를 제공하는 컨테이너이며, Docker는 개발, 테스트 및 배포 중에 마이크로서비스 컨테이너 역할을 할 수 있습니다. 프로덕션 환경에서도 Docker에 마이크로서비스를 배포할 수 있습니다.

8. 클라우드 서비스 제공업체 간 포팅

대부분의 클라우드 호스팅 제공업체는 이미 Docker를 완벽하게 지원합니다. 개발자 입장에서는 클라우드 서비스 제공업체를 쉽게 전환할 수 있음을 의미합니다. 물론, 로컬에서 실행 환경을 구성하고 클라우드 호스트에서 구성할 필요도 없습니다. 실행 환경을 한 번 구성하십시오. 표준 운영 환경으로 Docker(여기서는 Docker, 저기서는 Docker)를 포괄적으로 배포하면 애플리케이션이 온라인일 때 작업 부하를 크게 줄이고 버그를 생성할 수 있습니다.

9、API

API는 애플리케이션 간의 접착제입니다. 자격을 갖춘 개발자는 다른 사람이 제공한 REST API를 사용했거나 직접 REST API를 개발한 적이 있어야 합니다. 클라이언트이든 API 제공자이든 개발 전에 공개 API 인터페이스 세트를 정의하고 코딩하기 전에 문서화해야 한다는 점을 지적해야 합니다. 서버와 클라이언트가 공동 개발되는 경우 일반적으로 서버는 고정된 문자열을 반환할 수 있는 API 인터페이스를 먼저 구현한 다음 향후 개발에서 천천히 API 기능을 구현합니다.
여기서 도커가 악용됐다고 생각하는 분들도 계시겠지만, Sample.json과 같은 파일을 이용해 가상 API를 구현할 수도 있지만, 프론트엔드와 백엔드 개발 시 API 문제를 더 잘 해결할 수 있는 아래 예시가 있습니다. - 이별 끝.
무슨 말인지 더 잘 설명하기 위해 JSON 데이터를 제공하기 위한 REST API인 JSON 서버를 예로 들어 보겠습니다. 이 컨테이너를 사용해 본 사람이라면 이렇게 사용하기 쉬운 Docker JSON Server가 있으므로 Docker를 사용하지 않을 이유가 없다는 것을 알 것입니다.

관련 질문이 더 필요하시면 PHP 중국어 웹사이트를 방문하세요: PHP 비디오 튜토리얼

위 내용은 PHP Docker의 원리와 기능에 대한 매우 상세한 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제