DOCKER
도커란
- 도커는 컨테이너 기반의 오픈소스 가상화 플랫폼 이다
- 컨테이너란 프로그램(운영체제,소프트웨어)을 담는 격리된 공간을 의미 한다.
- WSL(Linux용 Windows 하위 시스템)은 기존 Windows 데스크톱 및 앱과 함께 Windows 직접 Linux 명령줄 도구 및 GUI 앱과 함께 Linux 파일 시스템을 실행할 수 있는 Windows 운영 체제의 기능입니다.
도커설치
- WSL2 설치
- 리눅스용 하위 시스템 사용 설정. PowerShell 관리자 권한으로 실행
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
- Virtual Machine 플랫폼 옵션 기능 사용 설정
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
- 시스템 재시작
- 리눅스 커널 업데이트 설치 : wsl_update_x64.msi
- WSL2를 기본 버전으로 설정
wsl --set-default-version 2
- Microsoft store에서 ubuntu(linux) 검색하여 설치
- 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