> 技术文档 > docker避坑离线安装alpineLinux,并在alpine容器里安装ssh服务详解_alpine.tar下载

docker避坑离线安装alpineLinux,并在alpine容器里安装ssh服务详解_alpine.tar下载


文章目录

  • 一、alpineLinux
  • 二、docker离线安装alpineLinux
    • 1、下载alpineLinux的docker基础镜像
    • 2、docker导入alpineLinux镜像包
    • 3、创建alpineLinux容器
  • 三、alpine容器里安装ssh服务
    • 1、将apk安装包复制到alpine容器里
    • 2、安装ssh服务相关的apk包
    • 3、配置ssh服务
    • 4、启动ssh服务

一、alpineLinux

Alpine是一个极其轻量级的Linux,通常用作制作Docker镜像
Alpine Linux是由社区开发的Linux发行版,其核心设计目标为提供面向安全应用的轻量化操作系统解决方案。该系统采用musl C标准库替代传统GNU工具链,集成BusyBox工具集实现精简架构,Docker镜像体积可控制在5MB以内。内置PaX内存保护机制和SSP栈破坏防御技术,适用于路由器、防火墙、容器化部署等高安全性场景。自2011年发布首个稳定版以来,持续迭代更新至3.22版本。
官网:https://www.alpinelinux.org/
在这里插入图片描述

二、docker离线安装alpineLinux

某些场景不能连接互联网,就只能离线安装。本文就讲解如何离线安装AlpineLinux

1、下载alpineLinux的docker基础镜像包

可以在官网下载docker基础镜像包
在这里插入图片描述

也可通过我的链接 下载AlpineLinux的docker基础镜像包

2、docker导入alpineLinux镜像包

下载完成后就可以导入了。这里有个坑,就是不能用docker load命令导入,而是要用docker import命令才行。导入成功会有名称为alpine的一个image包。

docker import alpine-minirootfs-3.22.0-x86_64.tar.gz alpine:3.22

在这里插入图片描述

3、创建alpineLinux容器

现在该创建AlpineLinux容器了。我们一般会用docker run -d ......来创建容器,此时就会出现问题,这就是另一个大坑了。
由于alpine镜像包是alpineLinux的基础镜像包,没有端口,所以我就使用如下命令:

docker run -d --name alpine alpine:3.22

在这里插入图片描述
报错了,查资料是需要在加个sh命令:

docker run -d --name alpine alpine:3.22 sh

这次命令成功了,可是用docker ps 命令却看不到alpine容器。使用docker ps -a 能看到alpine容器,却退出了。使用docker start命令也不能启动alpine容器
在这里插入图片描述
怎么办?通过查资料和利用AI,终于找到了解决这个大坑的方案。
首先,需要使用如下命令创建alpine容器,并进入到容器内,

docker run -it --name alpine alpine:3.22 sh

其次,从容器退出后,alpine容器也退出了,使用docker start 就可以启动alpine容器

docker start alpine

哈哈,真的成功了。
在这里插入图片描述

三、alpine容器里安装ssh服务

下面讲解一下在alpineLinux里如何安装软件或服务,以安装ssh服务为例:

1、将apk安装包复制到alpine容器里

使用docker cp命令ssh相关的apk包复制到alpine容器

docker cp openssh-10.0 p1-r7.apk alpine:/rootdocker cp openssh-server-10.0 p1-r7.apk alpine:/rootdocker cp openssh-client-default-10.0 p1-r7.apk alpine:/rootdocker cp openssh sftp-server-10.0 p1-r7.apk alpine:/rootdocker cp openssh-keygen-10.0 p1-r7.apk alpine:/rootdocker cp openssh-client-common-10.0 p1-r7.apk alpine:/rootdocker cp openssh-server-common-10,0 pl-r7.apk alpine:/rootdocker cp 1ibedit-20250104.3.1-r1.apk alpine:/rootdocker cp 1ibncursesw-6,5 p20250503-r0.apk alpine:/rootdocker cp ncurses-terminfo-base-6.5 p20250503-r0.apk alpine:/root

在这里插入图片描述

2、安装ssh服务相关的apk包

alpine容器内执行apk命令进行ssh服务安装

apk add openssh-10.0_p1-r7.apk openssh-client-default-10.0_p1-r7.apk openssh-sftp-server-10.0 p1Ar7.apk openssh-server-10.0 p1-r7.apk openssh-keygen-10.0 p1-r7.apk openssh-client-conmon-10.0 p1-r7.aok openssh-server-common-10.0 p1-r7.apk 1ibedit-20250104.3.1-r1.apk 1ibncursesw-6.5_p20250503-r0. apkncurses-terrinfo-base-6.5 p20250503-r0.apk

在这里插入图片描述

3、配置ssh服务

‌(1)生成主机密钥‌:

ssh-keygen -A #自动生成`/etc/ssh/ssh_host_*密钥文件`

(2). ‌修改配置文件/etc/ssh/sshd_config‌

  • 启用密码登录:PasswordAuthentication yes
  • 允许Root远程登录:PermitRootLogin yes
    (可使用命令echo \'PermitRootLogin yes\' >> /etc/ssh/sshd_config快速修改)‌‌
  • 监听端口(默认22):Port 22

4、启动ssh服务

(1) 单次启动命令‌:

/usr/sbin/sshd#无输出表示启动成功

(2) 服务管理(需安装OpenRC)‌:

rc-service sshd start # 启动rc-update add sshd # 设置开机自启

(3) ‌验证服务状态‌:

ps -ef | grep sshd