회사 타켓보드에 개발 용이성을 위해서 ARM Ubuntu14.04에 docker를 올리는 시도를 했다
그냥 간단하게는 아래 명령으로 되는데,
$ sudo apt-get install docker.io
Ubuntu 14.04는 너무 오래되서, docker 버전이 너무 낮아서 시도를 하지 않았다. (실제로 저 명령으로 docker 설치가 잘 되는지 모른다는 이야기다)
처음부터 바로 docker ppa에서 바로 최신 버전을 받아서 설치를 진행했다.
그리고 실행하니까 커널에 필요한 기능이 추가되어 있지 않아서 데몬이 동작하지 않는다.
첫번째 이슈는 cgroup이었다. 커널에 cgroup 자체는 활성화되어 있었지만, blkio같은 서브모듈이 비활성이어서 전부 활성화 처리 해주었다.
두번째는 network nat기능이었다. 이 부분은 너무 옵션이 많이 필요해서 관련 자료를 참고했다.
위에는 falinux에서 진행한 docker세미나 자료이다.
https://wiki.gentoo.org/wiki/Docker
위는 gentoo에서 제공하는 docker 커널 옵션이다. 나는 잘 안되서 2개를 다 시도 했다. 따라서 위 2개중에 어떤게 맞는지는 알수없다. 나는 그냥 2가지를 다 활성화시켰다.
그래도 네트워크쪽에서 아래와 같은 오류가 발생했다.
failed to create endpoint vigilant_varahamihira on network bridge: failed to add the host (vethadd7f95) sandbox (veth63708ff) pair interfaces: operation not supported"
해결책은 아래 커널 옵션을 활성화 해준다
device driver -> network device support -> network core driver support -> virtual ethernet pair device
그래도 아래와 같은 오류가 발생했다.
starting container process caused "process_linux.go:368: container init caused \"rootfs_linux.go:57: mounting \\\"mqueue\\\" to rootfs \\\"/var/lib/docker/devicemapper/mnt/e8d53dff710da9a18279cec3db4fb324ecc1874b5f3fa2e4496b94c31938d715/rootfs\\\" at \\\"/dev/mqueue\\\" caused \\\"no such device\\\"\"".
해결책으로 CONFIG_POSIX_MQUEUE 커널 옵션을 활성화 했다
그래도 아래와 같은 오류가 발생했다.
oci runtime error: container_linux.go:265: starting container process caused \"process_linux.go:368: container init caused \\"open /dev/ptmx: no such file or directory\\"\"
해결책으로 아래와 같이 -v 옵션을 추가해서 실행했다.
$ sudo docker run --rm -it -v "/dev:/dev" arm32v7/ros:kinetic-ros-base /bin/bash