개발자

도커를 효율적으로 사용하는 방법?

2023년 03월 08일조회 1,387

안녕하세요 선생님들, 도커로 간단한 개발 환경을 만드는 중인데 도커 이미지를 처음 로드할때 Dockerfile 작업이 너무 오래 걸리더라구요. 혹시 Dockerfile 작업을 좀 더 효율적으로 돌리는 방법이 있을까요? 감사합니다. ++ 수정 질문이 명확하지 않았던 점 죄송합니다. 정확히는 root 프로젝트에 docker-compose.yml이라는 파일이 있고 app, server, worker, scheduler 형식의 디렉토리들이 있습니다. 각각의 디렉토리에 Dockerfile이 있는 형태구요. docker-compose.yml에서 services 영역에서 각각 돌아가게끔 구현되어있습니다. 현재 docker-compose와 Dockerfile들 작업을 처음하는 단계여서 스크립트를 여러번 수정하고 테스트하는 과정에서 docker-compose up 커맨드를 통해 Dockerfile들이 빌드될 때, 느린 빌드 속도를 어떻게 하면 좀 더 빠르게 할수 있을까에 대한 고민이었습니다. 매번 컨테이너 지우고, 이미지 지우고, 스크립트 수정하고, 다시 빌드하고 하는게 고통스럽더라구요. 다행히도 개떡같은 질문 내용에 좋은 답변들을 많이 달아주셔서 참고해주신 내용과 링크를 바탕으로 좀 더 학습해보겠습니다. 감사합니다!

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 3

인기 답변

김건호님의 프로필 사진

잘 이해가 가지 않는 질문이네요. ㅎㅎ 일단 도커 이미지를 “로드”한다는 말부터 흔히 사용되지 않는 말이라 어떤 작업을 하신 건지 모르겠습니다. docker run 커맨드를 사용해 도커 컨테이너를 실행한다는 말씀일까요? Dockerfile “작업”도 너무 모호해요. Dockerfile을 이용한 docker build 작업이 너무 오래걸린다는 말씀일까요? 위와 같이 이해한 게 맞다면, Dockerfile 빌드 작업이 오래 걸리는 게 왜 문제가 되는지도 모르겠습니다. Dockerfile은 도커 이미지를 빌드하기 위한 순차적 명령어 모음입니다. 작성한 명령 순서대로 도커 이미지를 만들어내도록 되어있죠. 한번 도커 이미지를 만들고 나면, 도커 컨테이너로 실행할 때는 다시 Dockerfile을 사용하여 빌드하지 않습니다. (특별히 옵션을 사용하지 않는다면) 이미지 내용이 바뀌지 않는다면, Dockerfile을 삭제해도 되죠. 따라서 Dockerfile 빌드가 아무리 오래 걸려도, 한번 빌드하면 컨테이너로 실행할 때는 다시 반복되지 않는 작업이니 상관 없습니다. 충분한 답변이 되지 않으셨다면, 조금 더 명확한 상황을 설명해주시는 편이 적절한 답변에 도움이 될 거 같습니다. ㅎㅎ

profile picture

익명

작성자

2023년 03월 10일

답변 감사합니다. 질문 내용을 다시 읽어보니까 명확하지 않았던 것 같네요. 죄송합니다. 말씀해주신 "docker build 작업이 너무 오래걸린다"가 핵심 내용은 맞습니다.

인기 답변

연양갱님의 프로필 사진

안녕하세요 ㅎㅎ 이해한 바로는 Dockerfile 을 docker build 명령어를 통해 이미지를 생성할 때 시간이 오래 걸리는것으로 이해했는데 맞게 이해한걸까요?? 실제 파일 스크립트를 확인해봐야겠지만 Dockerfile을 최적화 하는 방법은 여러가지가 있습니다. 대표적인 예를들자면 일반적인 alpine과 같은 경량화된 이미지를 사용하는 방법이 있습니다. 예를들어 node의 이미지가 아닌 node-alpine과 같은 경량화된 이미지를 사용하는 방식입니다. 두번째로는 불필요한 레이어 수를 줄이는 방법이 있습니다. RUN apt-get update -y RUN apt-get upgrade -y 과 같은 레이어들이 있을경우 RUN apt-get update -y && apt-get upgrade -y 와 같은 방식으로 합쳐주는 것이 좋습니다. 세번째로는 이미지를 빌드할시 .dockerignore를 통해 불필요한 파일을 제외하는 방법이 있습니다. 예시로 설명드린 방법들은 기초적인 최적화 방식들입니다. Dockerfile최적화를 검색하시면 더 좋은 양질의 자료들을 찾아보실수 있으실겁니다. 아래와 같은 링크를 참조하시면 될것 같네요 :) https://tech.buzzvil.com/handbook/docker/

profile picture

익명

작성자

2023년 03월 10일

답변 감사드립니다. 질문 내용이 부실했음에도 의도했던걸 잘 이해해주신것 같습니다. 첨부해주신 링크 참고해서 좀 더 학습하도록 할게요!

삭제된 사용자님의 프로필 사진

삭제된 사용자

2023년 03월 09일

base 도커를 말씀 하시는거 같은데요. 아마 도커 허브나 미리 로컬에 베이스 이미지를 만들어 둔 뒤 서버만 띄우는 방법을 고민하시면 될거 같아요~

profile picture

익명

작성자

2023년 03월 10일

이걸 말씀하신게 맞을까요? - https://docs.docker.com/build/building/base-images/ 이런 방법도 있군요. 답변 감사드립니다.

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!