Dockerfile이란?

  • Container를 만들 수 있도록 하는 명령어들의 집합

ref: docs.docker.com/engine/reference/builder/

 

Dockerfile reference

 

docs.docker.com

 

 

 

Dockerfile 인스트럭션

인스트럭션 설명 형식
FROM 우분투와 같은 운영체제 이름이나 필요한 애플리케이션 이름을 지정 FROM ubuntu:14.04
MAINTANER 이미지를 생성한 사람의 이름 및 정보  
RUN 컨테이너가 빌드될 때 실행할 명령어 RUN ["mv", "1234", "5678"]
EXPOSE 컨테이너 외부에 노출할 포트 지정 EXPOSE 8080
ENV 환경변수 이름지정 ENV abc tmp
echo ${abc}
CMD 컨테이너가 시작될 때 실행할 명령어 CMD ["echo", "1234"]
CMD ["node", "/hello.js"]
ENTRYPOINT 컨테이너가 실행될 때 기본 명령어 지정
(CMD 와 달리 옵션을 넘길 수 있음)
ENTRYPOINT ["python"]
...
$
sudo docker run t 이미지 -c "print('1234')"
WORKDIR 작업할 디렉토리를 세팅 WORKDIR /project
USER 도커 실행 시 사용할 유저 이름 또는 uid 를 지정
설정하지 않으면 기본 root으로 실행
USER user 또는 USER user:group
VOLUME 호스트의 디렉토리를 도커에 연결
커밋 없이 사용 가능하며 주로 로그 수집이나 데이터 저장용도로 사용
VOLUME [/"tmp"]
COPY 컨테이너 빌드시 호스트의 파일이나 디렉토리를 복사할때 사용 COPY file /copy/to/path

ADD 컨터이너 빌드시 호스트의 파일(tar,url포함)을 컨테이너로 복사할때 사용 ADD http://example.com/big.tar.xz /usr/src/things/
ADD rootfs.tar.gz /
ARG    
SHELL 원하는 타입의 쉘을 사용 SHELL ["/ sh ", c"]
SHELL [" cmd ", "/S", "/]
# comment  

 

 

nginx image생성 및 dockerhub push test

  • # docker build -t fastwon1/docker-test .
    • Docker이미지 빌드
  • # docker push fastwon1/docker-test
    • image이름을 [계정/image이름] 형식으로 변경이 필요한경우
      • # docker tag docker-test fastwon1/docker-test
    • Private repository에 push
    • 이미지의 namespace와 자신의 아이디가 일치해야한다
      • # docker tag foo/sample_image:latest username/sample_image:latest
        • namespace가 일치하지 않는다며 태그명 변경으로 해결할 수 있다
    • 에러시 https://hub.docker.com의 id/pass로 docker login이 필요

 

 

Docker history 확인

  • # docker history nginx
    • Docker이미지를 생성하면서 발생한 명령어들을 확인할 수 있다

 

 

Dockerfile 작성 및 apache2 container 생성 테스트

FROM ubuntu:18.04  
LABEL maintainer="jaehwan.jaon <fastwon1@gamil.com>"
RUN apt-get update \
    && apt-get install -y apache2 \
    && apt-get install -y --no-install-recommends apt-utils
RUN echo "apache2 start test" > /var/www/html/index.html
EXPOSE 80
CMD ["/usr/sbin/apache2ctl","-DFOREGROUND"]

 

dockerfile을 이용하여 container 생성

# docker build -t fastwon1/apathc2-test:v1 .

생성한 Docker image로 container 생성
web 접속

 

 

기타

명령어 설명
sudo docker container prune 중지 된 모든 컨테이너를 제거
sudo docker image prune 태그가 없는 모든 이미지 파기
sudo docker system prune 사용하지 않는 모든 데이터 삭제 이미지 , 컨테이너 , 볼륨 , 네트워크등
sudo docker container stats 컨테이너 사용 현황 출력

'클라우드 > Docker' 카테고리의 다른 글

Docker resource 관리  (0) 2021.08.14
Docker registry  (0) 2021.08.11
Docker 명령어 테스트  (0) 2021.08.11
Docker?  (0) 2020.12.27
Docker 설치  (0) 2020.12.27

+ Recent posts