생산 준비 용기 만들기 - 선진 기술
11442 단어 devopsdockerslimlinuxdocker
프로덕션 준비 컨테이너의 경우 컨테이너를 생성할 때 최적화해야 할 세 가지 주요 사항이 있습니다.
"Hello World"노드 개선
Dockerfile
을 예로 든 간단한 팁을 보여 드리겠습니다.js 응용 프로그램.프로덕션 준비 컨테이너 생성 - 기본
마틴 웜스베인・ 6월 3일・ 6 분 읽기
#docker
#beginners
#node
#devops
이러한 기초 지식은 표면에만 닿아도 세 가지 최적화 문제를 해결했다.
좀 더 선진적인 용기 최적화 기술을 살펴봅시다.
문장의 끝에 도착한 열성적인 독자는 보상을 받을 수 있습니다!🎁
알프스 산 사진
작은 용기를 만드는 기술을 찾을 때 가장 먼저 만나는 것은Alpine Linux이다.Alpine Linux는 간단한 시스템을 만드는 것을 목표로 하는 오픈 소스 프로젝트입니다.🦴 개발자가 처음부터 구축할 수 있는 Linux 버전
장점: 알프스 산으로 넘어가는 것은 작은 용기를 얻기 위한 간단한 방법일 수 있다
올바른 경우 Alpine을 사용하여 이미지 크기를 줄이는 것은 매우 간단합니다.일부 애플리케이션의 경우
Dockerfile
에서 기본 이미지를 변경하기만 하면 됩니다.... 에서 오다
FROM node:16.2.0
대상
FROM node:16.2.0-alpine
새로운 이미지를 구축할 때 이전 이미지는 856MB, 새 이미지는 114MB🎉REPOSITORY TAG IMAGE ID CREATED SIZE
cotw-node-alpine latest 2cc7b4a7b09c 2 minutes ago 114MB
cotw-node latest 873fb9fca53a 3 days ago 856MB
간단하죠?그렇게 빠르지 않아요.단점: 현재든 미래든 알프스산 이미지를 사용하면 건설 문제가 발생할 수 있다
알프스 이미지를 사용하면 다음과 같은 매우 간단한 예제 애플리케이션에 다음과 같은 불분명한 문제가 발생하지 않습니다.
너는 반드시 모든 물건을 설치해야 한다
그 작은 기초 이미지들은 반드시 뭔가를 희생해야 한다. 그렇지?Alpine 사용자는 시간대 데이터나 개발 도구를 포함하여 필요한 모든 것을 설치할 것입니다.제품 이미지를 위한 개발 도구가 필요하지 않을 수도 있지만, 대부분의 개발자들은
curl
또는 vim
서버가 없다는 생각은 다리를 건너는 것이다.다른 컴파일러와 패키지 관리자
또한 Alpine Package Keeper 도구 (((
apk
) 를 사용할 것입니다. 더 익숙한 apt
이나 rpm
의존항을 설치할 수 없습니다.차이는 작지만 경계심 없는 개발자를 넘어뜨릴 수도 있다.더 적은 예;문서 수 감소
마지막으로 알핀은 9년이 넘게 존재해 왔지만, 지금은, Ubuntu와 Debian 등 기존 리눅스 버전보다 작고 전문적인 사용자군일 가능성이 높다.본문을 작성할 때 Stack Overflow에 있는
alpine
표기는 1,280 questions 가 아니라 over 54,000 for Ubuntu 밖에 없다는 것이다.다단계 구축
Docker 이미지 크기를 줄이는 방법을 찾을 때 다음 전략은 다단계입니다🏗 건조이런 전략recommended by Docker and many in the Docker community은 실질적으로 두 번의 이미지 메이킹이다.첫 번째 명령은 모든 내용을 포함하는 기본 응용 프로그램 이미지를 구축합니다.두 번째 명령은 기본 이미지를 바탕으로 이미지를 구축하여 필요한 내용만 가져오고 필요하지 않은 내용은 무시합니다.
만약 다단계로 구축된다면 우리의
Dockerfile
는 다음과 같다.이 두 문장FROM
을 주의해라.먼저 응용 프로그램 이미지를 구축한다.두 번째는 필요한 파일을 이 이미지에서 두 번째 생산에 더 적합한 버전으로 복사합니다.FROM node:16.2.0-alpine as builder
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm ci
COPY app.js ./
FROM node:16.2.0-alpine
WORKDIR /usr/src/app
COPY --from=builder /usr/src/app .
EXPOSE 3000
USER node
CMD ["node","app.js"]
장점: Dev 및 Prod 이미지는 개별적으로 구성할 수 있음
Docker Compose와 결합할 때 이런 방법은 개발자에게 유연한 개발 환경을 제공하고 생산 이미지의 팽창을 감소시킨다.초기 이미지를 개발/테스트에 사용하고 최종 버전을 만드는 데 사용하십시오.다단계 구축은 특히 Go 용기에 적합하여 이미지 크기를 현저히 줄였지만 정적 노드에도 적용된다.js 및 React 유형의 응용 프로그램입니다.
단점: 복잡성을 증가시켰다.용례에 특정하다
다단계 구축은 여전히 상대적으로 새롭다🌱 현장에서요.용기에 익숙하지 않은 대부분의 개발자들은 무엇을 최종 생산 이미지로 복제하고 무엇을 남기는 것이 진입의 주요 장애물인지 안다.이 밖에도 이런 모델은 도전에 부딪힐 수 있다.
우리는 이미 알프스 산의 이미지를 사용하고 있기 때문에 우리의'Hello World'예시에 있어 사이즈 절약은 상대적으로 작다.검증된 React 또는 Vue 애플리케이션에서 더 큰 수익을 얻을 수 있습니다.
REPOSITORY TAG IMAGE ID CREATED SIZE
cotw-node-multistage latest 52bc33d14a87 3 minutes ago 114MB
cotw-node-alpine latest 2cc7b4a7b09c 4 days ago 114MB
cotw-node latest 873fb9fca53a 7 days ago 856MB
개발 도구 및 릴리스
매일 새로운 도구가 나타나는 몇 가지 도구가 있습니다. 그림을 쉽게 만들 수 있도록 돌아가거나 자동화하기
Dockerfile
를 원합니다.Buildpacks는 이들 기술 중 가장 성숙한 것으로 Pack 또는 Waypoint 등의 도구를 통해 사용할 수 있다.Heroku, Google, Paketo 등 여러 가지 출처의 빌더 옵션이 있습니다. 각각의 옵션은 사용자가 사용할 때 약간 다른 개발 체험과 최종 이미지를 얻을 수 있도록 합니다.
$ pack build cotw-node-bp-google --builder gcr.io/buildpacks/builder:v1
$ pack build cotw-node-bp-heroku --builder heroku/buildpacks:18
$ pack build cotw-node-bp-pb-base --builder paketobuildpacks/builder:base
$ pack build cotw-node-bp-pb-full --builder paketobuildpacks/builder:full
장점: 그들이 일할 때 그들은 일한다
어떤 경우에 BuildPack은 창작의 고통을 줄일 수 있고 프로그램의 용기 이미지만 만들면 된다.패키지 도구는 원본 디렉터리에서 '유사한 프로그램' 파일을 찾고, 거기에 어떤 종류의 프로그램이 있는지, 용기화하는 방법을 자동으로 계산합니다.우리의 노드 예시에서, 그것은
Dockerfile
을 보았고, 우리가 노드가 있다고 정확하게 가정했다.js 응용 프로그램.단점: 그들이...
BuildPack은 Docker 컨테이너의 이 방법이 비교적 새로운 것을 고려하여 많은 문제점을 가지고 있습니다.비표준 응용 프로그램이나 운영 체제가 어려울 수 있습니다. 새로운 Silicon Macbook Pros에서 성공적으로 실행할 때 문제가 발생했습니다.생성된 이미지의 변화는 매우 크다. 우리는 예시에서 200MB에서 800MB의 범위를 보았는데, 결과는 종종 다른 기술로 얻은 결과보다 낮다.
Dockerlim으로 자동화
DockerSlim개원 프로젝트는 Slim.AICTO가 2015년에 창설하여 자동화 용기 최적화의 한 방식으로 한다.
도크스림 / 도크스림
Dockerslim(docker slim): docker 컨테이너 이미지의 어떤 내용도 변경하지 말고 30배(컴파일 언어, 심지어 그 이상)로 줄여서 안전하게 하세요!(무료 및 오픈소스)
용기 체험을 최적화하세요.당신의 용기를 더 좋고, 더 작고, 더 안전하게, 더 적게 만들 수 있습니다. (무료와 소스 오픈!)
Docker 컨테이너 이미지의 내용을 변경하지 않고 보안을 위해 30배 축소하십시오.그러나 이미지를 최적화하는 것은 유일하게 할 수 있는 일이 아니다.그것은 또한 당신이 더 좋은 용기 이미지를 이해하고 창작하는 데 도움을 줄 수 있다.
네가 하고 있는 일을 계속해라.어떤 변화도 할 필요가 없다.원하는 기본 그림을 사용하십시오.필요한 패키지 관리자를 사용합니다.수동으로 Dockerfile을 최적화하는 것은 걱정하지 마십시오.작은 용기 그림을 얻기 위해 도구와 작업 흐름을 버려서는 안 된다.
Seccomp 및 AppArmor 보안 프로파일을 수동으로 만들 염려는 없습니다.Linux 시스템 호출, Seccomp, AppArmor 분야의 전문가가 되지 않아도 안전한 용기를 가질 수 있습니다.설령 그것에 대해 충분히 알고 있다 하더라도, 응용 프로그램 행동에 대해 역공정을 하는 데 시간을 낭비할 것이다.
View on GitHub
다운로드하고 실행하기만 하면 Dockerlim은 이미지를 검사하고 필요한 의존항만 사용하여 재구성하며 원본 이미지처럼 실행할 수 있는 새 이미지를 제공합니다.
장점: 자동
Docker Slim은 당신이 좋아하는 기본 이미지 (예를 들어 Ubuntu나 Debian) 를 사용할 수 있다는 것을 의미하며, Docker Slim은 생산 과정에서 불필요한 도구와 파일을 삭제할 것을 걱정합니다.가장 좋은 것은 Dockerlim이 다른 어떤 기술과도 함께 사용할 수 있다는 것이다.테스트를 거친 후, 이것은 용기의 자동 축소를 실현할 수 있으며, 사이즈의 감소는 더욱 빠른 구축 시간과 안전성을 가져올 수 있습니다.
단점: 학습 곡선이 가파르다
어떤 소스 오픈 소프트웨어와 마찬가지로, DockerSlim은 특히 평범하지 않은 응용 프로그램에서 작업을 시작하는데 시간이 좀 걸릴 수 있습니다.이것은 웹 스타일의 응용 프로그램, 마이크로 서비스, 그리고 HTTP/HTTPS 포트를 정의한 API에 가장 적합하다. 센서는 이 포트를 찾아서 용기 내부를 관찰할 수 있다.
최상의 효과를 얻기 위해서는 이미지를 최적화하는 데 사용할 수 있는 다양한 명령 표지와 take a look at the examples for whatever framework you're using를 알아보는 데 시간이 좀 걸립니다.
도크스림
/
예.
Dockerlim의 다양한 언어와 스택에 대한 소규모 응용 프로그램 예
Dockerlim에 연결
active DockerSlim Discord channel의 전문가 팀이 있는데, 문제가 발생했을 때 분류해 줄 수 있다.
다음은 SlimDevOps Twitch 📡 channel입니다. 저는 Dockerlim과 Slim을 이용하여 더욱 깊이 있는 컨테이너 최적화를 진행할 것입니다.인공지능 플랫폼은 미래의 게시물과 생방송 흐름 속에 있다.
독보적으로 날씬하다.인공지능 조기 접근
친애하는 독자님, 이 글을 다 읽으셨다면 보상을 드리겠습니다.암페어early access invite to the Slim.AI private beta🙂
Reference
이 문제에 관하여(생산 준비 용기 만들기 - 선진 기술), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/wimpress/creating-production-ready-containers-advanced-techniques-4jm3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)