42서울/Inception 14

Build context [42 inception 과제 개념 심화2]

Build contextLearn how to use the build context to access files from your Dockerfilehttps://docs.docker.com/build/building/context/🚨이 공식 문서는 docker 파일을 사용하는 build 명령에 대해서 설명합니다. 이 내용도 과제의 범위를 벗어납니다. 한번 읽어 만 보시는 것을 권장합니다.docker build 또는 docker buildx build 명령은 도커 이미지를 Dockerfile 과 context를 통해 빌드합니다. 명령 형식: docker build [OPTIONS] PATH | URL | - 이전에 다뤘던 build 명령에 대해서 더 깊게 다뤄 보겠습니다.기본적으로 context는 PA..

42서울/Inception 2023.06.24

Multi-stage builds [42 inception 과제 개념 심화 1]

Builder pattern vs. Multi-stage builds in DockerThe Docker builder pattern just got a lot easier. Let's checkout some bleeding-edge PRs from the Docker project that are causing a stir.https://blog.alexellis.io/mutli-stage-docker-builds/Multi-stage buildsKeeping your images small with multi-stage buildshttps://docs.docker.com/build/building/multi-stage/#name-your-build-stages💡위 게시물은 인셉션 과제에서는 전혀 ..

42서울/Inception 2023.06.24

best practices for writing Dockerfiles (과제 요구사항) [42 inception 과제 개념12]

시작하면서Best practices for writing DockerfilesHints, tips and guidelines for writing clean, reliable Dockerfileshttps://docs.docker.com/develop/develop-images/dockerfile_best-practices/About storage driversLearn the technologies that support storage drivers.https://docs.docker.com/storage/storagedriver/과제에 best practices for writing Dockerfiles 를 꼭 읽어보라는 내용이 있습니다.지금까지 42의 성향을 볼 때 이런 문항을 무시하고 넘어갔다가 ..

42서울/Inception 2023.06.24

컨테이너 빌드에 대한 권장사항 [PID 1] [42 inception 과제 개념11]

시작하며이전의 글들을 모두 읽고 이 글을 읽기를 권장합니다. 이 글은 구글의 컨테이너 빌드에 대한 권장사항을 기반으로 하고 있고, 그 권장사항들에 대해서 정리합니다.컨테이너 빌드에 대한 권장사항 | 클라우드 아키텍처 센터 | Google Cloudhttps://cloud.google.com/architecture/best-practices-for-building-containers?hl=ko#signal-handling이전에 도커파일에서 다뤘던 CMD와 ENTRYPOINT 와 깊은 연관이 있으니 그 부분과 함께 공부하면 좋습니다.이 글은 컨테이너를 실행과 동시에 꺼지는 상황을 해결하는데 해결책을 제시할 수 있습니다.그 중 중요한 부분인 PID1 에 대한 내용도 함께 다뤄보겠습니다.컨테이너 빌드에 대한 권..

42서울/Inception 2023.06.24

Docker Volume이란? [42 inception 과제 개념 10]

Docker Volume 왜 그리고 어떻게 쓰나요?데이터의 지속성을 위해서 도커 볼륨을 쓰고 싶어합니다.🚨컨테이너를 제거하거나 stop하면 모든 데이터가 사라지고 처음부터 시작합니다. 그 이유는 컨테이너에서 사용하는 파일 시스템은 실제로 저장을 할 수 있는게 아니라 가상 파일 시스템 이기 때문입니다.👨🏻‍💻그래서 컨테이너 run타임 중에는 데이터를 저장할 수는 있지만 컨테이너도 하나의 프로세스에 불과하기 때문에 프로세스가 종료되면 저장을 할 수가 없습니다.하지만 컨테이너를 stop 할 때마다 데이터가 사라진다고, 항상 컨테이너를 Running 상태로 두는 건 너무 비효율적 입니다. 갑자기 전원이 나가서 컨테이너가 꺼지면 모든 데이터가 없어지는 상태가 발생할 수도 있기 때문에 문제 해결이 필요해졌습니다. ..

42서울/Inception 2023.06.24

Dockerfiles이란? [42 inception 과제 개념 9]

이제 도커 이미지를 Dockerfile을 이용해 만들어보겠습니다.이전에 도커 이미지 게시글에서 잠깐 다뤘던 그림을 가져오겠습니다.도커파일의 특징👨🏻‍💻도커파일이란 도커 이미지를 만들기 위한 설계도입니다. 도커 이미지를 빌드하려면 해당 어플리케이션의 콘텐츠들을 도커파일에 복사해야만 합니다.👨🏻‍💻도커파일은 반드시 Dockerfile이라는 파일명을 가져야합니다.(대소문자 중요)👨🏻‍💻도커 파일에서 하나의 명령은 하나의 layer를 생성합니다.도커 파일의 문법👨🏻‍💻도커 파일에서 있는 모든 대문자는 다 Dockerfile의 문법입니다.👨🏻‍💻모든 도커파일의 첫번째 줄은 기반 이미지(base image)를 가져오는 것으로 시작합니다.첫번째 줄은 이 이미지의 기반 이미지가 무엇인지에 대해서 적어주는 것 입니다.예..

42서울/Inception 2023.06.24

docker compose를 사용한 네트워크 [42 inception 과제 개념 8]

docker compose를 사용한 네트워크Networking in ComposeHow Compose sets up networking between containershttps://docs.docker.com/compose/networking/Docker Compose에서는 network_mode를 이용하여 네트워크를 정할 수 있습니다. 그리고 특히 여러 네트워크를 생성하여 서비스에 여러 네트워크를 적용하는 것도 가능하다는 장점이 있습니다.default 네트워크Docker Compose에서 네트워크를 정의하는 것도 가능하지만, Docker Compose와 별개로 Docker Engine으로 생성한 네트워크를 이용하는 것도 가능합니다. 👨🏻‍💻아무런 설정을 해주지 않으면 docker compose는 de..

42서울/Inception 2023.06.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..

42서울/Inception 2023.06.24

docker-compose 란 무엇인가? [42 inception 과제 개념 6]

도커 컴포즈가 등장하게 된 배경👨🏻‍💻도커파일을 관리하는게 도거 컴포즈인데, 설명의 편의를 위해 도커파일보다, 도커 컴포즈를 먼저 설명하도록 하겠습니다.지금까지 위의 게시물들을 순서대로 보셨다면 컨테이너가 무엇인지 알고 계실겁니다.이미지를 실행중인 환경이 컨테이너이고 하나의 이미지를 이용해서 여러개의 컨테이너를 만들어 낼 수 있었습니다.이제 많은 이미지가 등장하고 여러개의 컨테이너를 만들어야 하는 서비스가 등장함에 따라서, 한꺼번에 컨테이너를 관리해주는 것의 필요성을 느끼게 되었습니다. 또 추가적으로 늘 네트워크 설정을 해서 컨테이너간 통신을 하는 것에 불편함을 느낀 사람들은 그것들을 한번에 해주는 툴을 만들기 시작합니다.저희가 mongo 이미지를 이용해서 컨테이너를 실행하는 예를 들어 보겠습니다.doc..

42서울/Inception 2023.06.24

도커 네트워크란 [42 inception 과제 개념 5]

도커 네트워크Docker 컨테이너(container)는 격리된 환경에서 돌아가기 때문에 기본적으로 다른 컨테이너와의 통신이 불가능합니다. 하지만 여러 개의 컨테이너를 하나의 Docker 네트워크(network)에 연결시키면 서로 통신이 가능해집니다.👨🏻‍💻동일한 도커 네트워크에 위치하면 localhost의 port없이 컨테이너끼리 서로 통신이 가능해집니다.네트워크 조회docker network lsdocker network ls : 커맨드를 사용하면 현재 생성되어 있는 Docker 네트워크 목록을 조회할 수 있습니다.docker network ls 명령을 사용하면 bridge, host, none 세 종류 네트워크를 볼 수 있습니다.시작하자마자 나오는 네트워크는 Docker 데몬(daemon)이 실행되면..

42서울/Inception 2023.06.24
728x90