좌충우돌 개발

Docker 시작하기

|

Docker

Docker tool 설치

docker machine 생성(터미널 접속)

  • docker-machine
  • docker-machine create —driver virtualbox 머신이름 : docker머신 생성
  • docker-machine start 머신이름 : docker데몬이 연결이 안될 때 머신 이름으로 시작한다
  • docker-machine ls : 현재 생성된 docker 머신 목록
  • docker-machine ip : docker 머신의 ip정보
  • docker-machine env docker이름 : docker 머신의 환경 정보
  • docker images : 현재 로컬에 생성된 이미지 목록(docker 데몬이 연결이 되어 있지 않으면 에러가 발생한다)
  • docker-machine env docker이름 실행했을 때의 마지막 줄 실행
    eval $(docker-machine env docker이름)
    

docker 명령어

  • docker search 이미지 검색
  • docker images : 현재 로컬에 있는 이미지 목록
  • docker rm run된이름 : run되고 있는 컨테이너 삭제
  • docker run -dit -name 컨테이너이름 이미지이름
  • docker start 컨테이너 이름 : 컨테이너 시작
  • docker stop 컨테이너 이름 : 컨테이너 중지
  • docker restart 컨테이너 이름 : 컨테이너 재시작
  • docker attach 컨테이너 이름 : 시작된 컨테이너에 접속
    • 컨테이너 접속 시 bash 상태에서 exit나 ctrl+D를 하게되면 컨테이너 정지
    • ctrl+P, ctrl+Q를 차례대로 누르면 컨테이너가 정지되지 않고 빠져나옴
  • docker ps -a : 컨테이너 목록 확인
  • docker stop 컨테이너이름 : 컨테이너 정지
  • docker exec -it 컨테이너이름 /bin/bash : 외부에서 컨테이너 안으로 명령어 실행하기
  • docker inspect 컨테이너이름 : 컨테이너 상세정보

docker에 ubuntu 설치

  • docker pull ubuntu : ubuntu 이미지 다운 받기
  • docker run -name 이름 ubuntu : 이미지로 컨테이너 생성하기

docker에 한글팩 ubuntu 설치

  • docker 이미지 생성 Dockerfile 파일내용
FROM ubuntu:latest

RUN apt-get update

RUN apt-get install -y language-pack-ko

RUN locale-gen ko_KR.UTF-8
ENV LANG ko_KR.UTF-8
ENV LANGUAGE ko_KR.UTF-8
ENV LC_ALL ko_KR.UTF-8

CMD /bin/bash
  • docker build —tag ko_ubuntu:latest ./

  • docker run -it -—name ko_ubutu ko_ubuntu /bin/bash

-> kor_ubuntu 이미지로 docker ko_ubuntu 이름으로 docker 실행하고 bash쉘로 로그인 한다

  • docker exec -it docker실행이름

Docker 이미지 만들기

  • docker hub(web) 나 docker search 명령어를 통해 image를 검색
  • Dockerfile을 통해 이미지를 만들수 있다
    • 아래 예제 같이 설치해야 하는 작업들을 작성한다
FROM podbox/java8
RUN apt-get update

RUN apt-get install  -y language-pack-ko

# set locale ko_KR
RUN locale-gen ko_KR.UTF-8

ENV LANG ko_KR.UTF-8
ENV LANGUAGE ko_KR.UTF-8
ENV LC_ALL ko_KR.UTF-8

RUN apt-get install -y \
 vim \
 git

CMD /bin/bash
  • docker ps -a : 현재 떠있는 컨테이너 목록
  • docker stop $(docker ps -a -q) : 실행 중인 모든 컨테이너 중지
  • locale
  • docker start 이미지 이름
  • docker build -t ko_java8 .

docker에 서비스 배포하기

공통

git

  • git 과 java 가 설치된 컨테이너를 실행한다
  • git clone url : 최초 git에서 다운 받을 때
  • git pull url : 변경된 사항 받을 때
  • 클론한 directory로 이동
  • git branch -a 실행
  • git에서 배포하고자 하는 branch로 변경
    git checkout -b  로컬branch이름  origin/원격branch이름
    git branch -a
    git branch -vv
    

빌드

  • maven 일 때 : mvnw clean package
  • gradle 일 때 : gradlew build

A. 실행 jar 배포

  • 해당 빌드한 jar파일 실행 : java -jar 실행jar파일

B. war로 배포

  • war로 배포할 때는 컨테이너에 tomcat도 설치되어 있어야 한다.
  • 컨테이너에서 apt-get 으로 tomcat을 설치할 경우 실행이 되지 않는 문제점이 있다. 왜?
  • 컨테이너에 wget을 설치(apt-get install wget) 한후 tomcat 사이트에서 link를 복사후 다운 받아서 설치하면 정상적으로 동작함을 확인 할 수 있다.
  • 빌드한 war 파일을 tomcat/webapps/ 로 복사
  • 해당 war파일을 ROOT.war로 이름을 변경
  • tomcat/bin/startup.sh 실행
  • war파일이 풀리면서 ROOT디렉토리가 생성된다. 이때 정상적으로 서비스가 모두 올라오는데 많은 시간이 소요된다. sh을 기동하자마자 해당 페이지를 테스트하면 페이지를 찾을 수 없다고 나온다.

       docker run -dit --name 컨테이너이름 -p docker_port : service_port 이미지이름
    

Comments