alestrix/nap

By alestrix

Updated about 1 year ago

Tiny sleep-like command written in x86_64 assembly

Image
0

11

Nap

About

A tiny container that sleeps (almost) forever or alternatively the number of seconds given as command.

Entrypoint is the nap program written in assembly by the folks at SPS Commerce. See Introducing "nap": an unusual fix to a bewildering bug.

Dockerfile

I compiled nap according to instructions (see Git repo linked to in article above), then put the compiled file into a scratch container:

FROM scratch
ADD nap /nap
WORKDIR /
USER 1000:1000
ENTRYPOINT ["/nap"]
CMD ["315576000"]

315576000 seconds is equal to ten years.

I never looked into how to create cross-arch containers, so ended up using only the x86_64 binary.

ConfigMap

If you need nap as an ELF executable within your container on a k8s cluster, you might find the base64 encoded representation of the binary useful:

f0VMRgIBAQAAAAAAAAAAAAIAPgABAAAA8ABAAAAAAABAAAAAAAAAAHACAAAAAAAAAAAAAEAAOAAD
AEAABAADAAEAAAAFAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAzQEAAAAAAADNAQAAAAAAAAAQ
AAAAAAAAAQAAAAYAAADQAQAAAAAAANARQAAAAAAA0BFAAAAAAACEAAAAAAAAAIQAAAAAAAAAABAA
AAAAAABR5XRkBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA
AAAAAAAAAAAAAAAATIsEJEmD+AJ1PzHATItMJBC7CgAAAEEPtgmD+QB0I4P5MHJwg/k5d2uD6TD3
64P6AA+FgAAAAAHIeHxyekn/wevUiQQl1BFAALgEAAAAuwEAAAC53BFAALoNAAAAzYC4ogAAALvU
EUAAuQAAAADNgLgEAAAAuwEAAAC56RFAALoHAAAAzYC4AQAAAIscJdARQADNgMcEJdARQAABAAAA
uAQAAAC7AgAAALnwEUAAui8AAADNgOuSxwQl0BFAAAIAAAC4BAAAALsCAAAAuR8SQAC6NQAAAM2A
6Wz///8AAAAAAAAACgAAAAAAAABTbGVlcGluZy4uLgoARG9uZSEKAEJhZCBpbnB1dC4gU2xlZXBp
bmcgZm9yIGRlZmF1bHQgb2YgMTAgc2Vjb25kcwoASW5wdXQgdG9vIGxhcmdlLiBTbGVlcGluZyBm
b3IgZGVmYXVsdCBvZiAxMCBzZWNvbmRzCgAALnNoc3RydGFiAC50ZXh0AC5kYXRhAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAsAAAABAAAABgAAAAAAAADwAEAAAAAAAPAAAAAAAAAA3QAAAAAAAAAAAAAAAAAAABAAAAAA
AAAAAAAAAAAAAAARAAAAAQAAAAMAAAAAAAAA0BFAAAAAAADQAQAAAAAAAIQAAAAAAAAAAAAAAAAA
AAAEAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAVAIAAAAAAAAXAAAAAAAA
AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==

Or the base64 representation of nap.gz:

H4sIAAAAAAACA6t39XFjYmRkgAEmBjsGEO8DgwOY7wAVL2CCKwGKWTAwA0kWIAlSy8qADBxQ6LNQ
o2E0gwCEAnHZgPgCVPyCoAMK3QJVDqNh+gKflqSwMRAPBND4Pt0sKp7NP5hK7Q0P+HT7qAjs5gKK
OvJv42z+yVCi3PzToKig+adleXbzS4Pvr5t/MfC3NoCce6KipqjK8//B11c6WVSvAB25gwUovBvk
+p13gNxdvCBPNuxYBBIFye9kgAgglL0EKWOHiIIEumVUQb4923CcBcwAiUGUg8J65weQcn2w8teT
oEqYUJXICwGVmIKVvMz5//8/1I9cUDo4JzW1IDMvXU9Pj4vBJT8vVZGLwSkxRSEzr6C0RE8BJq2Q
ll+kkJKalliaU6KQn6ZgaKBQnJqcn5dSzMXgCVKqUJKfr5CTWJSeSpwmBr3ijOKSopLEJAa9ktSK
Ega9lMSSRAaqAG6ktMOAlE4/QPl3CcS/IFQ/MwNaumNES29QwILGR9aLDEKg+UMci3pkAACeE7Qv
cAMAAA==

The default sleep time of the nap binary is ten seconds.

Docker Pull Command

docker pull alestrix/nap