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