Un mémo d'un petit conteneur d'image Docker
J'ai essayé ce qui suit pour m'assurer que le contenu de scratch était complètement vide.
$ uname -sm
Darwin x86_64
$ GOOS=linux GOARCH=arm64 go build -o hello hello.go
$ cat > Dockerfile
FROM scratch
COPY hello /hello
ENTRYPOINT ["/hello"]
^D
$ docker image build -t test/hello .
$ docker image ls
REPOSITORY TAG    IMAGE ID     CREATED     SIZE
test/hello latest b5590fa74374 2 hours ago 2.04MB
$ docker run test/hello
Hello, World
$ docker image save -o out.tar test/hello
$ ls -lhn out.tar
-rw-------  1 501  20   2.0M  9 10 18:12 out.tar
$ tar xvf out.tar 
x 53d2a1a74edd0b6d3863682083df76fa417ebe730feecd84a55309fe407f7b0d/
x 53d2a1a74edd0b6d3863682083df76fa417ebe730feecd84a55309fe407f7b0d/VERSION
x 53d2a1a74edd0b6d3863682083df76fa417ebe730feecd84a55309fe407f7b0d/json
x 53d2a1a74edd0b6d3863682083df76fa417ebe730feecd84a55309fe407f7b0d/layer.tar
x b5590fa74374835c813ed2c8490b2997581d3b815d306be739a2be67f6664792.json
x manifest.json
x repositories
$ tar tvf 53d2a1a74edd0b6d3863682083df76fa417ebe730feecd84a55309fe407f7b0d/layer.tar
-rwxr-xr-x  0 0      0     2038890  9 10 16:28 hello
Puisqu'il s'agit d'un conteneur, cela fonctionnera si vous importez l'environnement chroot dans tar.
$ mkdir chroot
$ GOOS=linux GOARCH=arm64 go build -o chroot/hello hello.go
$ ls -lRhn chroot
total 4104
-rwxr-xr-x  1 501  20   2.0M  9 10 18:21 hello
$ (cd chroot; tar cf ../image.tar .)
$ ls -lhn image.tar 
-rw-r--r--  1 501  20   2.0M  9 10 18:24 image.tar
$ docker image import image.tar test/import
$ docker image ls test/import
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
test/import         latest              bb6be6e60bb1        19 seconds ago      2.1MB
$ docker run test/import /hello
Hello, World
A bien fonctionné
Recommended Posts