본문 바로가기

42Seoul/Inception14

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.. 2023. 6. 24.
Multi-stage builds [42 inception 과제 개념 심화 1] 💡위 게시물은 인셉션 과제에서는 전혀 사용되지 않음을 알려드립니다. 다만, 도커파일을 작성할 때 캐시를 사용해서 더 작은 배포파일을 만드는 과정을 다루고 있기에 도커에 대해서 더 자세히 공부하고 싶으시다면 한번 읽어보시는 것도 좋은 공부가 될 것 같습니다.Multi-stage builds의 등장 전 상황이미지를 빌드하고 게시할 때 때때로 해당 이미지의 크기가 상당히 커지는 문제가 있었습니다.Multi-stage builds가 등장하기 전에는 이미지 크기를 작게 하려면 이미지에서 리소스를 수동으로 정리했어야 했습니다.과거에는 하나의 Dockerfile을 개발용으로 사용하고 다른 하나는 배포용으로 사용하는 것이 일반적이었습니다.개발버전의 경우 어플리케이션을 구축하는데 필요한 모든 것이 포함되어있었고, 배포.. 2023. 6. 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의 성향을 볼 때 이런 문항을 무시하고 넘어갔다가 .. 2023. 6. 24.
컨테이너 빌드에 대한 권장사항 [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.