DevOps에서 컨테이너를 사용하는 이유
운영체제, 기타 설치된 프로그램과 권한에 따라 기계마다 서로 다른 밑바닥 상태가 있다.이상한 시스템 문제로 프로젝트를 로컬에서 실행하는 데 몇 시간, 심지어 며칠이 걸릴 수도 있다.
최악의 경우, 이런 상황도 생산 중에 발생할 수 있다.서버 구성이 로컬에서 실행하는 것과 다르면 변경 사항이 예상대로 작동하지 않을 수 있으며 사용자에게 문제가 발생할 수 있습니다.용기를 사용하면 이런 흔한 문제들을 모두 해결할 수 있다.
용기
컨테이너는 응용 프로그램이 모든 계산 환경에서 일치하게 실행될 수 있도록 코드와 의존 항목을 포장하는 소프트웨어이다.기본적으로 작은 단원을 만들어서 모든 운영체제에 놓고 프로그램을 안정적이고 일치하게 실행할 수 있습니다.너는 이런 잠재적인 시스템 문제가 나중에 몰래 나타날까 봐 걱정할 필요가 없다.
용기는 리눅스에서 이미 여러 해 동안 사용되었지만, 최근 몇 년 동안 그것들은 더욱 유행하게 되었다.대부분의 경우 사람들이 컨테이너에 대해 이야기할 때, 그들이 가리키는 것은 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 파이프를 알아보십시오.그것은 가동하고 운행하기 쉬우며, 현장에서 운행할 때 디버깅하기 쉽다.
Reference
이 문제에 관하여(DevOps에서 컨테이너를 사용하는 이유), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/flippedcoding/why-we-use-containers-in-devops-16p9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)