Mac OS 에 Vagrant 와 Docker 의 튜 토리 얼 을 설치 합 니 다.

6775 단어
다음으로 전송:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/128.html?1455808640
많은 사람들 이 Docker 가 얼마나 좋 은 지, 많은 새로운 아이들 이 그것 을 사용 하고 있다 는 말 을 들 었 을 때, 나 는 나의 개발 환경 에서 도 시도 해 보기 로 결정 했다.다음 글 에서 맥 OS X 에서 Postgres, Elasticsearch, Redis 를 어떻게 만 드 는 지 설명 하 겠 습 니 다.
Docker 가 뭐야?
Docker 는 앱 을 실행 중인 OS 에서 가 벼 운 용기 로 분리 합 니 다.이 는 앱 을 고립 된 상자 에 넣 고 외부 에 사용 할 폴 더 와 포트 만 보 여 준다.
이렇게 앱 을 만 들 고 사용 하 는 용 기 를 기반 으로 재 활용, 공유 할 수 있다.현재 Docker 에는 15, 000 개 이상 의 용기 가 집중 적 으로 존재 하고 있다.Docker 는 상점 의 저장 소 와 같 습 니 다. 원 하 는 앱 을 만 들 필요 가 있 을 때 먼저 그것 을 골 라 서 다운로드 해서 열 면 됩 니 다.
OS X 에 Docker 설치 하기
Docker 는 태 어 날 때 부터 OS X 에서 실행 되 는 것 이 아니 라 LINUX 용 기 를 포함 한 Linux 커 널 이 필요 합 니 다.따라서 나 처럼 OS X 를 설치 하려 면 가상 장치 가 필요 할 것 이다.
boot2docker 사용 하지 마 세 요.
docker 를 일 하 게 하려 고 시 도 했 을 때, 나 는 매우 쉽게 설치 되 는 것 을 발견 했다.이것 은 boot2docker 라 는 도 구 를 사용 할 것 입 니 다. 이 도 구 는 virtual Box 와 같은 가상 컴퓨터 의 마른 포장 입 니 다.
나 는 즉시 이 도구 에 심각 한 문제 가 있다 는 것 을 알 게 되 었 다. 예 를 들 어 안정 적 인 상태 에서 Docker 를 가 져 오 는 모든 프로 세 스 를 중단 할 것 이다.나 는 이 방면 에서 너무 많은 체력 과 뇌 세 포 를 낭비 하고 싶 지 않 아서 대체 할 수 있 는 해결 방안 을 계속 찾 았 다.
Vargrant 사용 하기
Vagrant 의 1.6 버 전 이후 Docker 를 지원 하 는 세트 구성 요소 가 통합 되 었 습 니 다.Vargrant 는 Virtual Box 와 유사 한 가상 소프트웨어 로 Ruby DSL 을 설명 하 는 방법 으로 환경 을 묘사 합 니 다.
나 는 이러한 가상 환경 을 정의 하 는 방식 을 매우 좋아한다. 왜냐하면 당신 의 환경 이 고장 이 났 을 때, 당신 은 당시 의 정 보 를 기록 하고 다시 사용 할 수 있 으 며, 대량의 유사 한 환경 변수의 정 보 를 빠 뜨리 지 않 아 도 되 기 때문이다.설치 도구
우선 우리 가 설치 해 야 할 여러 가지 사항 을 살 펴 보 자.
Homebrew 설치:
 
ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"#p#    #e#

 
Cask 설치:
 
brew tap caskroom/homebrew-cask brew install brew-cask

 
Vagrant 와 Virtual Box 설치:
 
brew cask install virtualbox brew cask install vagrant

 
Vagrant 파일
Ruby DSL 가상 컴퓨터 환경 을 사용 하 는 수 요 를 설명 하 는 vagrant 파일Docker 용 기 를 설명 할 때, Vagrant 는 모든 용기 가 자신 만 의 가상 컴퓨터 를 사용 하 는 것 처럼 보 입 니 다.사실상 이것 은 하나의 가상 이다. 왜냐하면 모든 Docker 용 기 는 실제 적 으로 각종 프 록 시 가상 컴퓨터 에 허용 되 기 때문이다.
따라서 두 개의 vagrant 파일 은 매우 필수 적 입 니 다. 한 파일 은 프 록 시 가상 머 신 (Provisioner) 을 정의 하 는 데 사 용 됩 니 다. 다른 파일 은 Docker 용 기 를 정의 하 는 데 사 용 됩 니 다 (Providers).프 록 시 가상 Vagrant 파일
프 록 시 가상 Vagrant 파일 이름: Vagrantfile. proxy
 
VAGRANTFILE_API_VERSION = "2"Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|  config.vm.box = "hashicorp/precise64" config.vm.provision "docker" config.vm.provision "shell", inline:  "ps aux | grep 'sshd:' | awk '{print $2}' | xargs kill"  config.vm.network :forwarded_port, guest: 6379, host: 6379 config.vm.network :forwarded_port, guest: 5432, host: 5432 config.vm.network :forwarded_port, guest: 9200, host: 9200end

 
프 록 시 가상 머 신 을 처리 하기 위해 hashicorp / precise 64 Ubuntu 12.04 의 64 비트 를 사용 합 니 다.그것 도 Docker 와 신기 한 셸 명령 을 제공 하여 Docker 를 일 하 게 합 니 다.
마지막 일 은 퍼 가기 포트 를 설치 하 는 것 이다.이것 은 config. vm. network 를 사용 하여 Redis, Elasticsearch, Postgres 를 설정 하고 프 록 시 가상 머 신 으로 OS X 에 매 핑 합 니 다. \ #p \ # 페이지 제목 \ # e \ #
Docker 용기 의 Vagrant 파일
이것 은 Vagrantfile 의 주요 내용 입 니 다.
 
 
VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|  config.vm.define "redis" do |v|  v.vm.provider "docker" do |d|   d.p_w_picpath = "dockerfile/redis"   d.volumes = ["/var/docker/redis:/data"]   d.ports = ["6379:6379"]   d.vagrant_vagrantfile = "./Vagrantfile.proxy"  end end  config.vm.define "elasticsearch" do |v|  v.vm.provider "docker" do |d|   d.p_w_picpath = "dockerfile/elasticsearch"   d.ports = ["9200:9200"]   d.vagrant_vagrantfile = "./Vagrantfile.proxy"  end end  config.vm.define "postgres" do |v|  v.vm.provider "docker" do |d|   d.p_w_picpath = "paintedfox/postgresql"   d.volumes = ["/var/docker/postgresql:/data"]   d.ports = ["5432:5432"]   d.env = {    USER: "root",    PASS: "abcdEF123456",    DB: "root"   }   d.vagrant_vagrantfile = "./Vagrantfile.proxy"  end endend

 
이 파일 은 세 개의 용 기 를 정의 합 니 다: Redis, Elasticsearch, Postgres 는 그림 dockerfile / redis, dockerfile / elasticsearch 와 paintedfox / postgresql 을 가지 고 있 습 니 다.
각 파일 정의 vagrantvagrantfile 은 proxy VM 파일 로 같은 proxy 가상 컴퓨터 에서 실 행 됩 니 다.
Redis 와 Postgres 의 volumes 정 의 는 용기 가 아 닌 proxy VM 에 정 보 를 저장 할 수 있 도록 하 는 것 입 니 다.용기 가 데 이 터 를 잃 어 버 리 지 않 고 더 삭제 하거나 업그레이드 할 수 있 는 이유 다.다음 단 계 는 이 파일 들 을 proxy VM 에서 OS X 로 비 추 는 것 이지 만 작 동 시 킬 필 요 는 없습니다.
모든 용기 의 ports 는 어느 포트 가 proxy VM 으로 이동 하 는 지 정의 합 니 다.이 는 proxy VM 에서 OS X 까지 의 포트 와 일치 해 야 합 니 다.
Postgres 용기 도 서버 를 설정 해 야 할 환경 변 수 를 정의 합 니 다.이 는 OS X 에 결 성 된 Postgres 서버 를 설치 하고 환경 변수 Pghost = localhost PGUSER = root PgpASSWORD = abcdEF 123456 을 설정 하여 구현 할 수 있 습 니 다.
Vagrant 작업 사용 하기
Vagrant 파일 과 같은 디 렉 터 리 에서 실행 할 수 있 습 니 다:
 
vagrant up --provider=docker#p#    #e#

 
이 를 처음 실행 할 때 Vagrant 는 다운로드 한 후 proxy VM 을 시작 한 다음 Docker 용 기 를 다운로드 하고 시작 합 니 다.이 초기 화 다운 로드 를 한 후 Vagrant 를 실행 할 때마다 기 존 그림 을 반복 합 니 다.
Docker 용기 의 상 태 를 볼 수 있 습 니 다:
 
vagrant status

 
비슷 한 것 을 출력 해 야 합 니 다:
코드 는 다음 과 같 습 니 다:
Current machine states: redis                     running (docker)  elasticsearch             running (docker)  db                        running (docker)
 
Docker 용기 가 올 바 르 게 작 동 하 는 지 테스트 하려 면 Redis 와 Postgres 클 라 이언 트, curl for Elasticsearch 를 사용 할 수 있 습 니 다.redis - cli 와 psql 의 서버 연결, curl 만 확인 하 십시오.http://localhost:9200호응
proxy VM 에 연결 해 야 한다 면 (디 버 깅 에 매우 도움 이 된다) vagrant global - status 를 실행 합 니 다. 이것 은 proxy 를 포함 한 모든 VM 을 보 여 줍 니 다.그리고 vagrant ssh, ID 가 proxy 인 ID 를 호출 합 니 다.이 proxy VM 을 수 동 으로 변경 하지 말고 Chef (또는 유사 한) 스 크 립 트 를 사용 하 십시오. 이렇게 하면 더욱 쉬 운 테스트 와 분 포 를 변경 할 수 있 습 니 다.
성능
가상 화 를 사용 할 때 첫 번 째 질문 은 항상 '성능 의 영향 이 얼마나 됩 니까?' 라 고 묻는다.성능 의 영향 이 얼마나 나 쁜 지 찾 으 려 면 내 동료 와 나 는 모두 Postgres 를 했 고 같은 하드웨어 에서 Elasticsearch 와 Redis 강화 테스트 를 했다.유일한 차이 점 은 이 컴퓨터 에 설 치 된 소프트웨어 를 테스트 하 는 것 이 고 다른 하 나 는 Docker 사용자 정의 용기 가 있 습 니 다.이 컴퓨터 소프트웨어 가 있 는 것 은 2 분 동안 실 행 됐 고 용기 가 있 는 것 은 3 분 동안 실 행 됐 습 니 다.
이 성능 의 영향 은 내 가 상 상 했 던 것 처럼 그렇게 작 지 않 고 심지어 더 나 쁠 수도 있다.그럼 에 도 불구 하고 저 는 Docker 를 계속 사용 하여 개발 할 것 입 니 다. 그러나 모든 개발 환경 문제 의 묘약 으로 추천 하 지 는 않 습 니 다.
\ # p \ # 페이지 제목 \ # e \ # 주의: Vagrant 와 Docker 를 사용 하 는 다른 제한 은 여기 서 총 결 을 보 여 줍 니 다.
나 는 아직 'Vagrant with Docker' 의 길이 어디 에 있 는 지 볼 수 없다.그러나 가능 한 상황 을 본 후에 나 는 그것 이 다른 곳 에 사용 할 수 있 는 지 생각 하지 않 을 수 없다.그리고 이것 은 내 가 만난 가장 재 미 있 는 가상 화 이 고 즐거움 은 바로 프로 그래 밍 에 있다.
다음으로 전송:https://blog.51cto.com/3575196/1743174

좋은 웹페이지 즐겨찾기