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 |
최근댓글