Docker 시작하기
13 Mar 2017 | 도커 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