본문 바로가기

Docker

Dockerfile 작성 정리

반응형

해당 포스트는 inflearn.com 에서

풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, flask 배포) [풀스택 Part3]

강의를 들으며 정리한 내용이다.

 

#Dockerfile 

Dockerfile 안에 # 을 쓰면 해당 라인은 주석처리가 됨.

FROM 베이스 이미지 지정 명령 (FROM http:alpine)

LABEL 버전 정보, 작성자와 같은 이미지 설명 (LABEL version=“1.0.0”)

LABEL 자체는 컨테이너에 영향을 주지않음.

 

CMD docker 컨테이너가 시작할 때, 실행하는 쉘 명령을 지정

RUN 명령과 비슷하지만 RUN은 이미지 작성시 실행, CMD는 컨테이너를 시작할 때 실행하는 명령

—> 모든 컨테이너는 실행시에 실행하는 명령어가 있음.

위에 생성한 myweb 의 경우에는 별도로 CMD를 지정하지 않았지만 베이스 이미지에 있는 CMD정보가 저장되어 있음.

CMD설정은 한가지만 설정되며, 설정이 여러개일 경우 맨 마지막에 설정된 CMD만 실행됨.

위와 같이 CMD에 ‘’ 로 묶어주면 정상적으로 실행되지 않는다. 무조건 “”으로 묶어줘야함.

docker inspect 명령어로 설정한대로 들어갔는지 확인한다.

 

RUN 쉘 명령을 실행하는 명령(RUN[“apt-get”,’install’,’nginx’]). RUN은 이미지 작성시 실행

일종의 새로운 이미지 layer를 만드는 역할을 함.

ENTRYPOINT docker 컨테이너가 시작할 때 실행하는 쉘 명령을 지정

docker run 명령어로 컨테이너 시작시 별도 명령어도 넣을 수 있는데, 이 때 CMD 명령은 해당 명령으로

덮어씌워짐. ENTRYPOINT로 지정한 명령어는 docker run 커멘드 실행 시 함께 넣어진 별도 명령어가 있더라도 

덮어씌워지지 않고 실행됨.

EXPOSE docker 컨테이너 외부에 오픈할 포트 설정 (EXPOSE 8080)

ENV docker 컨테이너 내부에서 사용할 환경변수 지정 (ENV PATH /usr/bin:$PATH)

WORKDIR docker 컨테이너에서의 작업 디렉토리 지정

COPY 파일 또는 디렉토리를 docker 컨테이너 내부에 복사. ADD와 달리 URL은 지정할 수 없으며, 압축파일을 자동으로 풀어주지 않음.

(COPY test.tar /root/test.tar)

http://localhost:9999

 

docker inspect —> 이미지에 대한 레이블 정보를 확인 가능함.

 

CMD 부분을 “/bin/sh”, “-c”, “httpd-foregroud” 에서 “/bin/sh” 로만 변경함.

변경 후 확인해보면 컨테이너가 계속 떠있지 않고 웹서버로 접속도 불가능함.

-it 옵션을 넣어서 계속 실행되게 하지 않기때문에 바로 종료가 됨.

/bin/sh 로 CMD가 변경되어 웹서버가 뜨지 않음.

 

docker run 에 마지막에 명령어를 직접 입력하여 CMD 부분을 변경 가능하다.

Run 실행시 추가한 명령어로 변경됨을 확인가능함.

 

 

#dockerbuild

—pull 만 사용하면 이미 받아놓은 이미지를 사용함.

Docker build 옵션의 —pull=true 옵션은 이미지 생성시에 이미 있는 이미지는 새로 다운받아 사용.

 

#가끔사용하는docker명령어

docker logs 컨테이너의 로그를 확인할 수 있는 명령어

Docker stop은 즉시 중지하지 않고 현재 실행중인 단계까지는 기다린 후에 중지.

docker kill 즉시 컨테이너를 중지함. 

반응형

'Docker' 카테고리의 다른 글

Docker command - 1  (0) 2023.03.17
Docker for Windows 11  (0) 2023.03.15
Docker 이론  (2) 2023.03.15
Docker 와 micro Service  (0) 2023.03.15
Docker, Docker-compose 수동설치 (Linux CentOS 8) - 2  (0) 2022.11.30