서버 인프라/Docker

Dockerfile 작성하기

트리맨스 2021. 8. 13. 00:56
반응형

 

Dockerfile 제작하기


도커 파일은 가상 환경을 만들기에 매우 좋은 도구이다. 도커 파일 제작법과 사용법을 간단히 정리해 볼까 한다.

 

FROM : 도커 파일의 기본 이미지를 다운받는다. 이미지 목록은 도커 허브에서 볼 수 있다. 

예) FROM node (노드 최신버전의 도커 이미지를 다운)

 

ENV : 가상환경의 환경변수를 설정한다. 리눅스의 export 랑 비슷한 명령어인듯

예) ENV MYNAME=TREE (myname 을 tree 라고 정의)

 

RUN : 가상환경에서 다음의 쉘 명령어를 실행

예) RUN ls -al (쉘에서 ls -al 명령어를 실행하는 것과 같음)

 

WORKDIR : RUN, CMD, ENTRYPOINT 의 작업 폴더를 설정한다. cd 명령어랑 비슷한

예) WORKDIR /usr/src/app (해당 폴더에서 작업하게)

 

COPY a b : a는 로컬 폴더, b는 가상 머신 폴더, a를 b로 복사한다.

 

EXPOSE num : 외부로 num 포트를 열어둔다. 웹 서버 환경을 구축할 때 필수이다.

 

CMD ["a",...] : 쉘 명령어를 실행한다. a ...

 

 

다음 파일의 내용은 도커파일 예시이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 기본으로 node 프로그램 실행 가능한 컨테이너 다운
FROM node:12.16.2 
 
# TZ 환경변수 입력
ENV TZ=Asia/Seoul
 
# mkdir -p /usr/src/app 명령어 실행
RUN mkdir -/usr/src/app
 
# 도커파일 기준 현재 실행 폴더 변경
WORKDIR /usr/src/app
 
# cd /usr/src/app 실행
RUN cd /usr/src/app
 
# 로컬에 있는 모든 파일을 컨테이너의 /usr/src/app 폴더로 복사
COPY . /usr/src/app
 
# yarn install, yarn build 명령어 실행
RUN yarn install
RUN yarn build
 
# 도커 컨테이너 내부에서 3000번 포트 열기
EXPOSE 3000
 
# yarn start:dev 실행
CMD ["yarn""start:dev"]
cs

 

 

Dockerfile 사용하기 (cli 사용)


1. 이미지 파일을 제작한다.

명령어 예) docker build -f dockerfile --tag image (이름이 dockerfile인 파일을 실행해 태그가 image 인 이미지 파일을 생성)

 

2. 이미지 파일을 실행한다.

명령어 예) docker run -d -p3000:5000 image (-d : 백그라운드로 -p : 외부 3000 내부 5000번 포트, image 파일 실행)

 

간단히 dockerfile을 이용한 이미지 파일이 실행이 된다. 

 

Docker cli 사용하기 (리눅스 기준)


PC 에서는 Docker GUI가 있으니 설정하기 쉬워 보이지만, 항상 특수한 상황이 있기 마련이다. GUI를 사용하지 못하는 경우에는 Command Line을 이용해서 도커에 관련된 설정들을 제어해야 한다. 많이 사용하는 cli 명령어도 몇개 정리해 보았다.

 

 

dockered : 도커 실행

 

service docker start : 도커 실행

 

systemctl status docker : 현재 도커가 실행되어 있는지 확인

 

docker ps : 현재 컨테이너 목록 (유용한 옵션, a : 모든 컨테이너, q : 컨테이너 id 만 출력)

 

docker images : 이미지 목록 출력하기 (유용한 옵션, q : 이미지 id 만 출력)

 

docker stop : 컨테이너 중지 (입력변수 : 컨테이너 id) => 응용 명령어 (모든 컨테이너 일시중지) : docker stop $(docker ps -aq)

 

docker rm : 컨테이너 삭제 (입력변수 : 컨테이너 id) => 응용 명령어 (모든 컨테이너 일시중지) : docker rm $(docker ps -aq)

 

docker rmi : 이미지파일 삭제 (입력변수 : 이미지 id) => 응용 명령어 (모든 이미지 삭제) : docker rmi $(docker images -q)

 

service docker stop : 도커 중지

 

 

docker  재실행 하기


도커가 실행되고 있는 ec2 컨테이너를 종료했다가 재실행하면 docker 서비스는 올라가 있는데 실행이 되지 않는 모습을 볼 수 있다. 처음에 이 현상을 겪으면서 몇십분을 날렸는지 모르겠다.

 

systemctl status docker 명령어를 치면 Active: inactive (dead) 내용이 보일 때가 있다. 이 때는 inactive된 도커(docker service)를 active로 돌리면 된다.

 

sudo systemctl enable --now docker 

 

위 명령어를 입력후 다시 도커가 실행하고 있는지 확인하자. 잘 돌아갈 것이다.

반응형