윈도우 부팅시 virtualbox vm 자동시작 방법

윈도우에서 docker를 사용하기 위해서 가장 간편한 방법은 docker tool box를 설치하는 것이다.

이를 이용하면 virtualbox에 default vm이 생성되며 docker-machine을  통해 윈도우에서 docker를 사용할 수 있게된다.

이때 윈도우 시작시 virtualbox의 vm을 매번 실행시켜 주어야되는 귀찮으즘이 발생한다.

아래는 이 귀차느즘을 자동화 하는 방법이다.

  1. [VirtualBox] 이미지 자동 실행 :  “C:\Program Files\Oracle\VirtualBox\VBoxManage.exe” startvm default
  2. 윈도우 10 PC 부팅 시 자주 쓰는 프로그램 자동 실행하는 법 : shell:startup

bat파일을 만들어서 시작프로그램에 넣어주면 부팅시 실행된다.
첨부파일 : virtualbox-start-vm

# 위 방법을 사용해보니 vm 머신의 콘솔창이 같이 떠서 작업화면이 지저분해지고 불편하다.
다른 방법으로 docker quickstart terminal 바로가기 파일을 시작프로그램에 넣어서 시작시키는 방법으로 변경을 하였다. 그러면 vm은 자동으로 시작된다.

docker tool box 윈도우 폴더 공유 samba 서버 이용 폴더권한 오류 해결.

기본적으로 virtualbox에서 공유해주는 폴더는
윈도우의 폴더를 vm에서 docker 계정으로 마운트 해주는 기능이라서 소유자 변경이 되지 않는다.

이 공유 폴더를 볼륨 지정시 DB컨테이너와 같이 특정 소유자 권한이 필요한 파일은 생성이되지 않기 때문에 컨테이너를 시작할 수 없다.

그렇기 때문에 리눅스 폴더를 volume폴더로 잡고 해당 폴더는 samba서버를 이용하여 윈도우와 공유해서 사용한다.

1. docker이용 삼바서버 설치  pwntr/samba-alpine-docker

2. Samba설정 : 우분투 자작 NAS-4강, Samba를 이용한 윈도우 파일 공유
(
삼바설정파일 예)

삼바서버를 이용해서 서버에서 운영중인 docker gitlab을 윈도우 로컬서버로 이전했다. (삼바서버를 이용하지 않고 virtualbox공유폴더 이용시 postgresql 시작시 파일을 찾을 수 없음 오류발생)

3. 외부 접속을 위한 virtualbox 포트 포워딩 : VirtualBox Port Forwarding (포트 포워딩)

 

이상으로 리눅스 서버와 동일하게 윈도우에서도 docker를 이용할 수 있다.

samba docker-compose 파일

smb설정파일

# 삼바서버를 사용할경는 윈도우 작업환경을 공유해서 실시간 구성을 할 수 없기 때문에 배포환경을 구성하던가 아니면 웹루트 파일은 소유자 권한이 필요없기 때문에 공유 폴더로 volume 링크를 걸어서 해결할 수 있다.

# samba 최종권한 설정
폴더 생성시 적용권한 설정이 먹지 않아서 보니 samba의 적용권한 방식이 따로 존재하고 있었다. security mask 권한도 같이주어야 적용된다.
Samba 최종 권한 설정

 

docker-machine vm 생성, cpu memory 설정 변경

아래 경로의 json 파일을 수정해서 변경할 수 있다.

(VirtualBox에서 수동으로 변경시 문제가 있었다.)
~/.docker/machine/machines/default/config.json

참고

https://stackoverflow.com/questions/34296230/how-to-change-default-docker-machines-dns-settings

이곳의 설정 파일은 자동으로 생성되는 파일이라서

수정 후 머신을 재생성 하면 다시 기본으로 변경된다..

기본설정 자체를 바꾸는 방법을 아직 찾지는 못했으나

docker-machine create 명령으로 직접 옵션을 주어서 생성할 수 있다.
(삭제전 이전vm을 제거하려면 docker-machine rm default 명령을 이용)

  • docker-machine create -d virtualbox --virtualbox-cpu-count=8 --virtualbox-memory=32768 --virtualbox-disk-size=200000 default

    (vm생성시 이전 사용중이던 vm의 영향으로 ip주소가 2번째로 할당을 받게된다. 그리고 리부팅시 다시 첫번째의 ip를 부여받게된다. 그러면 생성한 ssh 인증키가 안맞게되어 kitematic 접속이 되지 않는다. 해결 방법은 아래 계속 이어짐. ip를 새로 할당받기 위해 일단 재부팅을 하자. 재부팅전 하드가 ssd라면 체크를 해주도록한다.)

 

참고

https://github.com/crops/docker-win-mac-docs/wiki/Windows-Instructions-(Docker-Toolbox)

 

docker-machine create를 이용하여 생성시 ip주소가 변경되는 문제가 생긴다.

그리고 나중에 컴퓨터를 재시작하고 나면 다른 ip를 할당받고 나서 인증서가 없다는 오류와 함께 kitematic이 실행되지 않는다.

그때는 인증서를 재생성 해주면 된다.

docker-machine regenerate-certs default

참조 :   https://github.com/docker/kitematic/issues/519

# 주의 :
vm 가상머신은 boot2docker.iso 이미지를 통해 리눅스 환경이 부팅이된다.
즉 운영체제 상의 모든 생성된 파일은 재부팅하면 초기화된다.
단 마운트된 디스크(disk.vmdk)에 생성된 파일은 초기화되지 않는다.
그럼으로 volume연결은 /mnt/sda1/ 위치에 폴더를 생성해서 위치시켜야한다. (/mnt/sda1/docker)

클라우드 서버에 docker 기반 서비스 셋팅 ( 서버이전 )

3년 넘게 사용해온 물리 서버가 있다.

IDC에 입주해있기 때문에 비교적 안전하게 장기간 사용할 수 있겠지만

이것이 언제 뻗을지 모른다는 불안감에 항상 시달리고 있다.

 

고객으로 부터 연락이 왔다. 윈도우 10 설치를 하였는데 https 인증서 접속 오류가 난다.

이전에 ssl을 5년짜리 사설 인증서를 만들어서 설정을 해두었기 때문에

브라우저에 별도로 신뢰할 수 있는 인증서로 등록을 하지 않으면 해당 오류가 발생한다.

 

전에도 메뉴얼을 만들어서 안내를 해주었는데도 사용자들이 잊어버리고 컴퓨터를 새로깔고서는 안된다고 문의가 들어온다.

때마침 let’s encript 무료 공인 인증서를 알게되어서 시간이 좀 걸린다고 안내를 하고 ssl을 변경하기로 마음 먹었다. 시간이 더 걸리더라도 나는 한번만 일하면 되는 더 가치있는 일을 하고 싶었다.

 

오래된 리눅스 서버(centos6.x)에 접속을해서 뭔가를 하려고 하니 아차.. 난 이제 ubuntu에 익숙해져 있었다.

구글링을 하지 않을 수 없는 상황에서 letsencript 설치도 python2.x 버전을 지원하지 않아 서버의 python을 업그레이드 해야하고 아. 점점 짜증이 밀려왔다.

그래서 그냥 서버를 이관하기로 결심했다.  점점 일이 산으로 가는 느낌이지만 난 보다 가치있는 일을 하기를 좋아한다… —

 

우선 클라우드 서버가 물리 서버보다 비용이 약간 더 저렴하고 더 안정적이고

서버 한대에 vhost를 나누지 않아도 공인 ip를 기반으로 독립된 서버를 각각 운영할 수 있다.

게다가 block storage를 사용하면 데이터가 4개의 서버에 분산 저장이되어 안정적이며 거기에 더해 1주에 한번씩 데이터를 별도의 장치에 백업을 해주어서 천만에 하나 데이터가 날라가는 상황이 발생하더라도 1주일 전 시점으로는 복구가 가능하다.

 

자, 이런 클라우드 가상서버 환경에 더에서 docker 기반으로 서비스를 구축하면

언제든지 docker 폴더를 다운로드 받아서 운영과 같은 환경으로 로컬에서 테스트가 가능하다. 반대로 로컬을 그대로 운영으로 옮기는 것도 가능하며 별도의 서버 이동으로 인한 오류는 발생하지 않는다.

게다가 서버 재시작은 1~2초 밖에 걸리지 않으며 스케일링 기능이나 오케스트레이션 기능으로 자동으로 서버 관리 및 확장 모니터링이 가능하다.;…

 

장점을 나열하자면 수도없이 많다. 어찌되었든 난 2개의 서버중에 한대를 성공적으로 이관을 하였으며 물리 서버보다 오히려 서버 성능이 더 좋아졌다. 왜나하면 물리서버는 저장장치가 hdd인 반면 가상서버는 ssd 이기 때문이다.

고객 만족 서비스 제공으로 나름 뿌듯함에 이글을 적고있다.

 

이제 서론은 그만하고 어떻게 작업이 진행되었고 어떤 문제들이 발생해서 어떻게 해결하였는지 후기를 남긴다.

현재 먼저 진행된 건은 docker 기반의 apache php mysql 환경으로 letsencript-auto를 이용하여 ssl인증서까지 자동으로 생성 적용된다.

그리고 오늘 더 해야할 건은 docker 기반의 tomcat oracle-xe 환경으로 역시 letsencript-auto를 이용하여 ssl 인증서까지 자동으로 생성한다.

 

 

 

 

 

 

docker 활용

Kitematic
Mac, Linux 및 Windows에서 Docker 컨테이너를 관리하기위한 간단한 응용 프로그램

Docker와 Gitlab CI를 활용한 빌드, 테스트 자동화
Gitlab은 설치형 GitHub이라고 이해하시면 편합니다. 무료로 private repository와 CI 서버를 제공해줍니다. 심지어 Docker Registry도 무료로 제공하고 있습니다. 아직 많은 분들이 Gitlab CI의 여러 장점들을 잘 모르시는 것 같아 정리해보았습니다.

우분투에 GitLab 설치 사용하기 2 [사용]

 

docker hub sameersbn /gitlab

 
GitLab docker compose 설정 및 사용

 

 

 

Docker로 개발용 Oracle DB 구성하기

SL에 사용해야지~