[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#71254] [PATCH] services: oci-container: fix provided image is strin
From: |
Fabio Natali |
Subject: |
[bug#71254] [PATCH] services: oci-container: fix provided image is string. |
Date: |
Wed, 05 Jun 2024 12:12:33 +0100 |
Hi,
Just a quick follow-up to mention the way I tested this. Possibly a bit
convoluted, but it worked for me.
Save this to `/tmp/operating-system-test.scm'.
,----
| (define-module (operating-system-test)
| #:use-module (gnu)
| #:use-module (gnu services admin)
| #:use-module (gnu services dbus)
| #:use-module (gnu services desktop)
| #:use-module (gnu services docker)
| #:use-module (gnu services networking)
| #:export (operating-system-test))
|
| (define operating-system-test
| (operating-system
| (host-name "host")
| (timezone "Europe/London")
| (locale "en_US.UTF-8")
| (bootloader (bootloader-configuration
| (bootloader grub-bootloader)
| (targets '("/dev/vda"))))
| (file-systems (cons
| (file-system
| (device "/dev/vda2")
| (mount-point "/")
| (type "ext4"))
| %base-file-systems))
|
| (services (cons*
| (service dhcp-client-service-type)
| (service docker-service-type)
| (service elogind-service-type)
| (service oci-container-service-type
| (list
| (oci-container-configuration
| (image "nginx")
| (provision "nginx")
| (network "host"))))
| %base-services))))
|
| operating-system-test
`----
Then run this to build a system image.
,----
| guix system image \
| --load-path=build \
| --image-size=20GB \
| --image-type=qcow2 \
| /tmp/operating-system-test.scm
`----
If you are on or around '2e53fa5346bf52f6d6d26e035bc905ebd410dabb', the
above command will fail with error `In procedure struct-vtable: Wrong
type argument in position 1 (expecting struct): "nginx"'.
Now try instead from a Guix checkout with Zheng's patch.
,----
| orig=$(./pre-inst-env guix system image \
| --load-path=build \
| --image-size=20GB \
| --image-type=qcow2 \
| /tmp/operating-system-test.scm)
`----
The command will succeed, and this should be sufficient proof of the
patch effectiveness. One can of course go on and test the image itself:
,----
| dest=/tmp/operating-system-media.qcow2
| cp "${orig}" "${dest}"
| chown user:users "${dest}"
| chmod u+w "${dest}"
| qemu-system-x86_64 \
| -enable-kvm \
| -m 4096 \
| -smp 2 \
| -device e1000,netdev=net0 \
| -netdev user,id=net0,hostfwd=tcp::8080-:80 \
| -drive if=none,file="${dest}",id=myhd,index=0 \
| -device virtio-blk,drive=myhd
`----
There's a bit of manual work to be done here, as in my tests the docker
container doesn't start straightaway. Log in as root, wait for Docker to
finish pulling the Nginx image (see `tail -f /var/log/messages' and
possibly `herd restart dockerd'), then re-enable and start the Nginx
service (`herd enable nginx && herd start nginx'). After that,
everything should work as expected, i.e. the Docker Nginx contained in
the VM answers requests from the host.
Cheers, Fabio.
--
Fabio Natali
https://fabionatali.com
- [bug#71254] [PATCH] services: oci-container: fix provided image is string.,
Fabio Natali <=