기본 콘텐츠로 건너뛰기

Rasbperry Pi Zero W 에 Docker 설치함. (/w raspbian)

w3c 컨퍼 갔다왔더니 docker를 다시 잘 써보고 싶어졌다.

귀염둥이 Raspberry Pi Zero W를 꺼내서 ssh 접속하고 docker-ce를 설치해본다.
$ echo "deb [arch=armhf] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
deb [arch=armhf] https://download.docker.com/linux/debian jessie stable

$ sudo apt update && sudo apt install docker-ce -y --force-yes
Get:1 https://download.docker.com jessie InRelease [20.2 kB]                                 
Hit http://mirrordirector.raspbian.org jessie InRelease                                       
Ign https://download.docker.com jessie InRelease                         
Hit https://download.docker.com jessie/stable armhf Packages
Hit http://archive.raspberrypi.org jessie InRelease
Hit http://mirrordirector.raspbian.org jessie/main armhf Packages                       
Get:2 https://download.docker.com jessie/stable Translation-en [584 B]
Hit http://archive.raspberrypi.org jessie/main armhf Packages                                 
Get:3 https://download.docker.com jessie/stable Translation-en [584 B]                       
Hit http://mirrordirector.raspbian.org jessie/contrib armhf Packages                         
Hit http://archive.raspberrypi.org jessie/ui armhf Packages                                   
Get:4 https://download.docker.com jessie/stable Translation-en [584 B]                       
Hit http://mirrordirector.raspbian.org jessie/non-free armhf Packages                         
Hit http://mirrordirector.raspbian.org jessie/rpi armhf Packages                             
Get:5 https://download.docker.com jessie/stable Translation-en [584 B]                       
Get:6 https://download.docker.com jessie/stable Translation-en [584 B]                       
Ign https://download.docker.com jessie/stable Translation-en                                 
Ign http://archive.raspberrypi.org jessie/main Translation-en                                 
Ign http://archive.raspberrypi.org jessie/ui Translation-en                                   
Ign http://mirrordirector.raspbian.org jessie/contrib Translation-en                         
Ign http://mirrordirector.raspbian.org jessie/main Translation-en                             
Ign http://mirrordirector.raspbian.org jessie/non-free Translation-en                         
Ign http://mirrordirector.raspbian.org jessie/rpi Translation-en   
Fetched 20.2 kB in 20s (968 B/s)                                                             
Reading package lists... Done
Building dependency tree     
Reading state information... Done
85 packages can be upgraded. Run 'apt list --upgradable' to see them.
W: GPG error: https://download.docker.com jessie InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 7EA0A9C3F273FCD8
Reading package lists... Done
Building dependency tree     
Reading state information... Done
Selecting previously unselected package libltdl7:armhf.
(Reading database ... 31449 files and directories currently installed.)tdl7 rsync
Preparing to unpack .../libltdl7_2.4.2-1.11_armhf.deb ...
  git-daemon-run git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch
  git-cvs git-mediawiki git-svn
The following NEW packages will be installed:
  aufs-tools cgroupfs-mount docker-ce git git-man libapparmor1 liberror-perl libltdl7 rsync
0 upgraded, 9 newly installed, 0 to remove and 85 not upgraded.
Need to get 22.4 MB of archives.
After this operation, 104 MB of additional disk space will be used.
WARNING: The following packages cannot be authenticated!
  docker-ce
Get:1 https://download.docker.com/linux/debian/ jessie/stable docker-ce armhf 17.09.1~ce-0~debian [17.8 MB]
Get:2 http://mirrordirector.raspbian.org/raspbian/ jessie/main libltdl7 armhf 2.4.2-1.11 [42.5 kB]
Get:3 http://mirrordirector.raspbian.org/raspbian/ jessie/main aufs-tools armhf 1:3.2+20130722-1.1 [91.0 kB]
Get:4 http://mirrordirector.raspbian.org/raspbian/ jessie/main cgroupfs-mount all 1.1 [4572 B]
Get:5 http://mirrordirector.raspbian.org/raspbian/ jessie/main libapparmor1 armhf 2.9.0-3 [58.1 kB]
Get:6 http://mirrordirector.raspbian.org/raspbian/ jessie/main liberror-perl all 0.17-1.1 [22.4 kB]
Get:7 http://mirrordirector.raspbian.org/raspbian/ jessie/main git-man all 1:2.1.4-2.1+deb8u5 [1268 kB]
Get:8 http://mirrordirector.raspbian.org/raspbian/ jessie/main git armhf 1:2.1.4-2.1+deb8u5 [2689 kB]
Get:9 http://mirrordirector.raspbian.org/raspbian/ jessie/main rsync armhf 3.1.1-3 [373 kB]   
Fetched 22.4 MB in 26s (855 kB/s)                                                             
Can't set locale; make sure $LC_* and $LANG are correct!
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_CTYPE = "UTF-8",
LANG = "en_GB.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to a fallback locale ("en_GB.UTF-8").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
Processing triggers for man-db (2.7.0.2-5) ...##################..............................] 
여기서 한참 걸린다.
sudo dpkg-reconfigure locales 하는 거 깜빡했네;;
W: GPG error: https://download.docker.com jessie InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 7EA0A9C3F273FCD8
Reading package lists... Done
Building dependency tree     
Reading state information... Done
E: Sub-process /usr/bin/dpkg returned an error code (1)
이렇게 끝나버렸 ㅜㅜ
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7EA0A9C3F273FCD8
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --homedir /tmp/tmp.JOozHjzEhw --no-auto-check-trustdb --trust-model always --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyserver keyserver.ubuntu.com --recv-keys 7EA0A9C3F273FCD8
gpg: requesting key F273FCD8 from hkp server keyserver.ubuntu.com
gpg: key 0EBFCD88: public key "Docker Release (CE deb) <docker@docker.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
키 등록하고 재시도 해볼까나
E: Sub-process /usr/bin/dpkg returned an error code (1)
뜨지만 docker-ce가 이미 설치되있다고 해서.
docker 쳐봤더니
Segmentaion fault
어질;;;;
아 이건 안되겠네. oTL


이걸로 해봐야겠다. ARMv6 만만하지 않군;
sudo apt-get -y remove `sudo dpkg --get-selections | grep -v "deinstall" | grep sound | sed s/install//`
sudo apt-get -y remove `sudo dpkg --get-selections | grep -v "deinstall" | grep gnome | sed s/install//`
sudo apt-get -y remove `sudo dpkg --get-selections | grep -v "deinstall" | grep lxde | sed s/install//`
sudo apt-get -y remove `sudo dpkg --get-selections | grep -v "deinstall" | grep gtk | sed s/install//`
sudo apt-get -y remove `sudo dpkg --get-selections | grep -v "deinstall" | grep desktop | sed s/install//`
sudo apt-get -y remove `sudo dpkg --get-selections | grep -v "deinstall" | grep gstreamer | sed s/install//`
sudo apt-get -y remove `sudo dpkg --get-selections | grep -v "deinstall" | grep avahi | sed s/install//`
sudo apt-get -y remove `sudo dpkg --get-selections | grep -v "deinstall" | grep dbus | sed s/install//`
sudo apt-get -y remove `sudo dpkg --get-selections | grep -v "deinstall" | grep freetype | sed s/install//`
sudo apt-get -y autoremove
sudo apt-get clean
샤악 날리고.
sudo sed -i 's/wheezy/jessie/' /etc/apt/sources.list
sudo sed -i 's/wheezy/jessie/' /etc/apt/sources.list.d/raspi.list
sudo apt-get update && sudo apt-get -y upgrade # answer 'y' to upcoming questions
sudo apt-get -y dist-upgrade
sudo init 6
sudo apt-get -y dist-upgrade 요기서 쫌 오래걸림
여튼 재부팅 뒤 다시 접속
sudo apt-get -y autoremove
sudo apt-get -y purge $(dpkg -l | awk '/^rc/ { print $2 }')
sudo init 6
또 재접속.

Hypriot team 님들걸로 설치 시도.
curl -ks https://packagecloud.io/install/repositories/Hypriot/Schatzkiste/script.deb.sh | sudo bash
sudo apt-get install docker-hypriot=1.10.3-1
sudo sh -c 'usermod -aG docker $SUDO_USER'
sudo systemctl enable docker.service
데몬이 안뜨니까 리붓하고 확인해보자. 결과는?
$ sudo docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 1.10.3
Storage Driver: overlay
 Backing Filesystem: extfs
Execution Driver: native-0.2
Logging Driver: json-file
Plugins:
 Volume: local
 Network: null host bridge
Kernel Version: 4.9.35+
Operating System: Raspbian GNU/Linux 8 (jessie)
OSType: linux
Architecture: armv6l
CPUs: 1
Total Memory: 434.1 MiB
Name: sprpi0
ID: KI4Y:B5FO:6MMS:J4PE:7EGH:TJDK:FTBC:RXJN:QTNZ:7XVS:YXYW:UJNR
Debug mode (server): true
 File Descriptors: 11
 Goroutines: 20
 System Time: 2017-12-09T16:39:46.019045602Z
 EventsListeners: 0
 Init SHA1: 0db326fc09273474242804e87e11e1d9930fb95b
 Init Path: /usr/lib/docker/dockerinit
 Docker Root Dir: /var/lib/docker
WARNING: No swap limit support
WARNING: No cpu cfs quota support
WARNING: No cpu cfs period support
WARNING: No cpuset support
꺄하하하하하!
$ docker version
Client:
 Version:      1.10.3
 API version:  1.22
 Go version:   go1.4.3
 Git commit:   20f81dd
 Built:        Thu Mar 10 22:23:48 2016
 OS/Arch:      linux/arm
Server:
 Version:      1.10.3
 API version:  1.22
 Go version:   go1.4.3
 Git commit:   20f81dd
 Built:        Thu Mar 10 22:23:48 2016
 OS/Arch:      linux/arm
씐난다!
오우!

hypriot님들 잘하시네. $SUDO_USER라는 게 없어서 그냥 pi 기본 유저 적어줌.
sudo sh -c 'usermod -aG docker pi'
블로그도 읽어보고 좀 배워야겠다.

이 블로그의 인기 게시물

Unicode 2.0 에서 한글의 이해

요즘 SNS이나 SNG등등 기계적으로 문장을 생성하는 프로그램들이 넘쳐나는 시대에 의외로 한글처리를 제대로는 프로그램들이 드물구나 하는 생각에 간단한 한글 자소 분석기를 만들어보았다.
링크는 이쪽(http://jsbin.com/ofoqal/10/edit)

애초에 만든 목적은 다음과 같다.
조사처리(은/는, 이/가, 을/를 등등)를 위해 단어의 마지막 글자의 종성을 조사하기 위함인데 예문을 들어보자면

"준기 강남에서 사진 찍었다."
"예슬 홍대에서 식사 했다."
"슬기 대화방에서 나갔습니다."

"준기님은 강남에서 사진님을 찍으셨습니다 고갱님" 이라고 말하면 할말 없다.

한국식 소프트웨어(꼭 소프트웨어가 아니더라도)의 특징이자 장점이 무엇이냐라고 물으면
귀찮을 정도로 깨알같은 디테일이라고 대답할텐데 한글 기계화 작업에 대한 중요성은 프로그램을 만드는 사람들에게도 별로 중요하게 다가오지 않나보다.

에또 사설이 길었다.
한때 우리는 한글코드체계의 비표준 숲속에서 너무도 괴로운 나날들을 보낸 역사가 있다.
KSC5601부터 시작해서 Microsoft통합형한글을 지나 Unicode 2.0의 시대가 왔다.

개인적으로 UTF-8을 사용하지 않고 EUC-KR이나 CP949를 쓰는 제품이나 서비스의 업체의 대표/관계자에게 1억 미만의 벌금 혹은 3년 이하의 금고형의 실형을 내려줬으면 할 정도로 너무나 많은 사람들을 불행하게 하고 막대한 비용을 지출한 악의 근원이라고 생각한다.

하지만 광명이 왔다.
기계적으로 납득이 가능한 검색 및 정렬이 용이한 Unicode 의 시대가 열렸단 말이다.
지금 당신이 복사해서 붙이고 있는 팁들 보다 훨씬 쉽고 명쾌하니 다음 그림을 한번 보자.
(출처:http://www.w3c.or.kr/i18n/hangul-i18n/ko-code.html) 어떤가?
무쟈게 쉽지 않은가?

현대 한글은 초성 19자, 중성 21자, 종성 27자로. 총 19 x 21 x 28 (종성없음 포함…

즐거운 Online Prototyping Tool 들

jsbin, codepen, jsfiddle 이런 것들은 일단 생략. 너무 유명한 것들이라.

https://launchpad.graphql.com - node.js 기반 graphQL 연습장. 이것만으로도 충분히 훌륭한 백엔드
https://codesandbox.io/ npm 사용이 가능한 클라이언트 사이드 연습장. webpackbin이 너무 문제가 많아서 찾아본 것.

https://scrimba.com 이건 codesandbox+ asciinema(https://asciinema.org/) 같은 느낌인데 키 녹화와 음성 녹화 기능이 추가되었다. 다 좋은데 화살표 키로 빨리감기 뒤로감기 기능이 안되고 익스포트(youtube등)으로 지원이 없는게 아쉽다.

이 둘이 만나면? https://codesandbox.io/s/jvlrl98xw3?from-embed
뭐야 이거 무서워 하지마 ㄷㄷ;  graphql+react-native-web(부왘ㅋㅋ)

https://repl.it/languages 전통을 자랑하는 REPL 도구. 지원 언어 종류가 -_-;;;;;

https://tio.run/# repl.it? 장난함? 얘는 지원 언어가 무려 386종류. J랑 아희도 있다.

https://play.golang.org/ 즐거운 go playground. 소스 포멧팅 넘 좋아.

http://decaffeinate-project.org/repl/ 최고의 coffeescript REPL. 원래 용도는 coffee를 ecma6코드로 바꾸는 것이지만...

https://scaphold.io
https://www.graph.cool/ graphql backend service. scaphold.io는 설치도 필요없는 클라우드. graphcool은 호스팅+클라우드 다있음. 둘 다 막상막하. 푸쉬서버도 되고 뭐 미친득.

https://glitch.com/ gomix에서 결국 glitch로 안착.  node.js

https://www.shadertoy.com 잘하고 싶다! 쉐이다! 오디오도 된다!

http:/…

graphql 연습 /w launchpad

https://launchpad.graphql.com/mw9wkzv99
단순 전체쿼리+조건쿼리+추가

http://graphql.org/graphql-js/passing-arguments/
참고. random ID는 crypto 1.0.1 사용
  type Query {
    Members: [member]
    getMember(id: ID!): member
  }
  type member {
    id: ID!
    text: String
  }
  input memberInput {
    text: String
  }
  type Mutation {
    addMember(member: memberInput): member
  } SQL 정의. facebook 쪽은 스트링에 지지는 거 진짜 좋아하네. *.gql 파일이 있다고 하니 이해해주자.
resolver는 var buffer = [];
const resolvers = {
  Query: {
    Members: (root, args, context) => {
      return buffer;
    },
    getMember: (id)=> {
      return buffer.find(o=>o.id)
    }
  },
  Mutation: {
    addMember(_, {member}) {
      const mm = { ...member, id:randomBytes(10).toString('hex') };
      buffer.push(mm);
      return mm;
    }
  }
}; 평범 평범.
https://dev-blog.apollodata.com/tutorial-graphql-subscriptions-server-side-e51c32dc2951 다음으로 pub/sub 연습.
https://launchpad.graphql.com/xvn94n3ql   type Subscription {
    memberAdded: member
  } member가 added되는 순간을 감시. imp…