지시어
CMD / ENTRYPOINT
Dockerfile 로 이미지 생성 1
# 디렉토리 생성
vagrant@docker:~$ mkdir build
vagrant@docker:~$ cd build/
# Dockerfile 작성
vagrant@docker:~/build$ vi Dockerfile
FROM centos:7
COPY aaa /tmp/aaa
# 이미지 생성
vagrant@docker:~/build$ docker build -t myimage:v1 .
Sending build context to Docker daemon 3.072kB
Step 1/2 : FROM centos:7
---> 8652b9f0cb4c
Step 2/2 : COPY aaa /tmp/aaa
---> 70eeb36a1579
Successfully built 70eeb36a1579
Successfully tagged myimage:v1
Dockerfile 로 이미지 생성 2
# Dockerfile 파일 생성
vagrant@docker:~/build$ vi Dockerfile
FROM ubuntu:20.04
ENV DEBIAN_FRONTEND noninteractive # 패지키를 설치할때 대화형 모드로 물어보지 않는다
RUN ["apt", "update"]
RUN ["apt", "install", "-y", "apache2"]
ENTRYPOINT ["apachectl"]
CMD ["-D", "FOREGROUND"]
EXPOSE 8080/tcp #기본값이 tcp 이기때문에 생략가능
ADD ports.conf /etc/apache2/ports.conf
COPY index.html /var/www/html/index.html
# ports.conf 파일 생성
vagrant@docker:~/build$ vi ports.conf
Listen 8080
<IfModule ssl_module>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
# index.html 파일 생성
vagrant@docker:~/build$ vi index.html
ldh
# 이미지 생성
vagrant@docker:~/build$ docker build -t ldh:v1 . # . 도커파일이 현재 디렉토리에 있다
Sending build context to Docker daemon 5.12kB
Step 1/9 : FROM ubuntu:20.04
---> 9873176a8ff5 # 컨테이너를 띄우고
Step 2/9 : ENV DEBIAN_FRONTEND noninteractive
---> Running in 17ef9932ed45 # 커밋하여 이미지를 만든다
Removing intermediate container 17ef9932ed45
---> f43762f728fe # 만든 컨테이너 삭제
Step 3/9 : RUN ["apt", "update"]
---> Running in cd109b3054b4
# 이미지 확인
vagrant@docker:~/build$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ldh v1 99bf895fb720 7 seconds ago 215MB
# 컨테이너 생성
vagrant@docker:~/build$ docker run -d --name ldhcon ldh:v1
# 컨테이너 확인
vagrant@docker:~/build$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
05c913381697 ldh:v1 "apachectl -D FOREGR…" 20 seconds ago Up 19 seconds 80/tcp ldhcon
# 반영이 잘 되었는지 확인
vagrant@docker:~/build$ curl 172.17.0.6:8080
ldh
# 추가
vagrant@docker:~/build$ docker run -d -p 80:8080 ldh
vagrant@docker:~/build$ curl localhost
ldh
Dangle Image
이미지를 생성할때 오류가 나서 남은 이미지
docker image prune 으로 삭제 가능하다
Using cache
이미지를 빌드 할 때 캐시를 사용하기 때문에 명령어를 실행하지 않는다
update를 해야 할 상황에도 하지 않을 수 있다
docker build --no-cache 명령어를 사용하여 캐시를 사용하지 않고 명령어를 전부 실행한다
'클라우드 > 도커(Docker)' 카테고리의 다른 글
도커 Docker 레이어 (Layer) , Port (포트) (0) | 2021.07.05 |
---|---|
도커 Docker .dockerignore 파일 (0) | 2021.07.05 |
도커 Docker 이미지 제작 2 (0) | 2021.07.02 |
도커 Docker 이미지 제작 1 (0) | 2021.07.02 |
도커 Docker 로드밸런싱 (0) | 2021.07.02 |