-
[📋] dockerCSE 2024. 8. 6. 17:15
개요
CI/CD를 하면서 docker를 다룰 필요가 생겼다.
매번 docker hub로 그냥 필요한 프로그램 찾아서 이미지 저장하고 컨테이너에 올리기만 했어서,
dockerfile을 직접 다룬 경험은 처음 배울 때? 다른 사람이 쓴 글 보면서 필요한 부분 긁어올 때? 그 때 말고는 없었단 걸 깨달았다.
많이 사용해왔고, 사용해야 하는 기술인데 내부 로직을 아예 모르면 안 될 것 같다는 생각에 조금씩 정리해보려고 한다.
이론
Docker란?
Docker는 개발자가 컨테이너를 구축, 배포, 실행, 업데이트 및 관리할 수 있게 해주는 오픈 소스 플랫폼이다.
컨테이너는 운영체제와 모든 환경에서 실행이 가능하기 때문에, 가상 머신을 설치하고 올릴 필요 없이 편하게 docker 이미지 하나만으로 프로그램을 실행할 수 있게 도와준다.
docker에 대해 이야기하려면 dockerfile과 docker image를 빼놓을 수 없다.
먼저 정리하면,
- dockerfile : docker 이미지를 빌드할 때 필요한 설정이 들어있는 텍스트 파일
- dockerfile 스크립트 -> 이미지 생성
- docker image : 실행 가능한 애플리케이션 소스 코드 + 컨테이네 실행을 위한 모든 tool
- docker image 실행 -> 컨테이너의 한(여러) 인스턴스
- 레이어로 구성되고, 각 레이어는 이미지의 버전임
- 개발자가 이미지를 변경할 때마다 레이어가 생성되고, 이전 이미지를 덮어씀
- 롤백 가능
- 이미지에서 컨테이너를 만들 때마다 컨테이너 레이어가 생성
- 컨테이너에 대한 변경 사항(파일 추가 & 삭제)은 컨테이너 레이어에 저장되며 컨테이너가 실행되는 동안 존재
문법
구문 설명 # 주석 및 코멘트 FROM 베이스 이미지(base image) 저장 MAINTAINER 이미지를 생성한 사람의 이름 및 정보 LABEL key-value 형식으로 메타 데이터 저장 RUN 컨테이너 빌드를 할 때 사용하는 커멘드 COPY 컨테이너 빌드 시, 호스트 파일을 복사 ADD 컨테이너 빌드 시, 호스트의 (tar, url)을 ㅂ고사 WORKDIR 컨테이너 빌드 시, 명령어를 실행할 위치 ENV 이미지에서 실행할 애플리케이션의 환경 변수 설정 EXPOSE 컨테이너 동작 시, 사용할 포트 지정 CMD 컨테이너 동작 시, 실행할 서비스 및 스크립트 ENTRYPOINT CMD와 함께 사용, 커멘드 지정 시 사용함
참고
더보기https://aws.amazon.com/ko/docker/
Docker란 무엇입니까? | AWS
Q: Docker로 어떤 작업을 할 수 있습니까? Docker를 사용하면 환경에 구애받지 않고 애플리케이션을 신속하게 배포 및 확장할 수 있으며 코드가 문제없이 실행될 것임을 확신할 수 있습니다. 이는 Doc
aws.amazon.com
https://velog.io/@tjdwns2243/dockerfile-%EB%AC%B8%EB%B2%95-%EC%9E%91%EC%84%B1%EB%B2%95
dockerfile 문법 + 작성법
dockerfile이란? docker 이미지를 작성할 수 있는 기능 이미지는 스크립트를 기반으로 생성되는데, dockerfile은 이 스크립트가 dockerfile문법으로 이루어져 있다. 이 dockerfile을 활용하여 나만의 이미지를
velog.io
https://www.ibm.com/kr-ko/topics/docker
Docker란? | IBM
Docker는 개발자가 컨테이너화된 애플리케이션을 구축, 배포, 실행, 업데이트 및 관리할 수 있도록 지원하는 오픈 소스 플랫폼입니다.
www.ibm.com
느린 개발자
프론트엔드 백엔드 학습정리 및 정보공유 블로그입니다.
stack94.tistory.com
- dockerfile : docker 이미지를 빌드할 때 필요한 설정이 들어있는 텍스트 파일