Docker machine for Mac 에서 no space left on device

Docker machine for Mac 에서 no space left on device

오늘은 Docker를 Mac에서 사용할 때 격는 문제에 대해 정리합니다.

 

Prerequisite

  • Docker version 17.03.1-ce
  • Docker-machine version 0.10.0

 

저는 Docker toolbox 를 이용하고 있으며, Docker for Mac 과 의 차이점에 관련된 내용은 여기서 참고하시면 됩니다.

Problem

Docker 이미지 빌드 중에 이런 메시지를 만났습니다.

failed to register layer: Untar re-exec error: exit status 1: output: write /home/oracle/app/oracle/oradata/oracle/users01.dbf: no space left on device

no space left on device

틀림없이 제 맥북은 용량이 많이 남아있습니다.

Solution

Docker-machineVirtualBox 를 이용해서 docker를 실행합니다.
이에 docker가 실행되는 환경 접속을 하려면 별도의 명령이 필요합니다.

$ docker-machine ssh

이제 도커가 돌고 있는 가상 환경으로 들어왔습니다.

디스크 용량을 확인합니다.

$ sudo df -h
...
/dev/sda1 20.0G 19.9G 0.1G 99% /mnt/sda1/var/lib/docker/aufs
...

저 녀석이 꽉차 있습니다.

그냥 docker-machine의 가상머신 환경을 날리고 용량을 크게 다시 만듭니다.

$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default * virtualbox Running tcp://192.168.99.101:2376 v17.06.0-ce

default를 날립니다.

$ docker-machine rm default

이제 disk size 를 새로 지정합니다. 여기서는 80G 로 만듭니다.

$ docker-machine create --driver virtualbox --virtualbox-disk-size "80000" default

이 전 과정을 반복해서 용량을 확인합니다.

$ docker-machine ssh
$ sudo df -h

변경이 완료되었습니다.

[mac] sublime text3 한글 붙여넣기 풀어서 넣어지는 문제

[mac] sublime text3 한글 붙여넣기 풀어서 넣어지는 문제

맥북에서 sublime text3(서브라임 택스트)를 사용하다가 문제가 생겼습니다.

맥의 finder에서 파일명을 복사하다가 한글이 분해(?)되는 문제입니다.

스크린샷 이라는 글자가 ㅅㅡㅋㅡㄹㅣㄴㅅㅑㅅ 으로 변하는 마법…

 

기본적으로 지원하는 메모 앱에서는 정상 동작해서 좀 찾아봤더니 맥은 윈도우즈나 리눅스(linux)와는 별도의 UTF8 방식을 채용하고 있었습니다.

맥은 UTF8을 사용하지만 NFD(Normalization Form Canonical Decomposition)라는 방식으로 정규화를 하고,

일반적인 UTF8은 NFC(Normalization Form Canonical Composition)방식을 사용하기 때문에 서브라임에서 한글이 전부 풀어지는 문제가 발생한 것이었습니다.

 

해결책을 찾던 중 한 일본인의 Sublime text3 Plugin 을 발견!!

https://github.com/astronaughts/SublimeNFDToNFCPaste

설치는 sublime text 3 실행 > Preferences > Browse Packages 를 눌러서 sublime의 플러그인 설치 경로를 알아내거나

/Users/admin/Library/Application Support/Sublime Text 3/Packages

위의 경로로 들어가면 됩니다.

 

해당 경로에서

# git clone https://github.com/astronaughts/SublimeNFDToNFCPaste SublimeNFDToNFCPaste

실행하시면 됩니다;; 쉽죠? ㅎㅎㅎ

소스 한번 확인해봤더니 달랑 5줄 ㅎㅎㅎ

class NfdToNfcPasteCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        paste = sublime.get_clipboard()
        sublime.set_clipboard(unicodedata.normalize('NFC', paste))
        self.view.run_command('paste')

붙여넣기할때 NFC로 문자열을 변경해주네요.

앞으로 유용하게 쓸꺼 같습니다.

 

참고

유니코드 정규화 한글

유니코드 정규화 영어