Backend

docker quick start 따라해보기

!쪼렙조햄 2020. 6. 7. 18:19
반응형

도커 퀵 스타트

  • docker 환경설정
    • mac - docker 데스크톱
    • docker run hello-world
      • library : 도커 허브의 공식 이미지가 저장되어 있는 네임스페이스
      • local에서 hello-world:latest 를 찾을 수 없기 때문에 library/hello-world에서 pull 해오게 된다
    • docker image ls
      • repository, tag 확인 가능
    • docker ps --all
      • 여전히 running 중이면 --all 없이도 뜬다
  • Dockerfile
    • Dockerfile 은 컨테이너를 위해 개인 파일 시스템을 조립하는 방법을 설명
    • 응용 프로그램을 컨테이너화 하기 위함
  • docker build --tag bulletinboard:1.0 /
    • successfully tagged bulletinboard:1.0 이 뜸
    • image를 빌드하고 테스트 한것
  • Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
    • 위 에러 발생하는 경우
    • docker을 실행시켜줘야 한다
  • docker run --publish 8000:8080 --detach --name bb bulletinboard:1.0
    • --publish : host의 8000번 포트를 container의 8080번 포트로 포워딩
    • --detach : container을 백그라운드에서 실행

Docker와 함께 개발

  • Docker 장점을 살릴 수 있는 앱 개발 방식
    • image lean 하게 유지하기
    • kubernetes와 함께 사용하기
    • swarm service
  • Best Practice
    • 이미지를 작게 유지하기
      • 작은 이미지는 네트워크를 통과하는 속도와 메모리에 로드되는 속도가 더 빠르다
      • 다중 페이지 빌드 사용하기
        • maven 이미지를 사용하여 java를 작성한 후 다시 설정
        • tomcat java 아티팩트를 이미징 및 복사하여 앱을 배포할 수 있는 올바른 위치에 복사
        • 최종 이미지는 빌드에서 가져온 모든 라이브러리를 포함하지 않지만, 이러한 라이브러리를 실행하는데 필요한 아티팩트와 환경만 포함
      • 다중 페이지 빌드를 사용하지 않는 경우
        • 별도의 레이어 수 줄이기
          • RUN apt-get -y update, RUN apt-get install -y python
          • RUN apt-get -y update && apt-get install -y python
            • 이렇게 두번째 처럼 작업을 수행하면, 첫번째의 경우에 레이어 두개 생성하는데, 두번째의 경우에는 레이어를 한개만 생성하게 된다
      • 공통점이 많은 이미지의 경우 공유 구성 요소를 사용하여 공통부분 이미지 생성

Dockerfile 모범사례

  • dockerfile
    • 모든 명령을 순서대로 포함하는 텍스트 파일로 지정된 이미지를 작성해야 한다
    • FROM : 층을 만든다 ubuntu:18.04 docker 이미지 활용
    • COPY : docker 클라이언트의 현재 디렉토리에 있는 파일을 추가
    • RUN : 애플리케이션을 구축하기
    • CMD : 컨테이너 내에서 실행할 명령을 지정
  • empemeral containers
    • dockerfile로 만든 이미지는 최대한 빨리 죽는 컨테이너를 만들도록 해야 한다
      • container은 중지, 제거, 재건, 대체가 빠르게 작게 되어야 한다
  • 빌드컨텍스트
    • 현재 작업 디렉토리 : 빌드 컨텍스트
    • 기본적으로 dockerfile은 여기에 있는 것으로 간주되고, -f을 이용하여 변경 가능하다
    • echo -e "FROM busybox\nCOPY~~~"
      • echo 명령어의 e option : escape 문자열 사용 가능하도록 함
반응형