DevOps에서 컨테이너를 사용하는 이유

6794 단어 devopswebdev
어느 순간, 우리는 모두 이런 말을 했다. "그러나 그것은 나의 기계에서 일한다."그것은 보통 테스트 기간이나 새로운 프로젝트를 만들려고 할 때 발생한다.업데이트된 분기 드롭다운에서 변경하는 경우가 있습니다.
운영체제, 기타 설치된 프로그램과 권한에 따라 기계마다 서로 다른 밑바닥 상태가 있다.이상한 시스템 문제로 프로젝트를 로컬에서 실행하는 데 몇 시간, 심지어 며칠이 걸릴 수도 있다.
최악의 경우, 이런 상황도 생산 중에 발생할 수 있다.서버 구성이 로컬에서 실행하는 것과 다르면 변경 사항이 예상대로 작동하지 않을 수 있으며 사용자에게 문제가 발생할 수 있습니다.용기를 사용하면 이런 흔한 문제들을 모두 해결할 수 있다.

용기
컨테이너는 응용 프로그램이 모든 계산 환경에서 일치하게 실행될 수 있도록 코드와 의존 항목을 포장하는 소프트웨어이다.기본적으로 작은 단원을 만들어서 모든 운영체제에 놓고 프로그램을 안정적이고 일치하게 실행할 수 있습니다.너는 이런 잠재적인 시스템 문제가 나중에 몰래 나타날까 봐 걱정할 필요가 없다.
용기는 리눅스에서 이미 여러 해 동안 사용되었지만, 최근 몇 년 동안 그것들은 더욱 유행하게 되었다.대부분의 경우 사람들이 컨테이너에 대해 이야기할 때, 그들이 가리키는 것은 Docker containers 이다.이 용기들은 프로그램 실행에 필요한 모든 의존 항목을 포함하는 이미지에서 만들어진 것입니다.
용기를 생각할 때 가상 기기도 생각할 수 있다.그것들은 매우 비슷하지만 가장 큰 차이점은 용기가 하드웨어가 아닌 운영체제를 가상화했다는 데 있다.모든 운영 체제에서 일관성 있게 작동하기 쉬운 이유입니다.

컨테이너와 DevOps의 관계
코드를 하나의 컴퓨팅 환경에서 다른 컴퓨팅 환경으로 이동할 때 얼마나 이상한 일이 일어나는지 알기 때문에 DevOps 과정에서 코드를 다른 환경으로 이동하는 것도 흔히 볼 수 있는 문제입니다.임시 저장과 생산 사이의 시스템 차이를 처리해야 하는 것을 원하지 않습니다.이것은 더 많은 일을 필요로 할 것이다.
일단 부품을 구축하면 로컬에서 생산까지의 모든 환경에서 사용할 수 있어야 합니다.DevOps에서 컨테이너를 사용하는 이유입니다.네가 마이크로 서비스를 사용할 때, 그것도 매우 귀중하다.Kubernetes와 함께 사용하는 Docker 컨테이너는 더 많은 이동 부품이 있는 대형 시스템을 쉽게 처리할 수 있습니다.

컨테이너 사용
Docker에서 컨테이너를 만드는 것은 Docker 이미지부터 시작해야 한다는 것을 의미합니다.예를 들어, Docker 컨테이너에 React 응용 프로그램을 배치하려는 경우필요한 버전node과 모든 파일의 위치를 알고 있습니다.그래서 그림만 쓰면 Docker가 이걸 이용할 수 있어요.
Docker 이미지를 볼 때, 그것들의 작성 방식은 bash 명령과 유사하지만, 다르다.이미지를 Docker가 파일을 올바르게 만드는 데 필요한 단계별 설명으로 볼 수 있습니다.다음은 React 응용 프로그램을 구성하는 Docker 컨테이너의 예입니다.
# pull the official base image
FROM node:13.12.0-alpine

# set the working directory
WORKDIR /app

# add `/app/node_modules/.bin` to $PATH
ENV PATH /app/node_modules/.bin:$PATH

# install app dependencies
COPY package.json ./
COPY package-lock.json ./
RUN npm install --silent
RUN npm install [email protected] -g --silent

# add app
COPY . ./

# start app
CMD ["npm", "start"]
이것은 로컬에서 실행하거나 다른 환경에서 실행하는 데 익숙해질 수 있는 명령입니다.지금 너도 같은 일을 하고 있다. 단지 거품 환경에 있을 뿐이다.이미지에 지정된 버전node을 사용하고 이미지에 지정된 디렉토리를 사용합니다.코드를 실행해야 할 때 언제든지 이 내용을 검사하고 변경할 필요가 없다.

CI/CD 파이프의 컨테이너 포함
다음은 Conducto를 CI/CD 도구로 사용하여 컨테이너를 구축하고 실행하는 예입니다.위에서 만든 Docker 이미지입니다.
import conducto as co
def cicd() -> co.Serial:
    image = co.Image("node:current-alpine", copy_dir=".")
    make_container_node = co.Exec("docker build --tag randomdemo:1.0 .")
    run_container_node = co.Exec("docker run --publish 8000:8080 --detach --name rd randomdemo:1.0")

    pipeline = co.Serial(image=image, same_container=co.SameContainer.NEW)
    pipeline["Build Docker image"] = make_container_node
    pipeline["Run Docker image"] = run_container_node
    
return pipeline
if __name__ == "__main__":
  co.main(default=cicd)

기타 고려
큰 바위를 계속 사용하고 있다면 CI/CD를 준비하는 데 시간이 좀 걸릴 수 있다는 것을 기억하십시오.작은 오류 하나로 프로그램 전체를 망칠 수 있는데, 이런 상황에서 단원 테스트를 작성하는 것은 결코 가장 쉬운 일이 아니다.그러니 전기 투자가 많은 것 같으면 너무 낙담하지 마라. 할 수 있기 때문이다.
이렇게 하면 앞으로 모든 것이 빈틈없이 실행될 것이며, DevOps가 고장이 날 때까지 자리를 잡았다는 것을 잊어버릴 것이다.분노한 지원 전화를 처리하고 배치를 강조하며 고객의 신뢰를 낮추는 것보다 훨씬 낫다.
꼭 따라오세요. 왜냐하면 저는 항상 비슷한 것과 다른 기술 주제를 발표하고 있으니까요!
어떤 도구를 먼저 보아야 하는지 알고 싶으면 Conducto CI/CD 파이프를 알아보십시오.그것은 가동하고 운행하기 쉬우며, 현장에서 운행할 때 디버깅하기 쉽다.

좋은 웹페이지 즐겨찾기