Docker(3)

박찬영·2024년 7월 10일

Docker

목록 보기
3/6

1. Dockerfile

  • dockerfile은 도커 이미지를 생성하기 위한 스크립트 파일이다.
  • 여러 키워드를 사용하여 dockerfile을 작성하여 빌드를 보다 쉽게 수행할 수 있다.

2. Dockerfile Instruction

1. FROM

  • From 키워드를 사용하여 base가 되는 image를 지정한다.
  • 주로 OS 이미지나 런타임 이미지를 지정한다.

2. RUN

  • 이미지를 빌드할 때 사용하는 커맨드를 설정할 때 사용한다.

3. ADD

  • 이미지에 호스트의 파일이나 폴더를 추가하기 위해 사용한다.
  • 만약 이미지에 복사하려는 디렉토리가 존재하지 않으면 docker가 자동으로 생성된다.

4. COPY

  • 호스트 환경의 파일이나 폴더를 이미지 안으로 복사하기 위해 사용한다.
  • 'ADD'와 동일하게 동작하지만 가장 확실한 차이점은 URL을 지정하거나, 압축 파일을 자동으로 풀지 않는다.

5. EXPOSE

  • 이미지가 통신에 사용할 포트를 지정할 때 사용

6. ENV

  • 환경 변수를 지정할 때 사용한다.
  • 여기서 설정한 변수는 $name, ${name}의 형태로 사용할 수 있다.
  • ${name:-else} 문법도 사용할 수 있다.
    • name이 정의가 안되어 있다면 else가 사용된다.

7. CMD

  • 도커 컨테이너가 실행될 때 실행할 커맨드를 지정한다.
  • 'RUN'과 비슷하지만 CMD는 도커 이미지를 빌드할 때 실행되는 것이 아니라 컨테이너를 시작할 때 실행된다는 것이 다르다.

8. ENTRYPOINT

  • 도커 이미지가 실행될 때 사용되는 기본 커맨드를 지정한다.

9. WORKDIR

  • RUN, CMD, ENTRYPOINT 등을 사용한 커맨드를 실행하는 디렉토리를 지정
  • -w 옵션으로 오버라이딩 할 수 있다.

10. VOLUME

  • 퍼시스턴스 데이터를 저장할 경로를 지정할 때 사용한다.
  • 호스트의 디렉토리를 도커 컨테이너에 연결할 때 사용한다.
  • 주로 휘발성으로 사용되면 안되는 데이터를 저장할 때 사용한다.

11. SHELL

  • dockerfile 내에서 실행되는 명령어들을 어떤 쉘을 사용하여 실행할지 지정한다.
  • 기본적으로 '/bin/sh-c'가 사용되지만 이를 변경하고 싶을 때 사용한다.

12. LABEL

  • 이미지에 메타데이터를 추가한다.
  • 메타데이터는 이미지에 대한 설명, 버전, 유지보수 정보 등을 포함할 수 있다.

13. USER

  • 컨테이너 내에서 실행될 명령어의 사용자 계정을 지정한다.
  • 보안상의 이유로 root 사용자 대신 다른 사용자를 설정할 수 있다.

14. ARG

  • 빌드 시점에 전달할 수 있는 변수를 정의한다.
  • 이 변수는 dockerfile 내부에서만 사용 가능하며, 런타임 시에는 사용할 수 없다.

15. STOPSIGNAL

  • 컨테이너를 종료할 때 사용되는 시스템 콜을 지정한다.
  • 기본값은 SIGTERM 이다.

16. HEALTHCHECK

  • 컨테이너가 정상적으로 동작하고 있는지 확인하기 위한 건강 상태 체크를 설정한다.
  • 주기적으로 실행되어 컨테이너의 상태를 점검한다.

3. 실습

index.html

<html>
        <meta charset="utf-8"/>
        <body>
                <h1>Kakao Tech Bootcamp Cloud 과정</h1>
                <p>카카오테크 클라우드 과정 chanyoung입니다. </p>
        <body>
</html>

Dockerfile

FROM httpd

COPY index.html /usr/local/apache2/htdocs/

image 생성 후 container run

docker build -t test123 .		//도커파일 빌드를 통한 이미지 생성
docker build -t test123:1.1 .	//태그 포함
docker container run --name test123_app -p 80:80 test123

http://192.168.64.6:8080 에서 확인

profile
블로그 이전했습니다 -> https://young-code.tistory.com

0개의 댓글