shell :二进制安装docker

#!/bin/bash
#设置字体颜色
function RedFont(){
  echo -e "\033[31mError: $1 \033[0m"
}

function GreenFont(){
  echo -e "\033[32mInfo: $1 \033[0m"
}

function YellowFont(){
  echo -e "\033[33mWarning: $1 \033[0m"
}

CURRENT_DIR=`pwd`
FILE_NAME='docker-20.10.9.tgz'

GreenFont "CURRENT_DIR: ${CURRENT_DIR}"
GreenFont "FILE_NAME: ${FILE_NAME}"

if [ ! -f "${CURRENT_DIR}/${FILE_NAME}" ];then
  YellowFont "${CURRENT_DIR}/${FILE_NAME} not found, exit"
  exit 1
fi

GreenFont "创建数据目录和配置文件目录"
mkdir -p /data/docker
ln -s /data/docker /var/lib/
mkdir -p /etc/docker
groupadd docker

GreenFont "解压安装${CURRENT_DIR}/${FILE_NAME}"
cd ${CURRENT_DIR}
tar -zxvf ${CURRENT_DIR}/${FILE_NAME}
chown -R root.root ${CURRENT_DIR}/docker
cp ${CURRENT_DIR}/docker/* /usr/bin/
docker -v || { RedFont "docker安装失败";exit 1;}

GreenFont "生成docker服务文件:/etc/systemd/system/docker.service"
## 生成docker服务文件:/etc/systemd/system/docker.service
cat > /etc/systemd/system/docker.service << EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target docker.socket firewalld.service containerd.service time-set.target
Wants=network-online.target containerd.service
Requires=docker.socket

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP \$MAINPID
TimeoutStartSec=0
RestartSec=2
Restart=always

# Note that StartLimit* options were moved from "Service" to "Unit" in systemd 229.
# Both the old, and new location are accepted by systemd 229 and up, so using the old location
# to make them work for either version of systemd.
StartLimitBurst=3

# Note that StartLimitInterval was renamed to StartLimitIntervalSec in systemd 230.
# Both the old, and new name are accepted by systemd 230 and up, so using the old name to make
# this option work for either version of systemd.
StartLimitInterval=60s

# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNPROC=infinity
LimitCORE=infinity

# Comment TasksMax if your systemd version does not support it.
# Only systemd 226 and above support this option.
TasksMax=infinity

# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes

# kill only the docker process, not all processes in the cgroup
KillMode=process
OOMScoreAdjust=-500

[Install]
WantedBy=multi-user.target
EOF

GreenFont "生成containerd服务文件:/etc/systemd/system/containerd.service"
## 生成containerd服务文件:/etc/systemd/system/containerd.service

cat > /etc/systemd/system/containerd.service << EOF
# Copyright The containerd Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target local-fs.target

[Service]
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/bin/containerd

Type=notify
Delegate=yes
KillMode=process
Restart=always
RestartSec=5
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNPROC=infinity
LimitCORE=infinity
LimitNOFILE=infinity
# Comment TasksMax if your systemd version does not supports it.
# Only systemd 226 and above support this version.
TasksMax=infinity
OOMScoreAdjust=-999

[Install]
WantedBy=multi-user.target

EOF

GreenFont "生成socket服务文件:/etc/systemd/system/docker.socket"
## 生成socket服务文件:/etc/systemd/system/docker.socket

cat > /etc/systemd/system/docker.socket << EOF

[Unit]
Description=Docker Socket for the API

[Socket]
# If /var/run is not implemented as a symlink to /run, you may need to
# specify ListenStream=/var/run/docker.sock instead.
ListenStream=/run/docker.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker

[Install]
WantedBy=sockets.target
EOF


GreenFont "生成docker配置文件:/etc/docker/daemon.json"
## 生成docker配置文件:/etc/docker/daemon.json

cat > /etc/docker/daemon.json << EOF
{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "http://hub-mirror.c.163.com"
  ],
  "insecure-registries": [
    "test.hub"
  ],
  "max-concurrent-downloads": 10,
  "log-driver": "json-file",
  "log-level": "warn",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  },
  "data-root": "/var/lib/docker"
}
EOF


GreenFont "重新加载服务文件"
systemctl daemon-reload

GreenFont "启动docker.socket"
systemctl enable docker.socket
systemctl start docker.socket
systemctl status docker.socket

GreenFont "启动containerd.service"
systemctl enable containerd.service
systemctl start containerd.service
systemctl status containerd.service

GreenFont "启动docker.service"
systemctl enable docker.service
systemctl start docker.service
systemctl status docker.service

GreenFont "执行完毕"



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值