본문 바로가기

클라우드/도커(Docker)

도커 Docker Dockerfile 지시어

지시어

 

Dockerfile reference

 

docs.docker.com


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 명령어를  사용하여 캐시를 사용하지 않고 명령어를 전부 실행한다