离线包下载参考
docker ce arm64 静态编译版本下载地址_hkNaruto的博客-CSDN博客
脚本目录结构
./bin
./bin/containerd
./bin/containerd-shim
./bin/ctr
./bin/docker
./bin/docker-compose
./bin/docker-init
./bin/docker-proxy
./bin/dockerd
./bin/runc
./templates
./templates/daemon.json.j2
./templates/docker.service.j2
./install.sh
daemon.json.j2
{
"data-root": "/var/lib/docker",
"exec-opts": ["native.cgroupdriver=cgroupfs"],
"hosts": ["unix:///var/run/docker.sock"],
"max-concurrent-downloads": 10,
"log-driver": "json-file",
"log-level": "warn",
"log-opts": {
"max-size": "15m",
"max-file": "3"
},
"storage-driver": "overlay2"
}
docker.service.j2
[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.io
[Service]
Environment="PATH=/opt/kube/bin:/bin:/sbin:/usr/bin:/usr/sbin"
ExecStart=/opt/kube/bin/dockerd
ExecStartPost=/sbin/iptables -I FORWARD -s 0.0.0.0/0 -j ACCEPT
ExecReload=/bin/kill -s HUP $MAINPID
Restart=always
RestartSec=5
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target
install.sh
#!/bin/bash
set -x
# 禁用selinux
sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
STORAGE_DIR="/var/lib/docker"
etc_dir="/etc/docker"
bin_dir="/opt/kube/bin"
docker_svc=`systemctl status docker|grep Active || echo "NoFound"`
# containerd_svc=`systemctl status containerd|grep Active || echo "NoFound"`
workdir=`dirname $0`
(
cd ${workdir}
if [ "${docker_svc}" == "NoFound" ]; then
echo "create ${etc_dir}"
mkdir ${etc_dir} -p
echo "crate ${bin_dir}"
mkdir ${bin_dir} -p
echo "copy bin files"
cp -vf bin/* ${bin_dir}"/"
echo "flush-iptables"
iptables -P INPUT ACCEPT \
&& iptables -F && iptables -X \
&& iptables -F -t nat && iptables -X -t nat \
&& iptables -F -t raw && iptables -X -t raw \
&& iptables -F -t mangle && iptables -X -t mangle
echo "创建docker的systemd unit文件"
cp -vf templates/docker.service.j2 /etc/systemd/system/docker.service
echo "开机启用docker 服务"
systemctl enable docker
echo "开启docker 服务"
systemctl daemon-reload && systemctl restart docker
echo "轮询等待docker服务运行"
while [ 1 -eq 1 ]; do
docker_status=`systemctl status docker.service|grep Active`
if [ "${docker_status}" == "" ]; then
echo "wait docker start"
sleep 1
else
echo "docker started"
break
fi
done
echo "配置 docker 命令软链接"
ln -s -f ${bin_dir}/docker /usr/bin/docker
echo "docker安装完成"
fi
)
echo "enable ipv4 forward"
sed -i '/# -- enable ipv4 forward begin --/,/# -- enable ipv4 forward end --/d' /etc/sysctl.conf
cat << EOF >> /etc/sysctl.conf
# -- enable ipv4 forward begin --
net.ipv4.ip_forward=1
# -- enable ipv4 forward end --
EOF
sysctl -p
echo "done"
systemctl restart docker
echo "restart docker done. (for CentOS7 iptables nat DOCKER)"
sleep 10s