Skip to content

Commit f19453e

Browse files
authored
feat(examples): Port basic Linux network utilities (#142)
Reviewed-by: Razvan Deaconescu <razvand@unikraft.io> Approved-by: Razvan Deaconescu <razvand@unikraft.io>
2 parents 55f1925 + 8d6c50c commit f19453e

21 files changed

+384
-0
lines changed

examples/net-tools/README.md

+75
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
# Unikraft `net-tools` port
2+
3+
This is a port of `net-tools` for Unikraft as an `examples` category.
4+
Please note some of the applications ported are not fully functional, due to some kernel level functionalities not being yet implemented by Unikraft.
5+
This port is mainly used to showcase the capabilities of running network applications on Unikraft.
6+
It is unlikely there will a real use case for them.
7+
8+
This port contains:
9+
10+
- `curl`
11+
- `dig`
12+
- `host`
13+
- `netcat`
14+
- `mtr`
15+
- `nslookup`
16+
- `ping`
17+
- `traceroute`
18+
- `wget`
19+
20+
In order to use these applications, please modify the `Kraftfile` `cmd` variable to set the program arguments.
21+
22+
# Set Up
23+
24+
To run this example, [install Unikraft's companion command-line toolchain `kraft`](https://unikraft.org/docs/cli), clone this repository and `cd` into this directory.
25+
26+
## Run and Use
27+
28+
Use `kraft` to run the image and start a Unikraft instance.
29+
Inside the `net-tools/` directory, run:
30+
31+
```bash
32+
cd <program-name>
33+
kraft run --rm --plat qemu --arch x86_64 -W -M 256M
34+
```
35+
36+
where `<program-name>` is the name of the directory of the program you want to run (e.g., `ping/`).
37+
38+
If the `--plat` argument is left out, it defaults to `qemu`.
39+
If the `--arch` argument is left out, it defaults to your system's CPU architecture.
40+
41+
Once executed, you should see the program's output.
42+
43+
## Inspect and Close
44+
45+
To list information about the Unikraft instance, use:
46+
47+
```bash
48+
kraft ps
49+
```
50+
51+
```text
52+
NAME KERNEL ARGS CREATED STATUS MEM PORTS PLAT
53+
eloquent_koko oci://unikraft.org/base:latest /allocation 7 seconds ago running 64M qemu/x86_64
54+
```
55+
56+
The instance name is `eloquent_koko`.
57+
To close the Unikraft instance, close the `kraft` process (e.g., via `Ctrl+c`) or run:
58+
59+
```bash
60+
kraft rm eloquent_koko
61+
```
62+
63+
## `kraft` and `sudo`
64+
65+
Mixing invocations of `kraft` and `sudo` can lead to unexpected behavior.
66+
Read more about how to start `kraft` without `sudo` at [https://unikraft.org/sudoless](https://unikraft.org/sudoless).
67+
68+
## Learn More
69+
70+
- [How to run unikernels locally](https://unikraft.org/docs/cli/running)
71+
- [Building `Dockerfile` Images with `BuildKit`](https://unikraft.org/guides/building-dockerfile-images-with-buildkit)
72+
73+
> [!CAUTION]
74+
> Some of the applications may not work as expected due to the lack of certain kernel functionalities in Unikraft.
75+
> This is a work in progress and we are working on adding more functionalities to Unikraft.

examples/net-tools/curl/Dockerfile

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
FROM alpine/curl-http3:8.11.0 AS build
2+
3+
FROM scratch
4+
5+
# Binary
6+
COPY --from=build /usr/local/bin/curl /usr/local/bin/curl
7+
8+
# Library dependencies
9+
COPY --from=build /lib/ld-musl-x86_64.so.1 /lib/ld-musl-x86_64.so.1
10+
COPY --from=build /usr/local/lib/libcurl.so.4 /usr/local/lib/libcurl.so.4
11+
COPY --from=build /lib/libz.so.1 /lib/libz.so.1
12+
COPY --from=build /lib/ld-musl-x86_64.so.1 /lib/ld-musl-x86_64.so.1
13+
COPY --from=build /usr/lib/libnghttp2.so.14 /usr/lib/libnghttp2.so.14
14+
COPY --from=build /usr/lib/libidn2.so.0 /usr/lib/libidn2.so.0
15+
COPY --from=build /usr/lib/libpsl.so.5 /usr/lib/libpsl.so.5
16+
COPY --from=build /usr/lib/libbrotlidec.so.1 /usr/lib/libbrotlidec.so.1
17+
COPY --from=build /usr/lib/libgcc_s.so.1 /usr/lib/libgcc_s.so.1
18+
COPY --from=build /usr/lib/libunistring.so.5 /usr/lib/libunistring.so.5
19+
COPY --from=build /usr/lib/libbrotlicommon.so.1 /usr/lib/libbrotlicommon.so.1

examples/net-tools/curl/Kraftfile

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
spec: v0.6
2+
3+
runtime: base:latest
4+
5+
rootfs: ./Dockerfile
6+
7+
cmd: ["/usr/local/bin/curl", "https://google.com"]

examples/net-tools/dig/Dockerfile

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
FROM alpine:3.20.3 AS build
2+
3+
RUN apk add --no-cache \
4+
bind-tools
5+
6+
FROM scratch
7+
8+
# Binary
9+
COPY --from=build /usr/bin/dig /usr/bin/dig
10+
11+
# Library dependencies
12+
COPY --from=build /lib/ld-musl-x86_64.so.1 /lib/ld-musl-x86_64.so.1
13+
COPY --from=build /usr/lib/libisc-9.18.31.so /usr/lib/libisc-9.18.31.so
14+
COPY --from=build /usr/lib/libdns-9.18.31.so /usr/lib/libdns-9.18.31.so
15+
COPY --from=build /usr/lib/libisccfg-9.18.31.so /usr/lib/libisccfg-9.18.31.so
16+
COPY --from=build /usr/lib/libirs-9.18.31.so /usr/lib/libirs-9.18.31.so
17+
COPY --from=build /usr/lib/libbind9-9.18.31.so /usr/lib/libbind9-9.18.31.so
18+
COPY --from=build /lib/ld-musl-x86_64.so.1 /lib/ld-musl-x86_64.so.1
19+
COPY --from=build /usr/lib/libuv.so.1 /usr/lib/libuv.so.1
20+
COPY --from=build /lib/libssl.so.3 /lib/libssl.so.3
21+
COPY --from=build /lib/libcrypto.so.3 /lib/libcrypto.so.3
22+
COPY --from=build /lib/libz.so.1 /lib/libz.so.1
23+
COPY --from=build /usr/lib/libjson-c.so.5 /usr/lib/libjson-c.so.5
24+
COPY --from=build /usr/lib/libnghttp2.so.14 /usr/lib/libnghttp2.so.14
25+
COPY --from=build /usr/lib/libxml2.so.2 /usr/lib/libxml2.so.2
26+
COPY --from=build /usr/lib/libgssapi_krb5.so.2 /usr/lib/libgssapi_krb5.so.2
27+
COPY --from=build /usr/lib/libkrb5.so.3 /usr/lib/libkrb5.so.3
28+
COPY --from=build /usr/lib/libfstrm.so.0 /usr/lib/libfstrm.so.0
29+
COPY --from=build /usr/lib/libprotobuf-c.so.1 /usr/lib/libprotobuf-c.so.1
30+
COPY --from=build /usr/lib/libns-9.18.31.so /usr/lib/libns-9.18.31.so
31+
COPY --from=build /usr/lib/liblzma.so.5 /usr/lib/liblzma.so.5
32+
COPY --from=build /usr/lib/libk5crypto.so.3 /usr/lib/libk5crypto.so.3
33+
COPY --from=build /lib/libcom_err.so.2 /lib/libcom_err.so.2
34+
COPY --from=build /usr/lib/libkrb5support.so.0 /usr/lib/libkrb5support.so.0
35+
COPY --from=build /usr/lib/libkeyutils.so.1 /usr/lib/libkeyutils.so.1

examples/net-tools/dig/Kraftfile

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
spec: v0.6
2+
3+
runtime: base:latest
4+
5+
rootfs: ./Dockerfile
6+
7+
cmd: ["/usr/bin/dig", "google.com"]

examples/net-tools/host/Dockerfile

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
FROM debian:trixie-slim AS build
2+
3+
RUN apt-get update && apt-get install -y \
4+
dnsutils
5+
6+
FROM scratch
7+
8+
# Binary
9+
COPY --from=build /usr/bin/host /usr/bin/host
10+
11+
# Library dependencies
12+
COPY --from=build /lib/x86_64-linux-gnu/libisc-9.20.3-1-Debian.so /lib/x86_64-linux-gnu/libisc-9.20.3-1-Debian.so
13+
COPY --from=build /lib/x86_64-linux-gnu/libdns-9.20.3-1-Debian.so /lib/x86_64-linux-gnu/libdns-9.20.3-1-Debian.so
14+
COPY --from=build /lib/x86_64-linux-gnu/libisccfg-9.20.3-1-Debian.so /lib/x86_64-linux-gnu/libisccfg-9.20.3-1-Debian.so
15+
COPY --from=build /lib/x86_64-linux-gnu/libidn2.so.0 /lib/x86_64-linux-gnu/libidn2.so.0
16+
COPY --from=build /lib/x86_64-linux-gnu/libc.so.6 /lib/x86_64-linux-gnu/libc.so.6
17+
COPY --from=build /lib/x86_64-linux-gnu/libuv.so.1 /lib/x86_64-linux-gnu/libuv.so.1
18+
COPY --from=build /lib/x86_64-linux-gnu/libssl.so.3 /lib/x86_64-linux-gnu/libssl.so.3
19+
COPY --from=build /lib/x86_64-linux-gnu/libcrypto.so.3 /lib/x86_64-linux-gnu/libcrypto.so.3
20+
COPY --from=build /lib/x86_64-linux-gnu/libz.so.1 /lib/x86_64-linux-gnu/libz.so.1
21+
COPY --from=build /lib/x86_64-linux-gnu/libjemalloc.so.2 /lib/x86_64-linux-gnu/libjemalloc.so.2
22+
COPY --from=build /lib/x86_64-linux-gnu/libjson-c.so.5 /lib/x86_64-linux-gnu/libjson-c.so.5
23+
COPY --from=build /lib/x86_64-linux-gnu/libnghttp2.so.14 /lib/x86_64-linux-gnu/libnghttp2.so.14
24+
COPY --from=build /lib/x86_64-linux-gnu/libxml2.so.2 /lib/x86_64-linux-gnu/libxml2.so.2
25+
COPY --from=build /lib/x86_64-linux-gnu/libm.so.6 /lib/x86_64-linux-gnu/libm.so.6
26+
COPY --from=build /lib/x86_64-linux-gnu/liburcu.so.8 /lib/x86_64-linux-gnu/liburcu.so.8
27+
COPY --from=build /lib/x86_64-linux-gnu/liburcu-common.so.8 /lib/x86_64-linux-gnu/liburcu-common.so.8
28+
COPY --from=build /lib64/ld-linux-x86-64.so.2 /lib64/ld-linux-x86-64.so.2
29+
COPY --from=build /lib/x86_64-linux-gnu/libgssapi_krb5.so.2 /lib/x86_64-linux-gnu/libgssapi_krb5.so.2
30+
COPY --from=build /lib/x86_64-linux-gnu/libkrb5.so.3 /lib/x86_64-linux-gnu/libkrb5.so.3
31+
COPY --from=build /lib/x86_64-linux-gnu/libmaxminddb.so.0 /lib/x86_64-linux-gnu/libmaxminddb.so.0
32+
COPY --from=build /lib/x86_64-linux-gnu/libfstrm.so.0 /lib/x86_64-linux-gnu/libfstrm.so.0
33+
COPY --from=build /lib/x86_64-linux-gnu/libprotobuf-c.so.1 /lib/x86_64-linux-gnu/libprotobuf-c.so.1
34+
COPY --from=build /lib/x86_64-linux-gnu/liblmdb.so.0 /lib/x86_64-linux-gnu/liblmdb.so.0
35+
COPY --from=build /lib/x86_64-linux-gnu/liburcu-cds.so.8 /lib/x86_64-linux-gnu/liburcu-cds.so.8
36+
COPY --from=build /lib/x86_64-linux-gnu/libns-9.20.3-1-Debian.so /lib/x86_64-linux-gnu/libns-9.20.3-1-Debian.so
37+
COPY --from=build /lib/x86_64-linux-gnu/libunistring.so.5 /lib/x86_64-linux-gnu/libunistring.so.5
38+
COPY --from=build /lib/x86_64-linux-gnu/libzstd.so.1 /lib/x86_64-linux-gnu/libzstd.so.1
39+
COPY --from=build /lib/x86_64-linux-gnu/libstdc++.so.6 /lib/x86_64-linux-gnu/libstdc++.so.6
40+
COPY --from=build /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib/x86_64-linux-gnu/libgcc_s.so.1
41+
COPY --from=build /lib/x86_64-linux-gnu/libicuuc.so.72 /lib/x86_64-linux-gnu/libicuuc.so.72
42+
COPY --from=build /lib/x86_64-linux-gnu/liblzma.so.5 /lib/x86_64-linux-gnu/liblzma.so.5
43+
COPY --from=build /lib/x86_64-linux-gnu/libk5crypto.so.3 /lib/x86_64-linux-gnu/libk5crypto.so.3
44+
COPY --from=build /lib/x86_64-linux-gnu/libcom_err.so.2 /lib/x86_64-linux-gnu/libcom_err.so.2
45+
COPY --from=build /lib/x86_64-linux-gnu/libkrb5support.so.0 /lib/x86_64-linux-gnu/libkrb5support.so.0
46+
COPY --from=build /lib/x86_64-linux-gnu/libkeyutils.so.1 /lib/x86_64-linux-gnu/libkeyutils.so.1
47+
COPY --from=build /lib/x86_64-linux-gnu/libresolv.so.2 /lib/x86_64-linux-gnu/libresolv.so.2
48+
COPY --from=build /lib/x86_64-linux-gnu/libicudata.so.72 /lib/x86_64-linux-gnu/libicudata.so.72

examples/net-tools/host/Kraftfile

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
spec: v0.6
2+
3+
runtime: base:latest
4+
5+
rootfs: ./Dockerfile
6+
7+
cmd: ["/usr/bin/host", "google.com"]

examples/net-tools/mtr/Dockerfile

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
FROM alpine:3.20.3 AS build
2+
3+
RUN apk add --no-cache \
4+
mtr=0.95-r2
5+
6+
FROM scratch
7+
8+
# Binary
9+
COPY --from=build /usr/sbin/mtr /usr/sbin/mtr
10+
COPY --from=build /usr/sbin/mtr-packet /usr/sbin/mtr-packet
11+
12+
# Library dependencies
13+
COPY --from=build /lib/ld-musl-x86_64.so.1 /lib/ld-musl-x86_64.so.1
14+
COPY --from=build /usr/lib/libjansson.so.4 /usr/lib/libjansson.so.4
15+
COPY --from=build /usr/lib/libncursesw.so.6 /usr/lib/libncursesw.so.6
16+
COPY --from=build /lib/ld-musl-x86_64.so.1 /lib/ld-musl-x86_64.so.1

examples/net-tools/mtr/Kraftfile

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
spec: v0.6
2+
3+
runtime: base:latest
4+
5+
rootfs: ./Dockerfile
6+
7+
cmd: ["/usr/sbin/mtr", "google.com"]

examples/net-tools/mtr/README.md

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Unikraft - MTR port
2+
3+
This folder contains the port of MTR (My Traceroute) for Unikraft.
4+
MTR is a network diagnostic tool that combines the functionality of the `traceroute` and `ping` programs.
5+
6+
> [!CAUTION]
7+
> PROGRAM DOES NOT WORK!! `fork()` is not implemented in Unikraft as of writing,
8+
> which `mtr` depends on. Prepare to be disappointed :-)

examples/net-tools/netcat/Dockerfile

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
FROM debian:trixie-slim AS build
2+
3+
RUN apt-get update && apt-get install -y \
4+
netcat-openbsd
5+
6+
FROM scratch
7+
8+
# Binary
9+
COPY --from=build /usr/bin/nc /usr/bin/nc
10+
11+
# Library dependencies
12+
COPY --from=build /lib/x86_64-linux-gnu/libbsd.so.0 /lib/x86_64-linux-gnu/libbsd.so.0
13+
COPY --from=build /lib/x86_64-linux-gnu/libresolv.so.2 /lib/x86_64-linux-gnu/libresolv.so.2
14+
COPY --from=build /lib/x86_64-linux-gnu/libc.so.6 /lib/x86_64-linux-gnu/libc.so.6
15+
COPY --from=build /lib/x86_64-linux-gnu/libmd.so.0 /lib/x86_64-linux-gnu/libmd.so.0
16+
COPY --from=build /lib64/ld-linux-x86-64.so.2 /lib64/ld-linux-x86-64.so.2

examples/net-tools/netcat/Kraftfile

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
spec: v0.6
2+
3+
runtime: base:latest
4+
5+
rootfs: ./Dockerfile
6+
7+
cmd: ["/usr/bin/nc","google.com","80"]

examples/net-tools/netcat/README.md

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# Unikraft - `netcat` port
2+
3+
This is the OpenBSD `netcat` port for Unikraft.
4+
`netcat` is a simple Unix utility which reads and writes data across network connections, using TCP or UDP protocol.
5+
It is designed to be a reliable "backend" tool that can be used directly or easily driven by other programs and scripts.
6+
At the same time, it is a feature-rich network debugging and exploration tool, since it can create almost any kind of connection you would need and has several interesting built-in capabilities.
+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
FROM debian:trixie-slim AS build
2+
3+
RUN apt-get update && apt-get install -y \
4+
dnsutils
5+
6+
FROM scratch
7+
8+
# Binary
9+
COPY --from=build /usr/bin/nslookup /usr/bin/nslookup
10+
11+
# Library dependencies
12+
COPY --from=build /lib/x86_64-linux-gnu/libjemalloc.so.2 /lib/x86_64-linux-gnu/libjemalloc.so.2
13+
COPY --from=build /lib/x86_64-linux-gnu/libisc-9.20.3-1-Debian.so /lib/x86_64-linux-gnu/libisc-9.20.3-1-Debian.so
14+
COPY --from=build /lib/x86_64-linux-gnu/libdns-9.20.3-1-Debian.so /lib/x86_64-linux-gnu/libdns-9.20.3-1-Debian.so
15+
COPY --from=build /lib/x86_64-linux-gnu/libisccfg-9.20.3-1-Debian.so /lib/x86_64-linux-gnu/libisccfg-9.20.3-1-Debian.so
16+
COPY --from=build /lib/x86_64-linux-gnu/libidn2.so.0 /lib/x86_64-linux-gnu/libidn2.so.0
17+
COPY --from=build /lib/x86_64-linux-gnu/libedit.so.2 /lib/x86_64-linux-gnu/libedit.so.2
18+
COPY --from=build /lib/x86_64-linux-gnu/libc.so.6 /lib/x86_64-linux-gnu/libc.so.6
19+
COPY --from=build /lib/x86_64-linux-gnu/libm.so.6 /lib/x86_64-linux-gnu/libm.so.6
20+
COPY --from=build /lib/x86_64-linux-gnu/libstdc++.so.6 /lib/x86_64-linux-gnu/libstdc++.so.6
21+
COPY --from=build /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib/x86_64-linux-gnu/libgcc_s.so.1
22+
COPY --from=build /lib/x86_64-linux-gnu/libuv.so.1 /lib/x86_64-linux-gnu/libuv.so.1
23+
COPY --from=build /lib/x86_64-linux-gnu/libssl.so.3 /lib/x86_64-linux-gnu/libssl.so.3
24+
COPY --from=build /lib/x86_64-linux-gnu/libcrypto.so.3 /lib/x86_64-linux-gnu/libcrypto.so.3
25+
COPY --from=build /lib/x86_64-linux-gnu/libz.so.1 /lib/x86_64-linux-gnu/libz.so.1
26+
COPY --from=build /lib/x86_64-linux-gnu/libjson-c.so.5 /lib/x86_64-linux-gnu/libjson-c.so.5
27+
COPY --from=build /lib/x86_64-linux-gnu/libnghttp2.so.14 /lib/x86_64-linux-gnu/libnghttp2.so.14
28+
COPY --from=build /lib/x86_64-linux-gnu/libxml2.so.2 /lib/x86_64-linux-gnu/libxml2.so.2
29+
COPY --from=build /lib/x86_64-linux-gnu/liburcu.so.8 /lib/x86_64-linux-gnu/liburcu.so.8
30+
COPY --from=build /lib/x86_64-linux-gnu/liburcu-common.so.8 /lib/x86_64-linux-gnu/liburcu-common.so.8
31+
COPY --from=build /lib64/ld-linux-x86-64.so.2 /lib64/ld-linux-x86-64.so.2
32+
COPY --from=build /lib/x86_64-linux-gnu/libgssapi_krb5.so.2 /lib/x86_64-linux-gnu/libgssapi_krb5.so.2
33+
COPY --from=build /lib/x86_64-linux-gnu/libkrb5.so.3 /lib/x86_64-linux-gnu/libkrb5.so.3
34+
COPY --from=build /lib/x86_64-linux-gnu/libmaxminddb.so.0 /lib/x86_64-linux-gnu/libmaxminddb.so.0
35+
COPY --from=build /lib/x86_64-linux-gnu/libfstrm.so.0 /lib/x86_64-linux-gnu/libfstrm.so.0
36+
COPY --from=build /lib/x86_64-linux-gnu/libprotobuf-c.so.1 /lib/x86_64-linux-gnu/libprotobuf-c.so.1
37+
COPY --from=build /lib/x86_64-linux-gnu/liblmdb.so.0 /lib/x86_64-linux-gnu/liblmdb.so.0
38+
COPY --from=build /lib/x86_64-linux-gnu/liburcu-cds.so.8 /lib/x86_64-linux-gnu/liburcu-cds.so.8
39+
COPY --from=build /lib/x86_64-linux-gnu/libns-9.20.3-1-Debian.so /lib/x86_64-linux-gnu/libns-9.20.3-1-Debian.so
40+
COPY --from=build /lib/x86_64-linux-gnu/libunistring.so.5 /lib/x86_64-linux-gnu/libunistring.so.5
41+
COPY --from=build /lib/x86_64-linux-gnu/libtinfo.so.6 /lib/x86_64-linux-gnu/libtinfo.so.6
42+
COPY --from=build /lib/x86_64-linux-gnu/libbsd.so.0 /lib/x86_64-linux-gnu/libbsd.so.0
43+
COPY --from=build /lib/x86_64-linux-gnu/libzstd.so.1 /lib/x86_64-linux-gnu/libzstd.so.1
44+
COPY --from=build /lib/x86_64-linux-gnu/libicuuc.so.72 /lib/x86_64-linux-gnu/libicuuc.so.72
45+
COPY --from=build /lib/x86_64-linux-gnu/liblzma.so.5 /lib/x86_64-linux-gnu/liblzma.so.5
46+
COPY --from=build /lib/x86_64-linux-gnu/libk5crypto.so.3 /lib/x86_64-linux-gnu/libk5crypto.so.3
47+
COPY --from=build /lib/x86_64-linux-gnu/libcom_err.so.2 /lib/x86_64-linux-gnu/libcom_err.so.2
48+
COPY --from=build /lib/x86_64-linux-gnu/libkrb5support.so.0 /lib/x86_64-linux-gnu/libkrb5support.so.0
49+
COPY --from=build /lib/x86_64-linux-gnu/libkeyutils.so.1 /lib/x86_64-linux-gnu/libkeyutils.so.1
50+
COPY --from=build /lib/x86_64-linux-gnu/libresolv.so.2 /lib/x86_64-linux-gnu/libresolv.so.2
51+
COPY --from=build /lib/x86_64-linux-gnu/libmd.so.0 /lib/x86_64-linux-gnu/libmd.so.0
52+
COPY --from=build /lib/x86_64-linux-gnu/libicudata.so.72 /lib/x86_64-linux-gnu/libicudata.so.72

examples/net-tools/nslookup/Kraftfile

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
spec: v0.6
2+
3+
runtime: base:latest
4+
5+
rootfs: ./Dockerfile
6+
7+
cmd: ["/usr/bin/nslookup"]

examples/net-tools/ping/Dockerfile

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
FROM debian:trixie-slim AS build
2+
3+
RUN apt-get update && apt-get install -y \
4+
inetutils-ping
5+
6+
FROM scratch
7+
8+
# Binary
9+
COPY --from=build /usr/bin/ping /usr/bin/ping
10+
11+
# Library dependencies
12+
COPY --from=build /lib/x86_64-linux-gnu/libc.so.6 /lib/x86_64-linux-gnu/libc.so.6
13+
COPY --from=build /lib64/ld-linux-x86-64.so.2 /lib64/ld-linux-x86-64.so.2

examples/net-tools/ping/Kraftfile

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
spec: v0.6
2+
3+
runtime: base:latest
4+
5+
rootfs: ./Dockerfile
6+
7+
cmd: ["/usr/bin/ping", "google.com"]
+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
FROM debian:trixie-slim AS build
2+
3+
RUN apt-get update && apt-get install -y \
4+
traceroute
5+
6+
FROM scratch
7+
8+
# Binary
9+
COPY --from=build /usr/sbin/traceroute /usr/sbin/traceroute
10+
11+
# Library dependencies
12+
COPY --from=build /lib/x86_64-linux-gnu/libc.so.6 /lib/x86_64-linux-gnu/libc.so.6
13+
COPY --from=build /lib64/ld-linux-x86-64.so.2 /lib64/ld-linux-x86-64.so.2
+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
spec: v0.6
2+
3+
runtime: base:latest
4+
5+
rootfs: ./Dockerfile
6+
7+
cmd: ["/usr/sbin/traceroute", "google.com"]

examples/net-tools/wget/Dockerfile

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
FROM alpine:3.20.3 AS build
2+
3+
RUN apk add --no-cache \
4+
wget
5+
6+
FROM scratch
7+
8+
# Binary
9+
COPY --from=build /usr/bin/wget /usr/bin/wget
10+
11+
# Library dependencies
12+
COPY --from=build /etc/ssl /etc/ssl
13+
COPY --from=build /lib/ld-musl-x86_64.so.1 /lib/ld-musl-x86_64.so.1
14+
COPY --from=build /usr/lib/libpcre2-8.so.0 /usr/lib/libpcre2-8.so.0
15+
COPY --from=build /usr/lib/libidn2.so.0 /usr/lib/libidn2.so.0
16+
COPY --from=build /lib/libssl.so.3 /lib/libssl.so.3
17+
COPY --from=build /lib/libcrypto.so.3 /lib/libcrypto.so.3
18+
COPY --from=build /lib/libz.so.1 /lib/libz.so.1
19+
COPY --from=build /lib/ld-musl-x86_64.so.1 /lib/ld-musl-x86_64.so.1
20+
COPY --from=build /usr/lib/libunistring.so.5 /usr/lib/libunistring.so.5

0 commit comments

Comments
 (0)