-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript_docker.sh
More file actions
95 lines (81 loc) · 2.85 KB
/
script_docker.sh
File metadata and controls
95 lines (81 loc) · 2.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# ---- Functions ----
install_docker() {
logk "i" "Installing docker..."
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
sudo apt-get install lsb-release
# Add the repository to Apt sources:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl enable --now docker
sudo systemctl status docker
logk "i" "Docker installed"
}
advertise_leader() {
logk "i" "Advertising leader..."
read -p "Enter the private IP address to advertise: " private_ip
sudo docker swarm init --advertise-addr $private_ip
logk "i" "Leader advertised"
}
promote_node_to_manager() {
logk "i" "Promoting node to manager run this command on leader node"
read -p "Enter the hostname to promote: " hostname
sudo docker node promote $hostname
logk "i" "Node promoted to manager"
}
docker_login_ghcr() {
logk "i" "Logging in to ghcr..."
read -p "Enter the username: " username
read -s -p "Enter the password: " password; echo
sudo docker login ghcr.io -u $username -p $password
logk "i" "Logged in to ghcr"
}
get_join_token_worker(){
logk "i" "Getting join token..."
sudo docker swarm join-token worker
logk "i" "Join token got"
}
get_join_token_manager(){
logk "i" "Getting join token..."
sudo docker swarm join-token manager
logk "i" "Join token got"
}
docker_logout_ghcr() {
logk "i" "Logging out from ghcr..."
sudo docker logout ghcr.io
logk "i" "Logged out from ghcr"
}
# ---- Options ----
script_docker() {
logk "i" "Starting docker script..."
logk "i" "Select the option for docker"
loge "1. Install docker"
loge "2. Advertise leader"
loge "3. Promote node to manager"
loge "4. Login to ghcr"
loge "5. Logout from ghcr"
loge "6. Get join token worker"
loge "7. Get join token manager"
read -p "Enter your choice: " choice
case $choice in
1) install_docker ;;
2) advertise_leader ;;
3) promote_node_to_manager ;;
4) docker_login_ghcr ;;
5) docker_logout_ghcr ;;
6) get_join_token_worker ;;
7) get_join_token_manager ;;
*) logk "e" "Invalid choice" ;;
esac
}
# --- Basic Commands ---
# docker node ls
# https://www.youtube.com/watch?v=nmas_zbcMeU&t=88s
# https://www.youtube.com/watch?v=RgZyX-e6W9E
# https://www.youtube.com/watch?v=_YsPt7dIvqU