docker避坑离线安装alpineLinux,并在alpine容器里安装ssh服务详解_alpine.tar下载
文章目录
- 一、alpineLinux
 - 二、docker离线安装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


