Docker

7/5

띠요옹 2021. 7. 5. 10:15

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 는 실제 서비스 포트와 연동되지 않으므로 유의해야함.