Skip to content

Instantly share code, notes, and snippets.

@quenbyako
Last active April 27, 2020 23:11
Show Gist options
  • Save quenbyako/e9a4bb1e39a45ade25c9220b8f607bd2 to your computer and use it in GitHub Desktop.
Save quenbyako/e9a4bb1e39a45ade25c9220b8f607bd2 to your computer and use it in GitHub Desktop.
скрипт установки докера и портейнера
#!/bin/bash
echo -e "made with love, by"
echo -e "\e[35m _/ _/ _/_/_/_/ _/ _/_/ _/\e[39m"
echo -e "\e[35m _/ _/ _/ _/ _/ _/ _/ \e[39m"
echo -e "\e[35m _/ _/_/_/ _/ _/_/_/_/ _/ \e[39m"
echo -e "\e[35m _/ _/ _/ _/ _/ _/ _/ _/ \e[39m"
echo -e "\e[35m_/ _/ _/_/_/_/ _/_/_/_/ _/ _/ _/_/ \e[39m"
if [ $USER != "root" ]
then
echo -e "\e[31m! Скрипт необходимо запустить от рута!\e[39m Добавь 'sudo' перед 'bash'"
exit 1
fi
stdout=$(mktemp /tmp/dockerinst_stdout.XXXXXX)
stderr=$(mktemp /tmp/dockerinst_stderr.XXXXXX)
echo -n "удаляем старую версию докера, если она существует... "
apt remove -y docker docker-engine docker.io containerd runc > $stdout 2> $stderr
exitcode=$?
if [ $exitcode != 0 ] && [ $exitcode != 100 ]
then
echo
echo -e "STDOUT:"
cat $stdout
echo -e "STDERR:"
cat $stderr
echo -e "EXITCODE:" $exitcode
echo -e "\e[31m! Удаление произошло неуспешно!\e[39m Отправь в чатик это сообщение об ошибке, мы все починим! https://t.me/xelaj_developers"
exit 1
fi
echo -e "\e[32m✅\e[39m"
echo -n "Обновляем репозитории... "
apt update > $stdout 2> $stderr
exitcode=$?
if [ $exitcode != 0 ]
then
echo
echo -e "STDOUT:"
cat $stdout
echo -e "STDERR:"
cat $stderr
echo -e "EXITCODE:" $exitcode
echo -e "\e[31m! Обновление произошло неуспешно!\e[39m Отправь в чатик это сообщение об ошибке, мы все починим! https://t.me/xelaj_developers"
exit 1
fi
echo -e "\e[32m✅\e[39m"
echo -n "Устанавливаем докерские зависимости... "
apt install -y \
apt-transport-https \
ca-certificates \
gnupg-agent \
software-properties-common > $stdout 2> $stderr
exitcode=$?
if [ $exitcode != 0 ]
then
echo
echo -e "STDOUT:"
cat $stdout
echo -e "STDERR:"
cat $stderr
echo -e "EXITCODE:" $exitcode
echo -e "\e[31m! Установка зависимостей произошла неуспешно!\e[39m Отправь в чатик это сообщение об ошибке, мы все починим! https://t.me/xelaj_developers"
exit 1
fi
echo -e "\e[32m✅\e[39m"
echo -n "Добавляем публичный ключ в базу для шифрования... "
curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add - > $stdout 2> $stderr
exitcode=$?
if [ $exitcode != 0 ]
then
echo
echo -e "STDOUT:"
cat $stdout
echo -e "STDERR:"
cat $stderr
echo -e "EXITCODE:" $exitcode
echo -e "\e[31m! Загрузка и добавление ключа произошла неуспешно!\e[39m Отправь в чатик это сообщение об ошибке, мы все починим! https://t.me/xelaj_developers"
exit 1
fi
echo -e "\e[32m✅\e[39m"
export DISTRO_NAME=$(lsb_release -si | tr '[:upper:]' '[:lower:]')
echo -n "Добавляем официальный репозиторий докера... "
add-apt-repository "deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/$DISTRO_NAME $(lsb_release -cs) stable" > $stdout 2> $stderr
exitcode=$?
if [ $exitcode != 0 ]
then
echo
echo -e "STDOUT:"
cat $stdout
echo -e "STDERR:"
cat $stderr
echo -e "EXITCODE:" $exitcode
echo -e "\e[31m! добавление репозитория произошло неуспешно!\e[39m Отправь в чатик это сообщение об ошибке, мы все починим! https://t.me/xelaj_developers"
exit 1
fi
echo -e "\e[32m✅\e[39m"
echo -n "Обновляем репозиторий докера... "
apt update > $stdout 2> $stderr
exitcode=$?
if [ $exitcode != 0 ]
then
echo
echo -e "STDOUT:"
cat $stdout
echo -e "STDERR:"
cat $stderr
echo -e "EXITCODE:" $exitcode
echo -e "\e[31m! Обновление произошло неуспешно!\e[39m Отправь в чатик это сообщение об ошибке, мы все починим! https://t.me/xelaj_developers"
exit 1
fi
echo -e "\e[32m✅\e[39m"
echo -n "Осталось поставить сам докер (ставиться может долго, не переживай)... "
apt install -y docker-ce docker-ce-cli containerd.io > $stdout 2> $stderr
exitcode=$?
if [ $exitcode != 0 ]
then
echo
echo -e "STDOUT:"
cat $stdout
echo -e "STDERR:"
cat $stderr
echo -e "EXITCODE:" $exitcode
echo -e "\e[31m! Установка докера произошла неуспешно!\e[39m Отправь в чатик это сообщение об ошибке, мы все починим! https://t.me/xelaj_developers"
exit 1
fi
echo -e "\e[32m✅\e[39m"
echo -n "настроить его... "
docker volume create portainer_data > $stdout 2> $stderr
exitcode=$?
if [ $exitcode != 0 ]
then
echo
echo -e "STDOUT:"
cat $stdout
echo -e "STDERR:"
cat $stderr
echo -e "EXITCODE:" $exitcode
echo -e "\e[31m! Создание базы для графического интерфейса произошло неуспешно!\e[39m Отправь в чатик это сообщение об ошибке, мы все починим! https://t.me/xelaj_developers"
exit 1
fi
echo -e "\e[32m✅\e[39m"
echo -n "Запустить... "
service docker start > $stdout 2> $stderr
exitcode=$?
if [ $exitcode != 0 ]
then
echo
echo -e "STDOUT:"
cat $stdout
echo -e "STDERR:"
cat $stderr
echo -e "EXITCODE:" $exitcode
echo -e "\e[31m! запуск докера через systemd!\e[39m Отправь в чатик это сообщение об ошибке, мы все починим! https://t.me/xelaj_developers"
exit 1
fi
echo -e "\e[32m✅\e[39m"
echo -n "И установить portainer... "
docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer > $stdout 2> $stderr
exitcode=$?
if [ $exitcode != 0 ]
then
echo -e "EXITCODE:" $exitcode
echo -e "\e[31m! загрузка и установка portainer произошла неуспешно!\e[39m Отправь в чатик это сообщение об ошибке, мы все починим! https://t.me/xelaj_developers"
exit 1
fi
echo -e "\e[32m✅\e[39m"
echo -e "\e[34m ## . \e[39m"
echo -e "\e[34m ## ## ## == \e[39m"
echo -e "\e[34m ## ## ## ## === \e[39m"
echo -e "\e[34m /""""""""""""""""\\\___/ === \e[39m"
echo -e "\e[34m ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~ \e[39m"
echo -e "\e[34m \\\______ o __/ \e[39m"
echo -e "\e[34m \\\ \\\ __/ \e[39m"
echo -e "\e[34m \\\____\\\______/ \e[39m"
echo
echo
echo -e "Кайф! теперь открывай сам интерфейс, и мы продолжим настройку нашего докера! Попробуй любой из нижеперечисленных адресов,"
echo -e "потому что нам то откуда знать, какой из них правильный? Но один из них точно заработает"
echo -e "http://127.0.0.1:9000 (если установил прямо на этот компьютер)"
echo -e "http://`hostname -I | awk '{print $1}'`:9000 (если установил на raspberry и ты в ЛОКАЛЬНОЙ сети, например в той же wifi сети И \e[31mБЕЗ VPN!\e[39m)"
echo -e "http://`curl ifconfig.me`:9000 (если установил на какой-нибудь хостинг)"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment