GN⁺: 약 100줄의 Bash로 구현된 Docker, Bocker (2015)
(github.com/p8952)-
Bocker
- Bocker는 약 100줄의 bash로 구현된 Docker의 간단한 버전임.
-
Prerequisites
- Bocker를 실행하기 위해 필요한 패키지:
- btrfs-progs
- curl
- iproute2
- iptables
- libcgroup-tools
- util-linux >= 2.25.2
- coreutils >= 7.5
- 시스템 설정 요구 사항:
-
/var/bocker
에 btrfs 파일 시스템 마운트 -
bridge0
라는 네트워크 브리지와 10.0.0.1/24 IP -
/proc/sys/net/ipv4/ip_forward
에서 IP 포워딩 활성화 -
bridge0
에서 물리적 인터페이스로의 트래픽 라우팅을 위한 방화벽
-
- Vagrantfile을 사용하여 필요한 환경을 구축할 수 있음.
- Bocker는 루트 권한으로 실행되며 네트워크 인터페이스, 라우팅 테이블, 방화벽 규칙을 변경하므로 가상 머신에서 실행하는 것이 좋음.
- Bocker를 실행하기 위해 필요한 패키지:
-
Example Usage
- Bocker의 사용 예시:
-
bocker pull centos 7
명령어로 CentOS 7 이미지를 가져옴. -
bocker images
로 이미지 목록 확인 가능. -
bocker run img_42150 cat /etc/centos-release
로 컨테이너에서 명령어 실행 가능. -
bocker ps
로 실행 중인 컨테이너 확인 가능. -
bocker logs ps_42045
로 컨테이너 로그 확인 가능. -
bocker rm ps_42045
로 컨테이너 삭제 가능. -
bocker run img_42150 yum install -y wget
로 패키지 설치 가능. -
bocker commit ps_42018 img_42150
로 컨테이너 변경 사항 커밋 가능. - CPU 및 메모리 제한 설정 가능.
-
- Bocker의 사용 예시:
-
Functionality: Currently Implemented
- 현재 구현된 기능:
-
docker build
의 제한적 구현 -
docker pull
-
docker images
-
docker ps
-
docker run
-
docker exec
-
docker logs
-
docker commit
-
docker rm
/docker rmi
- 네트워킹
- 쿼터 지원 / CGroups
-
- 현재 구현된 기능:
-
Functionality: Not Yet Implemented
- 아직 구현되지 않은 기능:
- 데이터 볼륨 컨테이너
- 데이터 볼륨
- 포트 포워딩
- 아직 구현되지 않은 기능:
-
License
- 이 프로그램은 GNU General Public License에 따라 배포되는 자유 소프트웨어임.
- 상업성이나 특정 목적에 대한 적합성에 대한 보증은 없음.
Hacker News 의견
-
proot를 사용하여 Bag이라는 프로젝트를 만들었음. 이는 Docker 대안이 아니며 cgroups와 관련이 없고, CLI도 Docker와 다름. 인터넷 검열을 우회하기 위해 프록시 체인 솔루션을 개발했으며, 이를 termux에서 실행하고자 했음. 당시 termux에는 jdk/jre가 없었고, proot를 통해 archlinux 환경을 생성하여 jdk를 사용할 수 있었음. 이 환경은 다양한 작업에 적합했으며, bag.sh라는 스크립트를 통해 자동화된 환경 생성 및 명령 실행을 가능하게 했음. 이 스크립트는 5년 동안 업데이트되지 않은 로드맵을 가지고 있음
-
최소한의 bash 스크립트를 좋아하며, 10년 전 해커톤에서 Docker, Mesos 등을 사용한 분산 인프라를 홍보하기 위해 40줄의 bash로 intra-cluster 로드 밸런서를 구현한 적이 있음. 또한, colo-to-cloud 전송 도구를 개발했으나 현재는 잃어버린 상태임. Shell Fu 등에서 유용한 스크립트 모음을 찾을 수 있음
-
저장소에 "아직 구현되지 않음", "할 일", "작업 중"이라는 메시지가 있고 마지막 커밋이 몇 년 전인 경우가 좋음. 이는 본인이 코드에서 놓친 할 일 목록을 다시 돌아보지 않아도 된다는 안도감을 줌
-
lazydocker가 Docker Desktop의 훌륭한 대안으로 언급되지 않은 것이 놀라움. 이는 ssh를 통해 실행되는 꽤 완전한 기능의 터미널 UI임
-
BastilleBSD는 BSD에서 jails를 관리하는 도구로, Docker에서 찾을 수 있는 많은 구조를 사용함. BSD의 다른 jail 관리 소프트웨어보다 의존성이 적어 선호함
-
실용성을 떠나 구현에서 배울 점이 많음
-
GitHub 홈페이지 링크가 깨져 있으니 "www."를 제거해야 함
-
Docker의 간단한 재구현이 가능하다는 점이 Docker 회사가 직면한 가장 큰 문제임. Docker의 진정한 가치는 Docker Hub뿐만 아니라 Windows와 Mac용 Docker에서 제공하는 통합 경험에 있음. 이는 VirtualBox와 Vagrant를 수동으로 설정하는 것보다 훨씬 우수한 경험을 제공함
-
Docker가 어떻게 시작되었는지에 대한 의문
-
Docker가 아직 ubuntu/debian 저장소에 포함되지 않은 이유에 대한 의문. 이는 쉬운 순이익이 될 것임