Docker란?

둥그냥·2021년 7월 11일
0

공부 기록

목록 보기
3/10

Docker란?

windows에서 개발하고 막상 서버에 올렸는데 서버는 Linux라서 에러가 난다던가, 이런 경우가 있다!

Docker를 사용해서 다른 머신에서도 같은 환경을 구현할 수 있다!

  1. Dokcer를 깐다
  2. Dockerfile에 구현하고 싶은 환경을 설정해 준다(우분투, 파이썬, 깃 등!)
  3. Docker가 이 파일을 읽고 설정한 환경과 같은 버츄얼 컨테이너를 컴퓨터에 만든다.

서버로 코드를 업로드할 때 Dockerfile도 업로드하면 해결

=> 컨테이너들은 각기 분리,독립되어있다
=> 컨테이너 여러개를 만들어서 원하는 환경을 얼마든지 다양하게 모듈식으로 관리 가능하다

프로젝트 결과물을 도커화(Dokerize) 해보기

도커 설치

  1. 도커 설치
    본인 컴퓨터의 OS에 맞는 버전을 설치합니다
  2. cmd에서 docker -v로 설치된 버전을 확인할 수 있습니다

도커 이미지 vs 컨테이너

Docker Image

  • 도커에서 서비스 운영에 필요한 서버 프로그램, 소스 및 라이브러리, 컴파일 된 실행 파일을 묶는 형태
  • 특정 프로세스를 실행하기 위한 모든 파일과 환경을 지닌 것으로 더 이상 컴파일하거나 설치할 필요가 없는 상태의 파일
  • Dockerfile로 만들어 진게 이미지

Docker Container

  • 이미지를 실행한 상태
  • 격리된 공간에서 프로세스를 동작시키는 기술
  • 종료되어도 메모리에 삭제되지 않고 남아있음. 종료되어도 다시 시작할 수 있다.

도커 명령어

  1. 컨테이너 조회
    docker ps -a (-a는 정지된 컨테이너까지 조회하는 옵션이다)

  2. 컨테이너 삭제
    docker rm [컨테이너 ID or NAME]

    컨테이너 실행 시 docker run --name=[컨테이너 이름]과 같이 --name 옵션을 추가하면 자동으로 만들어진 이름 대진 지정된 이름으로 컨테이너를 생성 가능하다, 또 ID는 앞 일부분만 입력 가능하다

  3. 도커 이미지 조회
    docker images

  4. 도커 이미지 삭제
    docker rmi [이미지 ID or 이미지명:TAG명]

샘플 서비스(Jenkins)를 이용한 도커 실습

  1. Jenkins를 도커 컨테이너로 실행
    docker run --name myjenkins -d -p 9080:8080 jenkins/jenkins

  2. Jenkins 서버 컨테이너의 bash 실행
    docker exec -it myjenkins bash

  3. 컨테이너의 OS 버전 확인
    cat /etc/issue

  4. Admin 패스워드 확인하기

    • 컨테이너 안(bash)에서 확인하기
      cat /var/jenkins_home/secrets/initialAdminPassword
    • 한번에 확인하기
      docker exec myjenkins cat /var/jenkins_home/secrets/initialAdminPassword
    • 컨테이너 안에 있는 패스워드 파일을 개발 PC로 복사하기
      docker cp myjenkins:/var/jenkins_home/secrets/initialAdminPassword ./

    Linux의 cat 대신 Windows에서는 type을 사용하면 확인할 수 있다.
    type initialAdminPassword
    '

실제 프로젝트 도커 이미지 제작

1.프론트엔드 도커 이미지 제작

우선 project/Dockerfile을 작성 후 도커 이미지를 빌드해야한다.
Vue2로 만든 프로젝트기에 vuejs 도커화하기를 참고하면 된다!

npm run build를 사용하는데, 나는 npm run serve로 배웠다. 전자로 입력하니 에러가 났다. 나중에 이 차이점을 공부하고 해결해봐야겠다. 아마 build를 하면 build 결과물은 dist directory에 담기는 것 같다.

2. 백앤드 도커 이미지 제작

Spring boot 기준

1. 로컬에서 실행 및 확인
  • maven wrapper를 사용하여 빌드하는 예시
  1. cmd에서 프로젝트로 이동해준다.
  2. java -jar target\happyhouse_springboot-0.0.1-SNAPSHOT.war
    (target 폴더에 들어가보면 파일명을 알 수 있다.)
  3. 정상 동작을 확인 후 종료해준다.
2. Dockerfile 만들기

Spring Boot 도커화하기

원문

FROM openjdk:8-jdk-alpine
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

나의 경우에는 jar가 아니라 war이기 때문에 다음과 같이 해주었다.

FROM openjdk:8-jdk-alpine
ARG JAR_FILE=target/*.war
COPY ${JAR_FILE} app.war
ENTRYPOINT ["java","-jar","/app.war"]
3. 도커 이미지 빌드

docker build . -t back:0.1

4. 도커로 백엔드 실행 및 확인

docker run -it -p 8080:8080 --rm back:0.1

잘 실행된 것이 보인다. 그런데 이상하게 페이지가 안들어가진다.. 포트번호도 맞추려고 노력했는데 이유는 모르겠다 ㄱ-

0개의 댓글