docker daemon

This commit is contained in:
Darren 2023-10-06 16:45:57 +08:00 committed by GitHub
parent 2f3595b5ce
commit 87affee25d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 107 additions and 46 deletions

View file

@ -0,0 +1,4 @@
{
"menu": null,
"tools": null
}

7
docker/daemon.json Normal file
View file

@ -0,0 +1,7 @@
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "5"
}
}

View file

@ -158,9 +158,10 @@ check_ports() {
local ports=("$@")
echo "Stop Websoft9 Proxy and Cockpit service for reserve ports..."
sudo docker stop websoft9-proxy || echo "docker stop websoft9-proxy failed "
sudo systemctl stop cockpit || echo "systemctl stop cockpit failed"
sudo systemctl stop cockpit.socket || echo "systemctl stop cockpit.socket failed"
sudo docker stop websoft9-proxy 2>/dev/null || echo "docker stop websoft9-proxy not need "
sudo systemctl stop cockpit 2>/dev/null || echo "systemctl stop cockpit not need"
sudo systemctl stop cockpit.socket 2>/dev/null || echo "systemctl stop cockpit.socket not need"
for port in "${ports[@]}"; do
if netstat -tuln | grep ":$port " >/dev/null; then
@ -172,9 +173,51 @@ check_ports() {
echo "All ports are available"
}
merge_daemon_files() {
remote_url="$1"
local_file="$2"
python3 - <<END
import json
import requests
# 获取远程 daemon.json 文件的内容
response = requests.get("$remote_url")
remote_daemon = response.json()
# 读取本地的 daemon.json 文件
with open("$local_file", 'r') as f:
local_daemon = json.load(f)
# 合并本地和远程的 daemon.json 文件内容
local_daemon.update(remote_daemon)
# 将合并后的内容写入到本地的 daemon.json 文件中
with open("$local_file", 'w') as f:
json.dump(local_daemon, f, indent=4)
END
}
set_docker(){
echo "Set Docker for Websoft9 backend service..."
if [ -f "${install_path}/docker/daemon.json" ]; then
merge_daemon_files "${install_path}/docker/daemon.json" "/etc/docker/daemon.json"
else
merge_daemon_files "${source_github_pages}/docker/daemon.json" "/etc/docker/daemon.json"
fi
if ! docker network inspect websoft9 > /dev/null 2>&1; then
sudo docker network create websoft9
sudo systemctl restart docker
fi
}
install_backends() {
echo_prefix_backends=$'\n[Backend] - '
echo "$echo_prefix_backends Install backend docker services"
set_docker
cd "$install_path/docker"
if [ $? -ne 0 ]; then

View file

@ -56,7 +56,7 @@ echo_prefix_cockpit=$'\n[Cockpit] - '
cockpit_packages="cockpit cockpit-ws cockpit-bridge cockpit-system cockpit-pcp cockpit-storaged cockpit-networkmanager cockpit-session-recording cockpit-doc cockpit-packagekit cockpit-sosreport"
menu_overrides_github_page_url="https://websoft9.github.io/websoft9/cockpit/menu_override"
cockpit_config_github_page_url="https://websoft9.github.io/websoft9/cockpit/cockpit.conf"
cockpit_menu_overrides=(networkmanager.override.json shell.override.json storaged.override.json systemd.override.json users.override.json apps.override.json machines.override.json selinux.override.json subscriptions.override.json kdump.override.json updated.override.json playground.override.json packagekit.override.json session-recording.override.json)
cockpit_menu_overrides=()
# export OS release environments
if [ -f /etc/os-release ]; then
. /etc/os-release
@ -207,7 +207,32 @@ Set_Cockpit(){
}
get_github_files() {
python3 - <<EOF
import requests
import json
url = "https://api.github.com/repos/Websoft9/websoft9/contents/cockpit/menu_override?ref=main"
headers = {
"Accept": "application/vnd.github.v3+json"
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
files = json.loads(response.text)
for file in files:
print(file['name'])
else:
print(f"Error: {response.status_code}")
EOF
}
Download_Menu_Override(){
cockpit_menu_overrides=($(get_github_files))
for file in "${cockpit_menu_overrides[@]}"
do

View file

@ -30,14 +30,20 @@ docker_packages="docker-ce docker-ce-cli containerd.io docker-buildx-plugin dock
echo_prefix_docker=$'\n[Docker] - '
# Function to check if apt is locked
is_apt_locked(){
if [[ -f /var/lib/dpkg/lock-frontend || -f /var/lib/apt/lists/lock ]]; then
return 0 # Apt is locked
else
return 1 # Apt is not locked
fi
Wait_apt() {
local lock_files=("/var/lib/dpkg/lock" "/var/lib/apt/lists/lock")
for lock_file in "${lock_files[@]}"; do
while fuser "${lock_file}" >/dev/null 2>&1 ; do
echo "${lock_file} is locked by another process. Waiting..."
sleep 5
done
done
echo "APT locks are not held by any processes. You can proceed."
}
docker_exist() {
# 检查 `docker` 命令是否存在
if ! command -v docker &> /dev/null; then
@ -77,12 +83,9 @@ Install_Docker(){
# For Ubuntu, Debian, or Raspbian
if type apt >/dev/null 2>&1; then
Wait_apt
apt update
# Wait for apt to be unlocked
while is_apt_locked; do
echo "Waiting for apt to be unlocked..."
sleep 5
done
curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh
fi
}
@ -112,39 +115,18 @@ else
fi
}
Set_Firewall(){
echo "$echo_prefix_cockpit Set Firewalld for Docker"
if command -v firewall-cmd &> /dev/null; then
if ! systemctl is-active --quiet firewalld; then
sudo systemctl start firewalld
sudo firewall-cmd --zone=trusted --remove-interface=docker0 --permanent
sudo firewall-cmd --reload
sudo systemctl stop firewalld
else
sudo firewall-cmd --zone=trusted --remove-interface=docker0 --permanent
sudo firewall-cmd --reload
fi
fi
}
Set_Docker(){
Start_Docker(){
# should have Docker server and Docker cli
if docker_exist; then
echo "$echo_prefix_docker Starting to Set docker..."
echo "$echo_prefix_docker Starting Docker"
sudo systemctl enable docker
sudo systemctl restart docker
if ! docker network inspect websoft9 > /dev/null 2>&1; then
sudo docker network create websoft9
sudo systemctl restart docker
fi
else
echo "Docker settings failed, exit..."
echo "Docker start failed, exit..."
exit
fi
}
Upgrade_Docker
Set_Firewall
Set_Docker
Start_Docker

View file

@ -2,6 +2,7 @@
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
# This script is on development, can not use now
# to do

View file

@ -27,8 +27,6 @@ systemd_path="/opt/websoft9/systemd"
cockpit_plugin_path="/usr/share/cockpit"
cockpit_packages="cockpit cockpit-ws cockpit-bridge cockpit-system cockpit-pcp cockpit-storaged cockpit-networkmanager cockpit-session-recording cockpit-doc cockpit-packagekit cockpit-sosreport"
echo -e "\n---Remove Websoft9 backend service containers---"
sudo docker compose -p websoft9 down -v
@ -39,15 +37,16 @@ rm -rf /lib/systemd/system/websoft9.service
handle_cockpit() {
remove_cockpit() {
echo -e "\n---Remove Cockpit---"
sudo systemctl stop cockpit.socket cockpit
for package in $cockpit_packages; do
sudo pkcon remove $package -y || true
done
sudo rm -rf /etc/cockpit/*
}
handle_files() {
remove_files() {
echo -e "\n---Remove files---"
sudo rm -rf $install_path/* $systemd_path/* $cockpit_plugin_path/*
}
@ -56,11 +55,11 @@ for arg in "$@"
do
case $arg in
--cockpit)
handle_cockpit
remove_cockpit
shift
;;
--files)
handle_files
remove_files
shift
;;
*)