해당 포스트는 inflearn.com 에서
풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, flask 배포) [풀스택 Part3]
강의를 들으며 정리한 내용이다.
#Dockerfile
Dockerfile 안에 # 을 쓰면 해당 라인은 주석처리가 됨.
FROM 베이스 이미지 지정 명령 (FROM http:alpine)
LABEL 버전 정보, 작성자와 같은 이미지 설명 (LABEL version=“1.0.0”)
LABEL 자체는 컨테이너에 영향을 주지않음.
CMD docker 컨테이너가 시작할 때, 실행하는 쉘 명령을 지정
RUN 명령과 비슷하지만 RUN은 이미지 작성시 실행, CMD는 컨테이너를 시작할 때 실행하는 명령
—> 모든 컨테이너는 실행시에 실행하는 명령어가 있음.
위에 생성한 myweb 의 경우에는 별도로 CMD를 지정하지 않았지만 베이스 이미지에 있는 CMD정보가 저장되어 있음.
CMD설정은 한가지만 설정되며, 설정이 여러개일 경우 맨 마지막에 설정된 CMD만 실행됨.
위와 같이 CMD에 ‘’ 로 묶어주면 정상적으로 실행되지 않는다. 무조건 “”으로 묶어줘야함.
docker inspect 명령어로 설정한대로 들어갔는지 확인한다.
RUN 쉘 명령을 실행하는 명령(RUN[“apt-get”,’install’,’nginx’]). RUN은 이미지 작성시 실행
일종의 새로운 이미지 layer를 만드는 역할을 함.
ENTRYPOINT docker 컨테이너가 시작할 때 실행하는 쉘 명령을 지정
docker run 명령어로 컨테이너 시작시 별도 명령어도 넣을 수 있는데, 이 때 CMD 명령은 해당 명령으로
덮어씌워짐. ENTRYPOINT로 지정한 명령어는 docker run 커멘드 실행 시 함께 넣어진 별도 명령어가 있더라도
덮어씌워지지 않고 실행됨.
EXPOSE docker 컨테이너 외부에 오픈할 포트 설정 (EXPOSE 8080)
ENV docker 컨테이너 내부에서 사용할 환경변수 지정 (ENV PATH /usr/bin:$PATH)
WORKDIR docker 컨테이너에서의 작업 디렉토리 지정
COPY 파일 또는 디렉토리를 docker 컨테이너 내부에 복사. ADD와 달리 URL은 지정할 수 없으며, 압축파일을 자동으로 풀어주지 않음.
(COPY test.tar /root/test.tar)
docker inspect —> 이미지에 대한 레이블 정보를 확인 가능함.
CMD 부분을 “/bin/sh”, “-c”, “httpd-foregroud” 에서 “/bin/sh” 로만 변경함.
변경 후 확인해보면 컨테이너가 계속 떠있지 않고 웹서버로 접속도 불가능함.
-it 옵션을 넣어서 계속 실행되게 하지 않기때문에 바로 종료가 됨.
/bin/sh 로 CMD가 변경되어 웹서버가 뜨지 않음.
docker run 에 마지막에 명령어를 직접 입력하여 CMD 부분을 변경 가능하다.
Run 실행시 추가한 명령어로 변경됨을 확인가능함.
#dockerbuild
—pull 만 사용하면 이미 받아놓은 이미지를 사용함.
Docker build 옵션의 —pull=true 옵션은 이미지 생성시에 이미 있는 이미지는 새로 다운받아 사용.
#가끔사용하는docker명령어
docker logs 컨테이너의 로그를 확인할 수 있는 명령어
Docker stop은 즉시 중지하지 않고 현재 실행중인 단계까지는 기다린 후에 중지.
docker kill은 즉시 컨테이너를 중지함.
'Docker' 카테고리의 다른 글
Docker command - 1 (0) | 2023.03.17 |
---|---|
Docker for Windows 11 (0) | 2023.03.15 |
Docker 이론 (2) | 2023.03.15 |
Docker 와 micro Service (0) | 2023.03.15 |
Docker, Docker-compose 수동설치 (Linux CentOS 8) - 2 (0) | 2022.11.30 |