1️⃣ Docker는 Container를 만들고, 배포하고, 구동한다!
2️⃣ docker의 3대 구성요소: Dokcerfile, Image, Container
(Dockerfile을 만듬 → 이걸 이용해서 Image를 만듬 → Container 구동)
: Container를 어떻게 만들어야 하는지 설명서 같은것
• Copy files: Application을 구동하기 위해서 꼭 필요한 파일들이 뭐가 있는지
• Install dependencies: 어떤 framework나 library를 설치해야 하는지 외부 디펜던시에 대해서 명시할 수 있음
• Set environment variables: 필요한 환경 변수에 대해서 설정
• Run setup scripts: 어떻게 구동해야하는지 스크립트 설정
: 상단에 작성한 Docker files를 이용해서 Image를 만들 수 있음
• Application을 실행하는데 필요한 코드, 런타임 환경, system tool, system library 등 모든 세팅들이 포함
→ 실행되고있는 어플리케이션의 상태를 스냅샷으로 이미지를 만들어 놓음
→ 이렇게 만들어진 이미지는 변경이 불가능한, 불변의 상태로 볼 수 있음
: 샌드박스처럼 우리가 잘 캡쳐해둔 우리 어플리케이션의 이미지를 고립된 환경에서 개별적인 파일 시스템 안에서 실행할 수 있게 하는 것(컨테이너 안에서 우리의 Application이 실행된다)
→ 우리가 캡쳐한 Image를 가지고 Application을 구동
→ Image는 수정이 불가능하지만 Container의 파일은 수정가능(여기서 파일 수정한다고 Image에 영향이 가지 않음)
: 이때 Image를 정상적으로 실행하기 위해서는 docker와 같은 엔진을 꼭 사용해야 함
: docker hub, RED HAT Quay.io, GitHub Packages
: aws, Google Cloud, Microsoft Azure
• 제일 빈번히 발생하는 것은 제일 마지막에 적어야함(레이어 시스템)
• 명령어 하나하나가 레이어로 되어 있어서, 빈번히 변경되는걸 마지막에 적으면 레이어 제일 위쪽으로 배치가 됨 → 이미지를 만들고 나중에 소스 파일이 변경이 되어서 새로운 이미지를 만들어야 할 때 레이어를 맨 위에 배치하게 됨 → 변경된 최상단의 레이어만 업데이트 해줌(나머지 레이어는 다시 안만들어도 됨)
• 그래서 이미지를 다시 만들때 변경되지 않은 레이어까지는 재사용(캐쉬된 걸 사용)
• 변경된 레이어부터 그 위에 레이어까지는 다시 build해서 image만드는 시간 단축가능, 효율성도 높아짐
// 터미널에서
docker build -f Dockerfile - t fun-docker .
: 이렇게 명령어를 실행하면 우리가 docker file에서 명시한 명령어 하나하나를 순차적으로 실행
docker images // 명령어를 실행하면 우리 local machine에 만들어진 Image 확인가능
// REPOSITORY 안에 우리가 정해준 Image 이름인 'fun-docker'가 나와있음
docker run -d -p 8080:8080 fun-docker
: 이렇게 실행하고 docker ps
를 입력하면 현재 실행중인 container 리스트 확인가능
: contaienr가 실행할때 부여된 Container ID이용
docker logs 컨테이너ID
: docker hub를 이용
: 이때 Repository이름과 Image 이름이 같아야함
: Terminal로 돌아와서 이름 변경가능
docker tag fun-docker:latest 변경하고싶은이름
→ docker tag fun-docker:latest realdreamcoding/docker-example:latest
: 이후에 docker images
를 입력하면 2개의 이름이 나옴 → push 전에 login을 해야함
docker login // 입력하고 계정 정보 입력하기
dokcer push 계정과 Repository이름 명시
→ docker push realdreamcoding/docker-example:latest
: 이렇게 하면 push된 docker image 확인 가능
출처: 드림코딩앨리(https://www.youtube.com/watch?v=LXJhA3VWXFA)