Files
scripts/service/docker/install-docker
2026-01-12 01:03:54 +04:00

80 lines
2.5 KiB
Perl
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/perl
use strict;
use warnings;
use autodie;
print "Установка Docker...\n";
# Функция для выполнения системных команд
sub run_cmd {
my $cmd = shift;
print "Выполняется: $cmd\n";
system($cmd) == 0 or die "Ошибка выполнения команды: $cmd\n";
}
# Функция для получения версии Ubuntu
sub get_ubuntu_codename {
my $codename;
# Читаем файл /etc/os-release
if (open my $fh, '<', '/etc/os-release') {
while (my $line = <$fh>) {
if ($line =~ /^UBUNTU_CODENAME=([^\s]+)/) {
$codename = $1;
last;
} elsif ($line =~ /^VERSION_CODENAME=([^\s]+)/ && !defined $codename) {
$codename = $1;
}
}
close $fh;
}
die "Не удалось определить версию Ubuntu\n" unless defined $codename;
return $codename;
}
# Обновление пакетов и установка зависимостей
run_cmd('sudo apt update');
run_cmd('sudo apt install -y ca-certificates curl');
# Создание директории для ключей
run_cmd('sudo install -m 0755 -d /etc/apt/keyrings');
# Загрузка GPG ключа Docker
run_cmd('sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc');
run_cmd('sudo chmod a+r /etc/apt/keyrings/docker.asc');
# Добавление репозитория Docker
my $ubuntu_codename = get_ubuntu_codename();
print "Определена версия Ubuntu: $ubuntu_codename\n";
my $sources_content = <<"EOF";
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $ubuntu_codename
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF
# Записываем содержимое в файл
open my $fh, '>', '/tmp/docker.sources';
print $fh $sources_content;
close $fh;
run_cmd('sudo cp /tmp/docker.sources /etc/apt/sources.list.d/docker.sources');
run_cmd('sudo rm -f /tmp/docker.sources');
# Обновление списка пакетов
run_cmd('sudo apt update');
# Установка Docker
run_cmd('sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin');
print "\nУстановка Docker завершена успешно!\n";
print "Проверка версии Docker:\n";
system('sudo docker --version');
print "\nПроверка работы Docker:\n";
system('sudo docker run hello-world');