- 将下面的内容并全选另存为
/etc/profile.d/z90_dockerfuncs.sh
到目标UBUNTU系统上 - 执行
source /etc/profile.d/z90_dockerfuncs.sh
即可 - 点击此传送门查看原始文件
#!/usr/bin/env bash
_sfi.dockereng() {
apt-get remove docker docker-engine docker.io containerd runc
apt-get update
apt-get install ca-certificates curl gnupg
mkdir -m 0755 -p /etc/apt/keyrings
local DLURL='https://download.docker.com/linux/ubuntu'
local VFCFG='/etc/apt/keyrings/docker.gpg'
local VARCH="$(dpkg --print-architecture)"
local OSVER="$(. /etc/os-release && echo $VERSION_CODENAME)"
curl -fsSL $DLURL/gpg | sudo gpg --dearmor -o $VFCFG
echo "deb [arch="$VARCH" signed-by=$VFCFG] $DLURL $OSVER stable" |
tee /etc/apt/sources.list.d/docker.list >/dev/null
apt update
apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
}
sfi.docker() {
local flg="${1:-no}"
if [ "Xno" = "X$flg" ]; then
[ "X" != "X$(command -v docker)" ] && return
fi
local f=$(ls -l $HOME/.*/*/get-docker.sh 2>/dev/null | awk '{printf $NF}')
[ "X" != "X$f" ] && bash $f || _sfi.dockereng
}
[ "X" != "X$(command -v docker)" ] && {
dkt_uptdaemonjson() {
local thz_ip4=$(hostname -I | awk '{print $1}')
local thz_rgymir='https://ep02eyw6.mirror.aliyuncs.com","https://docker.mirrors.ustc.edu.cn'
{
echo '{'
echo ' "exec-opts": ["native.cgroupdriver=systemd"],'
echo ' "registry-mirrors": ["'$thz_rgymir'"],'
echo ' "insecure-registries" : ["'$thz_ip4':443","'$thz_ip4':80","0.0.0.0/0"],'
echo ' "log-driver": "json-file",'
echo ' "log-opts": {"max-size": "100m"},'
echo ' "storage-driver": "overlay2",'
echo ' "bip": "192.168.2.251/24",'
echo ' "data-root": "/zsq/docker",'
echo ' "dns": ["114.114.114.114","223.5.5.5","8.8.8.8"]'
echo '}'
} >/etc/docker/daemon.json
mkdir -p /zsq/docker 2>/dev/null
systemctl daemon-reload
systemctl restart docker
}
dkt_setup_bldenv() {
case $1 in
-h | --help | help) echo "USAGE: $FUNCNAME [dkimg{=myenv:latest}] [dkname{=bldenv}]" && return ;;
esac
local dk_img=${1:-mydev} dkname="${2:-bldenv}"
local has=$(docker ps -a | awk '$NF=="'${dkname,,}'"{printf 1}')
[ "X1" = "X$has" ] && dkname=${dkname}_$(echo "$(date +%s)%100" | bc)
local ropts="-itd"
ropts+=' -w /root'
ropts+=' -u root:root'
ropts+=" -h $dkname"
ropts+=" --name $dkname"
ropts+=' --network host'
ropts+=' --privileged'
ropts+=' -v /dev:/dev:ro'
ropts+=' -v /opt:/opt:rw'
ropts+=' -v /root:/root:rw'
ropts+=' -v /etc/profile:/etc/profile:ro'
ropts+=' -v /etc/profile.d:/etc/profile.d:rw'
ropts+=' -v /home/toolchain:/home/toolchain:ro'
ropts+=' -v /sys/bus/pci/drivers:/sys/bus/pci/drivers:ro'
ropts+=' -v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime:ro'
ropts+=' -v /sys/devices/system/node:/sys/devices/system/node:ro'
docker run $ropts "$dk_img" "/bin/bash"
}
dkt_in() {
case $1 in
-h | --help) echo "Usage: $FUNCNAME [kw_first_running_docker{:=bldenv}]" && return 0 ;;
esac
local dkey=${1:-bldenv}
local rfd=$(docker ps | awk '/'${dkey,,}'/{print $NF}')
[ "X" = "X$rfd" ] && echo "[ERR] not find a docker has a <$dkey> in it !!!" && return 1
docker exec -it $rfd bash
}
dkt_clean_dkall() {
local dks=($(docker ps -a | awk 'NR>1{print $1}' | xargs))
[ ${#dks[@]} -ne 0 ] && docker rm $1 ${dks[@]}
}
dkt_clean_niall() {
local dks=($(docker images | awk '$1 ~ /none/{print $3}' | xargs))
[ ${#dks[@]} -ne 0 ] && docker rmi -f ${dks[@]}
}
alias dkt_psa='docker ps -a'
alias dkt_tpl='docker images'
alias dkt_fnd='docker search'
}