본문 바로가기
728x90

분류 전체보기232

컨테이너 빌드에 대한 권장사항 [PID 1] [42 inception 과제 개념11] 시작하며이전의 글들을 모두 읽고 이 글을 읽기를 권장합니다. 이 글은 구글의 컨테이너 빌드에 대한 권장사항을 기반으로 하고 있고, 그 권장사항들에 대해서 정리합니다.컨테이너 빌드에 대한 권장사항 | 클라우드 아키텍처 센터 | Google Cloudhttps://cloud.google.com/architecture/best-practices-for-building-containers?hl=ko#signal-handling이전에 도커파일에서 다뤘던 CMD와 ENTRYPOINT 와 깊은 연관이 있으니 그 부분과 함께 공부하면 좋습니다.이 글은 컨테이너를 실행과 동시에 꺼지는 상황을 해결하는데 해결책을 제시할 수 있습니다.그 중 중요한 부분인 PID1 에 대한 내용도 함께 다뤄보겠습니다.컨테이너 빌드에 대한 권.. 2023. 6. 24.
Docker Volume이란? [42 inception 과제 개념 10] Docker Volume 왜 그리고 어떻게 쓰나요?데이터의 지속성을 위해서 도커 볼륨을 쓰고 싶어합니다.🚨컨테이너를 제거하거나 stop하면 모든 데이터가 사라지고 처음부터 시작합니다. 그 이유는 컨테이너에서 사용하는 파일 시스템은 실제로 저장을 할 수 있는게 아니라 가상 파일 시스템 이기 때문입니다.👨🏻‍💻그래서 컨테이너 run타임 중에는 데이터를 저장할 수는 있지만 컨테이너도 하나의 프로세스에 불과하기 때문에 프로세스가 종료되면 저장을 할 수가 없습니다.하지만 컨테이너를 stop 할 때마다 데이터가 사라진다고, 항상 컨테이너를 Running 상태로 두는 건 너무 비효율적 입니다. 갑자기 전원이 나가서 컨테이너가 꺼지면 모든 데이터가 없어지는 상태가 발생할 수도 있기 때문에 문제 해결이 필요해졌습니다. .. 2023. 6. 24.
Dockerfiles이란? [42 inception 과제 개념 9] 이제 도커 이미지를 Dockerfile을 이용해 만들어보겠습니다.이전에 도커 이미지 게시글에서 잠깐 다뤘던 그림을 가져오겠습니다.도커파일의 특징👨🏻‍💻도커파일이란 도커 이미지를 만들기 위한 설계도입니다. 도커 이미지를 빌드하려면 해당 어플리케이션의 콘텐츠들을 도커파일에 복사해야만 합니다.👨🏻‍💻도커파일은 반드시 Dockerfile이라는 파일명을 가져야합니다.(대소문자 중요)👨🏻‍💻도커 파일에서 하나의 명령은 하나의 layer를 생성합니다.도커 파일의 문법👨🏻‍💻도커 파일에서 있는 모든 대문자는 다 Dockerfile의 문법입니다.👨🏻‍💻모든 도커파일의 첫번째 줄은 기반 이미지(base image)를 가져오는 것으로 시작합니다.첫번째 줄은 이 이미지의 기반 이미지가 무엇인지에 대해서 적어주는 것 입니다.예.. 2023. 6. 24.
docker compose를 사용한 네트워크 [42 inception 과제 개념 8] docker compose를 사용한 네트워크https://docs.docker.com/compose/networking/ Networking in ComposeHow Docker Compose sets up networking between containersdocs.docker.com Docker Compose에서는 network_mode를 이용하여 네트워크를 정할 수 있습니다. 그리고 특히 여러 네트워크를 생성하여 서비스에 여러 네트워크를 적용하는 것도 가능하다는 장점이 있습니다.default 네트워크Docker Compose에서 네트워크를 정의하는 것도 가능하지만, Docker Compose와 별개로 Docker Engine으로 생성한 네트워크를 이용하는 것도 가능합니다. 아무런 설정을 해주지 않으.. 2023. 6. 24.
docker compose 명령어 [42 inception 과제 개념 7] docker compose 실행하기Docker Compose는 기본적으로 커맨드가 실행하는 디렉토리에 있는 docker-compose.yml 또는 docker-compose.yaml를 설정 파일로 사용합니다.docker-compose -f 설정파일만약 실행 경로에 docker-compose.yml 이 아닌 다른 이름이나 경로의 파일을 Docker Compose 설정 파일로 사용하고 싶다면 -f 옵션으로 명시를 해줍니다. (예시 : docker-compose -f mongo.yaml up)-f 옵션은 여러 개의 설정 파일을 사용할 때도 사용할 수 있습니다. 이 때는 나중에 오는 설정이 앞에 오는 설정보다 우선하게 됩니다. (예시 : docker-compose -f mongo.yaml -f docketest.. 2023. 6. 24.
docker-compose 란 무엇인가? [42 inception 과제 개념 6] 도커 컴포즈가 등장하게 된 배경도커파일을 관리하는게 도거 컴포즈인데, 설명의 편의를 위해 도커파일보다, 도커 컴포즈를 먼저 설명하도록 하겠습니다.지금까지 위의 게시물들을 순서대로 보셨다면 컨테이너가 무엇인지 알고 계실겁니다.이미지를 실행중인 환경이 컨테이너이고 하나의 이미지를 이용해서 여러개의 컨테이너를 만들어 낼 수 있었습니다.이제 많은 이미지가 등장하고 여러개의 컨테이너를 만들어야 하는 서비스가 등장함에 따라서, 한꺼번에 컨테이너를 관리해주는 것의 필요성을 느끼게 되었습니다. 또 추가적으로 늘 네트워크 설정을 해서 컨테이너간 통신을 하는 것에 불편함을 느낀 사람들은 그것들을 한번에 해주는 툴을 만들기 시작합니다.저희가 mongo 이미지를 이용해서 컨테이너를 실행하는 예를 들어 보겠습니다.docker .. 2023. 6. 24.
도커 네트워크란 [42 inception 과제 개념 5] Docker 컨테이너(container)는 격리된 환경에서 돌아가기 때문에 기본적으로 다른 컨테이너와의 통신이 불가능합니다.하지만 여러 개의 컨테이너를 하나의 Docker 네트워크(network)에 연결시키면 서로 통신이 가능해집니다.동일한 도커 네트워크에 위치하면 localhost의 port없이 컨테이너끼리 서로 통신이 가능해집니다.네트워크 조회docker network lsdocker network ls : 커맨드를 사용하면 현재 생성되어 있는 Docker 네트워크 목록을 조회할 수 있습니다.docker network ls 명령을 사용하면 bridge, host, none 세 종류 네트워크를 볼 수 있습니다.시작하자마자 나오는 네트워크는 Docker 데몬(daemon)이 실행되면서 디폴트로 생성되는 .. 2023. 6. 24.
Docker 명령어, 포트번호, 컨테이너 디버깅 [42 inception 과제 개념 4] 이번 게시물에서는 도커 이미지 이용해서 컨테이너로 띄우는데 사용 되는 명령어에 대해 정리해보고자 합니다.시작 하기 전 잠깐 복습을 하자면 도커 이미지는 도커 컨테이너를 만들기 위한 틀이고, 이미지를 이용해서 컨테이너를 실행할 수 있습니다.그럼 도커 명령어들에 대해서 정리하겠습니다.docker 명령어docker images 내 컴퓨터에 있는 모든 이미지를 확인할 수 있는 명령이 명령을 사용해보면 어떤 이미지가 있는지 자세한 정보를 보여줍니다.docker run 이미지이름 이전에 말했든 컨테이너는 이미지의 실행환경입니다. 이렇게 run을 해보면, 이미지가 컨테이너 내부에서 실행이 됩니다.docker run -d : 컨테이너를 detatch(분리) 모드로 실행합니다. docker run하고 있는 상태에서 ct.. 2023. 6. 24.
Docker, Docker Engine ( Client, Daemon) [42 inception 과제 개념 3] 도커는 리눅스 기술인 컨테이너 기술에 여러 기능을 추가한 오픈소스 프로젝트입니다. 도커의 기술적 특징은 컨테이너의 기술적 특징에 몇가지 기능을 추가한 것입니다. 도커엔진Docker Engine은 사용자가 컨테이너를 쉽게 사용하고 관리할 수 있게 해줍니다.도커 엔진은 여러가지 기능을 제공하는데 대표적으로 컨테이너의 라이프 사이클 관리, 이미지 관리, 볼륨 관리, 네트워크 관리 등 컨테이너를 관리하는 기능을 제공합니다.위의 그림에서 dockerd 부분에 있는 사각형 박스에 있는 Docker CLI/AP, LogsMgmt.. 등을 도커 프로젝트라고 부릅니다.도커 프로젝트는 컨테이너를 어떻게 사용할 것인가에 따른 목적에 따라 분리되어 있습니다.Docker를 이용하기 위해 일반적으로 docker라는 명령어를 이용.. 2023. 6. 24.
728x90