#!/bin/bash#設置字體顏色functionRedFont(){echo-e"\033[31mError: $1\033[0m"}functionGreenFont(){echo-e"\033[32mInfo: $1\033[0m"}functionYellowFont(){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}"];thenYellowFont "${CURRENT_DIR}/${FILE_NAME} not found, exit"exit1fiGreenFont "創建數據目錄和配置文件目錄"mkdir-p /data/docker
ln-s /data/docker /var/lib/
mkdir-p /etc/docker
groupadddockerGreenFont "解壓安裝${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安裝失敗";exit1;}GreenFont "生成docker服務文件:/etc/systemd/system/docker.service"## 生成docker服務文件:/etc/systemd/system/docker.servicecat> /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
EOFGreenFont "生成containerd服務文件:/etc/systemd/system/containerd.service"## 生成containerd服務文件:/etc/systemd/system/containerd.servicecat> /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/containerdType=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.targetEOFGreenFont "生成socket服務文件:/etc/systemd/system/docker.socket"## 生成socket服務文件:/etc/systemd/system/docker.socketcat> /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
EOFGreenFont "生成docker配置文件:/etc/docker/daemon.json"## 生成docker配置文件:/etc/docker/daemon.jsoncat> /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"
}
EOFGreenFont "重新加載服務文件"
systemctl daemon-reloadGreenFont "啟動docker.socket"
systemctl enable docker.socket
systemctl start docker.socket
systemctl status docker.socketGreenFont "啟動containerd.service"
systemctl enable containerd.service
systemctl start containerd.service
systemctl status containerd.serviceGreenFont "啟動docker.service"
systemctl enable docker.service
systemctl start docker.service
systemctl status docker.serviceGreenFont "執行完畢"
測試類
package 練習.商品入庫系統;import java.util.ArrayList;
import java.util.Scanner;
public class Test {public static final int Enrool 1;public static final int Search 2;public static final int Delect 3;public static final int Exit 4;public static…