commit -> 컨테이너를 이미지로 만듦
흰색 2개 이미지를 레지스트리에 push
기존 이미지 얘로 바뀔것
정상적으로 실행 되는 것 볼 수 있음
docker image prune -> Dangle image (이름과 태그가 없는 오류 이미지)지울 수 있음
푸룬을 해도 안지워지면 docker rm 으로 관련 컨테이너를 지워야함
apt update나 install 은 이전의 것을 사용하여 새로 설치가 안됨(예전에 있던 캐쉬를 사용하므로)
9번째는 새로운 파일이므로 복사의 과정을 거침
--no-cache 를 붙여주면 캐쉬를 사용하지않고 정상적으로 설치됨(중요!)
확인해보기) 이미지 레이어?
익스포즈에선 포트가 80 이고 리슨에선 8080 으로 다르면 어떻게 되는지?
* 이미지레이어 확인방법
-A : After 레이어스 검색한 후속 몇줄을 더 보여달라
-B : Before
-f : Go 템플릿을 이용해서 확인 가능
*포맷이용하여 레이어 확인하기
레이어 하나에서 4개 추가됨
도커파일에서 지시어중에 레이어 추가 지시어 4개가 있음 -> RUN 2개, ADD, COPY
이유:
레이어 -> 파일의 모음
apt 업데이트하면 인덱스 파일 추가됨 파일이 삭제 변경 추가되면 레이어로 저장될것
install 도 마찬가지
포트파일복사 -> 변경이 일어나므로 레이어 추가
복사-> 변경이 일어나므로 레이어 추가
vi Dockerfile 들어가서 RUN 2줄 지우고 RUN apt update && apt install -y apache2 한줄 써주기
앞 && 뒤 : 앞에 명령어가 실행되면 뒤에 명령어도 실행(앞에 명령어가 실행이 안되면 뒤에도 안됨. AND 와 다름)
docker image ls
-> v4 확인
레이어 한줄 지워진것 확인
파일 들어가서 레이어 체크해보기
컨테이너를 만들게 되면 원래 이미지 레이어에 추가로 빈 레이어 생김.
dockerignore 파일엔 복사하지 않을 파일을 써주면됨
도커파일에서 expose에 지정한 포트는 단순정보일뿐임. expose 는 실제 서비스 포트와 연동되지 않으므로 유의해야함.