1. ENTRYPOINT

- docker run 시에 함께 넣어지는 CMD 명령어에 덮어씌워지지 않고, 반드시 실행해야하는 명령을 기입할 때 사용

    - 이 떄, docker run 시 함께 넣어지는 명령은 ENTRYPOINT에 작성된 명령의 인자로 넣어지게 됨

#Dockerfile 
FROM httpd:alpine 

LABEL maintainer="hyeonukdev" 
LABEL version="1.0.0" 
LABEL description="test Dockerfile" 

COPY ./2021_DEV_HTML /usr/local/apache2/htdocs

ENTRYPOINT ["/bin/sh"]

 

2. RUN

- docker 는 이미지 생성시, 각 단계를 layer로 나누어 작성함

   - 이를 통해 특정 단계 변경시, 전체 이미지를 다시 다운로드 받지 않아도 됨

- RUN 명령은 이미지 생성시, 일종의 layer를 만들 수 있는 명령으로, 보통 베이스 이미지에 패키지를 설치하여, 새로운 이미지를 만들 때 많이 사용

 

#Dockerfile 
FROM ubuntu:18.04

LABEL maintainer="hyeonukdev" 
LABEL version="1.0.0" 
LABEL description="test Dockerfile" 

RUN apt-get update
RUN apt-get install -y apche2

COPY ./2021_DEV_HTML /var/www/html

ENTRYPOINT ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]

 

3. EXPOSE

- docker 컨테이너의 특정 포트를 외부에 오픈하는 설정

   - docker run -p 옵션으로 설정도 가능 : 특정 포트를 외부에 오픈하고,
     해당 포트를 호스트 PC의 특정 포트와 매핑

 

#Dockerfile 
FROM ubuntu:18.04

LABEL maintainer="hyeonukdev" 
LABEL version="1.0.0" 
LABEL description="test Dockerfile" 

RUN apt-get update
RUN apt-get install -y apche2

EXPOSE 80
COPY ./2021_DEV_HTML /var/www/html

ENTRYPOINT ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]

 

4. ENV

- 컨테이너 내의 환경변수 설정

- 설정한 환경변수는 RUN, CMD, ENTRYPOINT 명령에도 적용

#Dockerfile 
FROM mysql:latest

ENV MYSQL_ROOT_PASSWORD=password # mysql 슈퍼관리자인 root ID에 대한 pw 란에 원하는 패스워드 생성
ENV MYSQL_DATABASE=dbname # dbname 란에 원하는 데이터베이스 이름 설정

#추가
# ENV MYSQL_USER=user # user 란에 mysql 추가 사용자 ID설정
# ENV MYSQL_PASSWORD=pw # pw 란에 mysql 추가 사용자 ID의 패스워드 설정

 

* mysql 접속

$ docker run -d --name mydb mysqldb

$ docker exec -it mydb /bin/bash

$ mysql -u root -p
$ 패스워드 입력

mysql> show databases;

  - 참고로 EC2 서버에서 인바운드 규칙에 3306 포트를 추가로해야함

 

5. WORKDIR

- RUN, CMD, ENTRYPOINT 명령이 실행될 디렉토리 설정

# Dockerfile
FROM httpd:alpine

WORKDIR /usr/local/apache2/htdocs

CMD /bin/cat index.html
반응형

'SW ENGINEERING > Docker' 카테고리의 다른 글

Docker Jupyter 연동하기  (0) 2021.08.02
Docker Inspect  (0) 2021.07.23
Dockerfile 기본문법(1)  (0) 2021.07.22
Dockerfile 이란?  (0) 2021.07.22
Docker Run example  (0) 2021.07.22
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기