first commit
This commit is contained in:
79
service/docker/install-docker
Executable file
79
service/docker/install-docker
Executable file
@@ -0,0 +1,79 @@
|
||||
#!/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');
|
||||
Reference in New Issue
Block a user