Dockerfile 명령어

test·2021년 12월 29일

docker

목록 보기
4/6
post-thumbnail

Dockerfile 명령어 이해하기

앞서 설명한 Dockerfile 명령어에 대해 깊게 이해하기

1. LABEL

  • LABEL은 [key]=[value] 형식으로 메타 데이터를 넣을 수 있는 기능
  • 작성자, 버전, 설명, 작성일자 등을 넣음
# Dockerfile
FROM httpd:alpine
LABEL maintainer="test@gmail.com"
LABEL version="1.0.0"
LABEL description="test dockerfile description"

2. COPY

  • 지정한 디렉토리 복사
  • test_doc경로에 있는 파일을 이미지 내부 htdocs 디렉토리로 복사
# Dockerfile
COPY ./test_doc /usr/local/apache/htdocs

3. CMD

  • CMD 명령어 작성 방법으로는 세가지가 있지만 대표적인 방법만 설명
  • CMD 명령은 하나만 작성. 여러개 작성 하더라도 마지막 CMD만 적용
  • CMD 명령은 FROM에 설정한 이미지의 기본 CMD 명령을 덮어씌운다
  • [중요] 하지만 터미널 명령 즉 run 명령어에 포함시킨 CMD 명령은 Dockerfile 설정 CMD 명령어를 덮어 씌운다
# Dockerfile
CMD ["executable", "param1", "param2", ...]
CMD ["/bin/sh", "-c, "echo", "Hello World"]

4. ENTRYPOINT

  • 이미지에 명령어를 고정시킨다.
  • ENTRYPOINT는 CMD 명령어를 인자가진다.
# Dockerfile
ENTRYPOINT ["bin/echo", "hello"]
  • 이해하기
    Dockerfile에 echo 로 hello라는 명령어를 입력하고 build 후
    docker run -dit -p testweb /bin/sh World 를 입력하게되면
    결과는 "hello /bin/sh World" 라고 나온다.
    즉 /bin/sh가 명령어는 ENTRYPOINT를 덮어씌우지 못하고, 명령어로 인지되는게 아니라 인자로 인지되어 hello 뒤에 텍스트로 인식되어 출력된다.

5. RUN

  • 이미지들은 여러 패키지들을 설치해 만든 것
  • 이 여러 패키지에 원하는 패키지를 더해 이미지를 생성할 수 있게 해준다.
  • ubuntu에 apache서버를 설치해 이미지로 만들고 싶다면
# Dockerfile
FROM ubuntu
RUN apt-get update
RUN apt-get install -y apache
# -y 는 설치 중 y/n 가 나오면 무조건 y로 설치

6. EXPOSE

  • 컨테이너 내부 특정 포트를 open
  • docker-compose 에서 이미지 끼리 내부 통신 할 때 주로 사용
  • 외부에서 포트로 접속 할 때는 -p 옵션으로 접속
# Dockerfile 80port open
EXPOSE 80

7. ENV

  • 환경변수 설정
  • 예를 들어 MYSQL 설치 시 패스워드와 데이터베이스 설정
# Dockerfile
FROM mysql
ENV MYSQL_ROOT_PASSWORD=1234
ENV MYSQL_DATABASE=testdb

8. WORKDIR

  • RUN, CMD, ENTRYPOINT 명령이 실행 될 디렉토리 설정
# Dockerfile
FROM httpd:alpine
WORKDIR /usr/local/apache/htdocs
CMD /bin/cat index.html

#. logs

  • 컨테이너 에러 또는 출력 결과 확인
docker logs {container ID or NAME}

#. kill

  • 컨테이너 즉시 중지
  • stop은 실행중인 단계가 끝난 후에 중지하지만 kill은 즉시 중지
docker kill {container ID or NAME}







참조자료 : 잔재미코딩님의 docker 강의

profile
bedev

0개의 댓글