Docker installation
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG ${user_name}
What is a build kit
- reference resourcesbuild ARM based Docker Images
- Simply put, it’s extension
docker build
An experimental function of
"features": {
"buildkit": true
}
Take bind as a case to build
-
docker-bindThe project is an open source custom DNS deployment service, but it does not provide based on
linux/aarch64
The available image of the architecture, so you need to use it yourselfbuildx
Command to perform build operations-
In the raspberry pie system, execute
uname -a
To view your target architecture- linux/aarch64
- linux/amd64
- linux/arm64
- linux/arm/v7
- ….
-
#Execute the following command in the raspberry pie system
git clone https://github.com/sameersbn/docker-bind.git
cd docker-bind
#Modify dockerfile content, please pay attention!! This setting is related to docker bind and has nothing to do with the use of build kit. It is only used for demonstration
echo 'FROM ubuntu:focal-20200423 AS add-apt-repositories
COPY jcameron-key.asc jcameron-key.asc
RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y gnupg \
&& apt-get install -y curl \
&& apt-key adv --fetch-keys https://www.webmin.com/jcameron-key.asc \
&& echo "deb http://download.webmin.com/download/repository sarge contrib" >> /etc/apt/sources.list
FROM ubuntu:focal-20200423
LABEL maintainer="[email protected]"
ENV BIND_USER=bind \
BIND_VERSION=9.16.1 \
WEBMIN_VERSION=1.970 \
DATA_DIR=/data
RUN apt-get update \
&& apt-get install -y curl
COPY --from=add-apt-repositories /etc/apt/trusted.gpg /etc/apt/trusted.gpg
COPY --from=add-apt-repositories /etc/apt/sources.list /etc/apt/sources.list
RUN rm -rf /etc/apt/apt.conf.d/docker-gzip-indexes \
&& apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y \
bind9=1:${BIND_VERSION}* bind9-host=1:${BIND_VERSION}* dnsutils \
webmin=${WEBMIN_VERSION}* \
&& rm -rf /var/lib/apt/lists/*
COPY entrypoint.sh /sbin/entrypoint.sh
RUN chmod 755 /sbin/entrypoint.sh
EXPOSE 53/udp 53/tcp 10000/tcp
ENTRYPOINT ["/sbin/entrypoint.sh"]
CMD ["/usr/sbin/named"]' > Dockerfile
#Log in to your docker repository
#You can use Alibaba cloud's image warehouse or the official dockerhub warehouse
docker login --username=${user_name} registry.cn-hangzhou.aliyuncs.com
docker buildx build --platform linux/aarch64 -t registry.cn-hangzhou.aliyuncs.com/docker-image-lee/bind:aarch64 --no-cache --push .
#If you are building on MAC or windows, you need to execute the following commands first
docker buildx create --use
- When the push is complete, you can use it on raspberry pie~