Docker For Mac 느림: 대책 실험(docker-sync)

9142 단어 docker-syncDockerMac

지난번 총결한 자료에서 실제 테스트의 내용을 총결하였다.(인간^-^)
나는 회사 Laravel 프로젝트의 Docker 개발 환경에서 시도한 적이 있다.

문제가 될 수 있는 곳.


우선 Docker-compose입니다.나는 yml을 분석하고 동기화 대상을 결정했다.
docker-composer.yml
version: '2'
services:
  mysqldata: <- *1
    image: busybox
    volumes:
      - ./docker/mysql/storage:/var/lib/mysql
  mysql:
    build: ./docker/mysql
    volumes_from:
      - mysqldata <- *1
    ports:
      - ${DOCKER_NUM}4306:3306
    environment:
      - MYSQL_ROOT_PASSWORD=password
      - MYSQL_DATABASE=app_db
  php:
    container_name: web_php
    build: ./docker/php
    ports:
      - ${DOCKER_NUM}8888:80
      - ${DOCKER_NUM}443:443
    volumes:
      - .:/var/www/html <- *2
    links:
      - mysql
  smtp:
    image: phpdockerio/mailhog:latest
    ports:
      - ${DOCKER_NUM}1025:1025
      - ${DOCKER_NUM}8025:8025
「*1」 : DBA
  • 저는 volumes가 DB의 파일을 Docker화할 때 적합하다고 생각합니다.동기화하면 데이터베이스 파일의 구성이 힘들어진다.
  • Docker for Mac의 경우volumes가 느려서 Mac에 직접 설치하여 Docker에서 연결하거나 Docker화하지만,volumns는 하지 않습니다(DB 내용을 DBA에 연결하거나 Docker에 들어가려고 합니다).
  • *2': 이번에는 도커-sync의 대상으로 삼아보자.

    현재 속도


    나는 Top 화면을 보여 보았다.전체적으로 느리다 (Google 개발자 도구를 보면 20초가 넘는다).특히 Html(DB 관련일 수 있음)은 비교적 느리다.Σ(´Д`)하!!
    100M 파일을 생성합니다.Docker 내부에서 실행됩니다.
    # time dd if=/dev/zero of=speedtest bs=1024 count=102400
    102400+0 records in
    102400+0 records out
    104857600 bytes (105 MB, 100 MiB) copied, 86.2196 s, 1.2 MB/s
    
    real    1m26.162s
    user    0m1.110s
    sys     0m8.190s
    
    와우Д오 마이 갓!!
    이제 Docker-sync를 사용하여 동기화합니다.

    동기화로 변경


    우선,docker-sync 설치
    # gem install docker-sync
    Fetching: thor-0.20.3.gem (100%)
    ERROR:  While executing gem ... (Gem::FilePermissionError)
        You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory.
    
    개~(´)з`)・∵.안감
    # sudo gem install docker-sync
    
    다음은 감시를 위한 물건인데, 이번에는 사용하지 않았다.
    # brew install fswatch
    
    자신의 컴퓨터에rsync가 설치되어 있기 때문에 생략합니다.("*)
    실제로 테스트를 해봤는데 큰 동기화라서 파일의 권한 부분에 문제가 많아서 다른 파일도 일부 수정했습니다.
    docker-sync.yml
    version: '2'
    
    syncs:
      document-root:
        sync_strategy: rsync
        notify_terminal: true
        sync_host_ip: 'auto'
        sync_host_port: 10872
        sync_excludes: [ '.git', '.idea', 'vendor', 'docker', '*.yml' ]
        sync_args: '-v'
        src: ./
        sync_userid: '33'
    
    sync_userid는 Container의 사용자 번호입니다.
    docker-composer.yml
    version: '2'
    services:
      mysqldata:
        image: busybox
      mysql:
        build: ./docker/mysql
        ports:
          - ${DOCKER_NUM}4306:3306
        environment:
          - MYSQL_ROOT_PASSWORD=password
          - MYSQL_DATABASE=app_db
      php:
        container_name: web_php
        build: ./docker/php
        ports:
          - ${DOCKER_NUM}8888:80
          - ${DOCKER_NUM}443:443
        environment:
          - APACHE_RUN_USER=www-data
          - APACHE_RUN_GROUP=www-data
        volumes:
          - document-root:/var/www/html
        links:
          - mysql
      smtp:
        image: phpdockerio/mailhog:latest
        ports:
          - ${DOCKER_NUM}1025:1025
          - ${DOCKER_NUM}8025:8025
    volumes:
      document-root:
        external: true
    

    수정 속도


    데이터베이스를 동기화하고 불러오지 않았기 때문에 초기 데이터베이스 업데이트가 비교적 빠르다(25분 정도).세상에!!
    100미터 파일을 만듭니다.
    # time dd if=/dev/zero of=speedtest bs=1024 count=102400
    # time dd if=/dev/zero of=speedtest bs=1024 count=102400
    102400+0 records in
    102400+0 records out
    104857600 bytes (105 MB, 100 MiB) copied, 1.41639 s, 74.0 MB/s
    
    real    0m1.432s
    user    0m0.140s
    sys     0m1.240s
    
    마찬가지로 Top 화면을 표시해 보았습니다.전체적으로 2초 정도 화면이 나온다.♪(´ε` )

    도전과 의문점

  • 로그 파일과 컨트롤러 파일을 보는 것은 매우 번거로우며 속도 문제가 없는 상황에서 공유하는 방법이 필요하다고 생각합니다.
  • 도대체 DB의 문제인가?DB 이외에도 마운트(volumes)를 사용할 수 있지 않습니까?검증하지 않으면 몰라요.(;´v_v)`灬.°
  • 다음에'CE17.12(edge)'를 해보자!! ->초기 상태의'docker-composer.yml'에서 시도했습니다.그 결과 4.5초 정도의 Top 화면(DB의 사용 빈도도 봐야 함)이 나왔다.시험은 할 수 있는 수준인데.
  • 관심 있으신 분은 이쪽으로 오세요.
    Laravel+Docker+ 개발 환경
    Docker For Mac 느림: 대책 - Mutagen 편

    좋은 웹페이지 즐겨찾기