7/5



commit -> 컨테이너를 이미지로 만듦

흰색 2개 이미지를 레지스트리에 push

기존 이미지 얘로 바뀔것

정상적으로 실행 되는 것 볼 수 있음
docker image prune -> Dangle image (이름과 태그가 없는 오류 이미지)지울 수 있음
푸룬을 해도 안지워지면 docker rm 으로 관련 컨테이너를 지워야함

apt update나 install 은 이전의 것을 사용하여 새로 설치가 안됨(예전에 있던 캐쉬를 사용하므로)
9번째는 새로운 파일이므로 복사의 과정을 거침

--no-cache 를 붙여주면 캐쉬를 사용하지않고 정상적으로 설치됨(중요!)

104 docker run -it ubuntu bash
105 docker run -it ubuntu:18.04 bash
118 vi Dockerfile
119 docker build -t myimage:v1 .
120 vi ports.conf
Listen 8080
<IfModule ssl_module>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
121 cat Dockerfiles
122 cat Dockerfile
127 vi index.html
130 docker build -t web:v1 .
131 ls
132 vi Dockerfile
FROM ubuntu:20.04
ENV DEBIAN_FRONTEND noninteractive
RUN ["apt", "update"]
RUN ["apt", "install", "-y", "apache2"]
ENTRYPOINT ["apachectl"]
CMD ["-D", "FOREGROUND"]
EXPOSE 80/tcp
ADD ports.conf /etc/apache2/ports.conf
COPY index.html /var/www/html/index.html
133 docker build -t web:v1 .
134 docker tag web:v1 web:latest
135 docker image ls
136 docker tag web:v2 web:latest
137 docker image prune
138 docker image ls
139 docker run -d -p 80:8080 web
140 docker ps
141 curl localhost
142 docker build --no-cache -t web:v3 .
143 docker image ls
144 vi Dockerfile
145 vi ports.conf
146 history
vagrant@docker:~/build$

확인해보기) 이미지 레이어?
익스포즈에선 포트가 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 는 실제 서비스 포트와 연동되지 않으므로 유의해야함.