도커란

  • 도커는 컨테이너 기반의 오픈소스 가상화 플랫폼 이다
  • 컨테이너란 프로그램(운영체제,소프트웨어)을 담는 격리된 공간을 의미 한다.
  • WSL(Linux용 Windows 하위 시스템)은 기존 Windows 데스크톱 및 앱과 함께 Windows 직접 Linux 명령줄 도구 및 GUI 앱과 함께 Linux 파일 시스템을 실행할 수 있는 Windows 운영 체제의 기능입니다.

도커설치

  1. WSL2 설치
  2. 리눅스용 하위 시스템 사용 설정. PowerShell 관리자 권한으로 실행
      dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    
  3. Virtual Machine 플랫폼 옵션 기능 사용 설정
     dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
    
  4. 시스템 재시작
  5. 리눅스 커널 업데이트 설치 : wsl_update_x64.msi
  6. WSL2를 기본 버전으로 설정
        wsl --set-default-version 2
    
  7. Microsoft store에서 ubuntu(linux) 검색하여 설치
  8. docker desktop 설치

Dockerfile

FROM openjdk:11-jre
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar", "/app.jar"]
  • FROM : Dockerfile은 FROM부터 시작해야하며 기본 이미지를 기반으로 설정추가
  • ARG :
  • COPY
  • ENTRYPOINT
  • RUN

  • ADD
  • ENV
  • EXPOSE
  • LABEL
  • STOPSIGNAL
  • USER
  • VOLUME
  • WORKDIR
  • ONBUILD

도커 명령어

  • 도커 이미지 파일 만들기(빌드)
    docker build -t cyanthin/quiz:0.1 .			
    
    • -t 또는 –tag : 태그명 지정
    • 이미지이름 = <도커허브계정>/<이미지이름>:<태그>
    • 태그를 생략하면 latest로 지정됨
  • 도커 이미지 리스트
    docker images
    
  • 도커 이미지 삭제
    docker rmi 이미지ID
    
  • 컨테이너 시작
    docker run -d -p 80:80  <이미지태그> 
    docker run -d -p 80:80  -n <컨테이너이름>  <이미지태그> 
    docker run -d -p 80:80  -v <호스트폴더>:<컨테이너폴더>  <이미지태그>
    
    sudo docker run -d -p 8080:8080 -v /home/ubuntu/images:/images -e JAVA_OPTS=-Djasypt.encryptor.password=coehddbs  -e "SPRING_PROFILES_ACTIVE=dev" --name lastweb yedam/quiz
    
    • -d : 백그라운드
    • -p : 포트 포워드
    • -n : 컨테이너 이름
    • -v : 볼륨 연결
    • Docker 컨테이너들은 리눅스 위에서 프로세스로서 동작합니다. macOS나 Windows 위에서 가상화된 환경에서 동작.
  • 컨테이너 리스트
    docker ps       //실행중인 컨테이너만 조회
    docker ps -a    //모든 컨테이너 조회
    docker ps -aq   //모든 컨테이너 ID만 조회     
    
    • -a : all
    • -q : quite 컨테이너 ID만 보여줌
  • 컨테이너 중지
    docker stop <컨테이너 ID> 
    
  • 컨테이너 삭제
    docker rm <컨테이너 ID> 
    docker container rm <컨테이너 ID> 
    docker rm -f <컨테이너 ID>     //실행중인 컨테이너 강제 삭제
    
    • rm : remove
    • -f : force
    • 컨테이너 작업을 하다보면 Docker 컨테이너가 하염없이 쌓여만 가는데 필요 없는 프로세스를 kill하는 것처럼, 사용하지 않는 컨테이너도 삭제하는 것이 좋다.
  • 컨테이너 로그보기
    docker logs yedam_quiz
    
  • 컨테이너의 shell에 접속(안으로 들어가기)
    docker exec -it  컨테이너ID  /bin/bash 
    docker exec -it  컨테이너ID  /bin/sh
    
    • exec : 컨테이너에 특정 명령 실행
    • -i : stdin 표준입출력을 열고
    • -t : 가상 tty를 통해 접속
    • /bin/bash : 컨테이너에서 사용할 셀
  • 컨테이너에 vi 설치
    apt-get update
    apt-get install vim
    
  • 도커 허브에 올리기
    docker login
    docker push <이미지태그>
    docker push cyanthin/quiz:0.1
    

Tags:

Categories:

Updated: