Udacity | SUSE: 편성 - 선착장 일꾼
This is the fifth article in the series, Udacity: SUSE Cloud Native Foundations. In this third installment, you'll get to learn what containers are, specifically Docker. Discussed as well is Kubernetes which is used for orchestrating containers.
This section is actually part of a single lesson, Container Orchestration using Kubernetes, but since it'll be too long, I've decided to put Kubernetes on the next article.
일단 응용 프로그램이 개발되면 다음 단계는 이를 포장하고 컨테이너화하며 마지막으로 배치하는 것이다.여기에서, 우리는 Docker 용기를 사용하여 프로그램을 포장하고, 대규모로 용기를 관리하기 위해 Kubernetes 그룹을 배치할 것입니다.
VM에서 컨테이너로
응용 프로그램을 배치하는 전통적인 방식은 가상 기기나 가상 기기를 통과하는 것이다.응용 프로그램은 운영체제 파일 시스템, 운영체제 자원, 설치된 기본 패키지를 사용합니다.
가상 머신은 인프라를 최대한 활용하는 데 매우 효율적이다.우리는 물리적 시스템에서 하나의 응용 프로그램을 실행할 필요가 없고, 물리적 시스템의 가상 시스템 모니터링 프로그램에서 여러 개의 가상 시스템을 실행할 수 있다.
비록 그것이 유용하다는 것이 증명되었지만, 그것도 자신의 결점이 있다.각 가상 시스템은 자체 운영 체제를 필요로 합니다.만약에 가상 기기 모니터링 프로그램에 세 개의 가상 기기가 있다면 이것은 가상 기기 모니터링 프로그램에 세 개의 운영체제가 운행하고 있다는 것을 의미한다.운영체제에 모든 가상 기기가 필요로 하는 라이브러리를 더하면 밑바닥 기기의 큰 공간을 차지할 것이다.
입력 컨테이너.서버의 사용을 더욱 최적화하기 위해 용기를 사용하여 운영체제를 가상화할 수 있다.컨테이너를 통해 우리는 복제된 운영체제를 실행할 필요가 없다.우리가 기계에서 몇 개의 용기를 운행하든지 간에, 그들은 물리 기계 자체의 같은 하부 조작 시스템을 사용할 것이다.
컨테이너의 생성과 관리를 편리하게 하기 위해서, 우리는 컨테이너 엔진 도구, 예를 들어 Docker를 사용할 수 있다.전체적으로 컨테이너는 다음과 같다.
부두 노동자
일단 네가 이 소프트웨어를 실현한다면 다음 단계는 그것을 발표하는 것이다.이러한 단계는 주로 다음과 같습니다.
여기에 세 개의 docker 대상이 있습니다:
docker 파일, docker 이미지, docker 등록표.
Docker 파일
이것은 그림을 만드는 방법에 대한 단계별 설명입니다
코드 및 의존항을 어떻게 포장하는지에 대한
완전한 설명 목록은 공식 Docker website에서 찾을 수 있다.다음은 널리 사용되는 몇 가지 설명입니다.
FROM - 기본 이미지 설정
실행 - 명령 실행
복제 및 추가 - 호스트에서 컨테이너로 파일 복제
명령이 실행될 때 기본값은 1041810입니다
노출 - 노출 포트
For the exercises, you can check out the next article in this series
다음은 Python hello world 응용 프로그램을 패키지화하는 것을 목표로 하는 Dockerfile의 예입니다.
# set the base image. A Python base image is used
FROM python:3.8
# set a key-value label for the Docker image
LABEL maintainer="Eden Jose"
# All the files in the current directory is copied
# to the `/app` directory in the container
COPY . /app
# defines the working directory within the container
WORKDIR /app
# run commands within the container.
# Here we install dependencies defined in the requirements.txt file.
RUN pip install -r requirements.txt
# provide a command to run on container start.
# For example, start the `app.py` application.
CMD [ "python", "app.py" ]
Docker 이미지
docker 파일을 만든 후 docker 이미지를 만들 수 있습니다.
# build an image
# OPTIONS - optional; define extra configuration
# PATH - required; sets the location of the
# Dockefile and any referenced files
docker build [OPTIONS] PATH
# Where OPTIONS can be:
-t, --tag - set the name and tag of the image
-f, --file - set the name of the Dockerfile
--build-arg - set build-time variables
build
명령에 대해 유효한 옵션을 모두 찾으려면 다음과 같이 하십시오.docker build --help
예를 들어, 현재 디렉토리의 Dockerfile에서 Python Hello World 응용 프로그램 이미지를 구축하려면 다음 명령을 사용합니다.docker build -t python-helloworld .
또한 다른 디렉토리(예: lesson1/python-app
디렉토리)에 있는 동일한 응용 프로그램을 구축할 수 있습니다.docker build -t python-helloworld lesson1/python-app
사용 가능한 모든 이미지 나열docker images
로컬에서 이미지를 테스트하려면 docker 이미지를 사용하여 컨테이너를 실행합니다.docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
# OPTIONS - optional; define extra configuration
# IMAGE - required; provides the name of the image to be executed
# COMMAND and ARGS - optional; instruct the container to run specific commands when it starts
# Where OPTIONS can be:
-d, --detach - run in the background
-p, --publish - expose container port to host
-it - start an interactive shell
이 명령에 대한 모든 유효한 옵션 찾기docker run --help
예를 들어, 예제 Python hello world 응용 프로그램을 실행하는 데 사용할 이미지는 다음과 같습니다.docker run -d -p 5111:5000 python-helloworld
Docker 컨테이너 포트(5000)를 호스트(5111)나 로컬 시스템의 포트에 연결합니다.응용 프로그램을 보려면 브라우저에서 http://127.0.0.1:5111/
을 엽니다.5000은 응용 프로그램이 전송 요청을 탐지하는 용기 포트입니다.실행 중인 모든 용기를 열거하려면
docker ps
Docker 컨테이너 로그를 검색하려면 다음 명령을 사용할 수 있습니다. 여기서 95173091eb5e
은 컨테이너 ID입니다.docker logs 95173091eb5e
## Example output from a Flask application
* Serving Flask app "app" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
Docker 레지스트리
프로그램이 포장되어 로컬에서 테스트를 하고 예상한 행동에 부합한다는 것을 증명하면 저장하고 나누어 줄 수 있다.
이를 위해 공용 Docker 이미지 레지스트리로 이미지를 밀어넣을 수 있습니다. 예를 들어,
또한 이미지를 개인 등록 센터에 저장하여 권한 수여자가 사용할 수 있도록 할 수 있습니다.
Docker 레지스트리로 이미지를 밀어넣기 전에 먼저 이미지를 표시하는 것이 좋습니다.레이블이 없는 경우 이미지는 제작 단계에서 임의 ID로 지정됩니다.
라벨은 또한 버전 제어를 제공합니다. 왜냐하면 새로운 라벨은 새로운 버전을 표시하기 때문입니다.로컬 컴퓨터에 기존 이미지를 표시하려면
# tag an image
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
# SOURCE_IMAGE[:TAG]
# - required and the tag is optional;
# - defines the name of an image on the current machine
# TARGET_IMAGE[:TAG]
# - required and the tag is optional;
# - defines the repository, name, and version of an image
DockerHub에 로그인docker login
그림을 표시한 후, 마지막 단계는 그림을 등록표로 전송하는 것입니다.docker push NAME[:TAG]
# NAME[:TAG] - required and the tag is optional;
# - name, set the image name to be pushed to the registry
예를 들어, v1 표시가 있는 예시 Python hello world 프로그램을 Docker Hub의 'my repo' 저장소로 전송합니다.docker push my-repo/python-helloworld:v1.0.0
DockerHub에서 이미지를 추출하려면docker pull NAME[:TAG]
네가 읽을 수 있는 기타 참고 자료
Dockerfiles 모범 사례 및 효과적인 설명 목록을 찾습니다.
If you enjoy this write-up and would like to learn more, make sure to hit the Follow just below and bookmark the series. I'll also be glad to connect with you on .
See you there! 😃
.ltag__user__id__350730.작업 따르기 버튼
배경색: #7eb4fb!중요
색상: #fcef98!중요
테두리 색상: #7eb4fb!중요
}
이든 호세 포레
A cloud enthusiast, an IT Professional, and a problem-solver. I am either learning something new, running a mile, or planning my next 100 days.
Reference
이 문제에 관하여(Udacity | SUSE: 편성 - 선착장 일꾼), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jeden/udacity-suse-container-orchestration-docker-5d87텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)