Docker Hub 에서 제공하는 이미지를 사용하지 않고 새로운 베이스 이미지 제작하기.
두가지 방법이 있다.
- debootstrap 과 docker import 를 사용하는 방법
- scratch 을 베이스 이미지로 docker build 하는 방법
1. debootstrap 사용
debootstrap 은 현재 시스템에 또 다른 Debian 기반의 시스템을 설치할 수 있는 툴이다.
debootstrap 를 사용하여 서브디렉토리에 ubuntu 를 하나 더 설치하고 이미지로 만들 것이다.
# apt-get install debootstrap # debootstrap trusty ubuntu1404 | cs |
ubuntu1404 디렉토리에 Ubuntu 14.04 버전인 trusty 의 바이너리 파일이 생성되었다.
docker import 로 이미지를 만들려면 tar 압축 파일이 필요하다.
ubuntu1404 디렉토리를 tar 파일로 압축해야 한다. 압축 후에 myUbuntu 라는 이미지로 생성한다.
# tar -C ubuntu1404 -c . | docker import - myUbuntu e72dd803924af5636a1181c693846f3d1b3d4aa63639d83b27d22da835c91a3f | cs |
docker import 는 tar 파일로 압축된 파일 시스템으로부터 이미지를 생성한다. URL 을 사용할 수도 있다.
아래 명령은 현재 디렉토리의 내용을 바로 hello 이미지로 생성한다.
# tar -c . | docker import - hello | cs |
이미지가 생성되었는지 확인한다.
# docker images | cs |
2. scratch 사용
컨테이너를 빌드하기 위해 scratch 라는 빈 이미지를 예약어를 사용할 수도 있다.
Docker Hub 에 많은 scratch 가 있지만 pull, run 등 아무것도 할 수 없다.
이미지가 비어있기 때문에 컨테이너를 생성할 수는 없고, 빈 이미지로 시작하고 싶다면 Dockerfile 에서 scratch 예약어를 지정하면 된다.
그리고 Dockerfile 의 scratch 다음에 원하는 명령어들을 나열하고 build 하면 scratch 이미지를 사용하여 컨테이너를 생성할 수 있다.
FROM scratch ADD hello / CMD ["/hello"] docker build --tag hello:0.1 . | cs |
WRITTEN BY
- 손가락귀신
정신 못차리면, 벌 받는다.