1. Prepare these files in the same folder:
Dockerfile:
FROM debian:buster-slim as builder
## Supports x86_64, x86, arm, and arm64
RUN sed -i 's|deb.debian.org/debian|archive.debian.org/debian|g; s|security.debian.org|archive.debian.org/|g' /etc/apt/sources.list
RUN apt-get update && apt-get install -y curl gnupg
RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0x1657198823e52a61 && \
echo "deb http://download.zerotier.com/debian/buster buster main" > /etc/apt/sources.list.d/zerotier.list
RUN sed -i 's|deb.debian.org/debian|archive.debian.org/debian|g; s|security.debian.org|archive.debian.org/|g' /etc/apt/sources.list
RUN apt-get update && apt-get install -y zerotier-one=1.14.0
FROM debian:buster-slim
LABEL version="1.14.0"
LABEL description="Containerized ZeroTier One for use on CoreOS or other Docker-only Linux hosts."
# ZeroTier relies on UDP port 9993
EXPOSE 9993/udp
# Install necessary libraries
RUN sed -i 's|deb.debian.org/debian|archive.debian.org/debian|g; s|security.debian.org|archive.debian.org/|g' /etc/apt/sources.list
RUN apt-get update && apt-get install -y libssl1.1
RUN mkdir -p /var/lib/zerotier-one
COPY --from=builder /usr/sbin/zerotier-cli /usr/sbin/zerotier-cli
COPY --from=builder /usr/sbin/zerotier-idtool /usr/sbin/zerotier-idtool
COPY --from=builder /usr/sbin/zerotier-one /usr/sbin/zerotier-one
COPY main.sh /var/lib/zerotier-one/main.sh
RUN chmod 0755 /var/lib/zerotier-one/main.sh
ENTRYPOINT ["/var/lib/zerotier-one/main.sh"]
CMD ["zerotier-one"]
main.sh:
#!/bin/sh
export PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin
if [ ! -e /dev/net/tun ]; then
echo 'FATAL: cannot start ZeroTier One in container: /dev/net/tun not present.'
exit 1
fi
exec zerotier-one
2. build zerotier docker image:
docker build --no-cache -t zerotier-one:1.14.0 .
3. start the docker container:
docker run -d --name zerotier-one --cap-add=NET_ADMIN --device /dev/net/tun --network host --restart unless-stopped zerotier-one:1.14.0
4. join the network:
docker exec zerotier-one zerotier-cli join XXXXXXXXXX