Alpine介绍
| Alpine 操作系统是一个面向安全的轻型 Linux 发行版。它不同于通常 Linux 发行版,Alpine 采用了 musl libc 和 busybox 以减小系统的体积和运行时资源消耗,但功能上比 busybox 又完善的多。在保持瘦身的同时,Alpine 还提供了自己的包管理工具 apk,可以通过 https://pkgs.alpinelinux.org/packages 网站上查询包信息,也可以直接通过 apk 命令直接查询和安装各种软件。 |
| |
| Alpine 由非商业组织维护的,支持广泛场景的 Linux发行版,特别为资深/重度Linux用户而优化,关注安全,性能和资源效能。 |
| Alpine 镜像可适用于更多常用场景,并且是一个优秀的可以适用于生产的基础系统/环境。 |
| |
| Alpine Docker 镜像也继承了 Alpine Linux 发行版的这些优势。相比于其他 Docker 镜像,它的容量非常小,仅仅只有 5 MB 左右(对比 Ubuntu 系列镜像接近 200 MB),且拥有非常友好的包管理机制。官方镜像来自 docker-alpine 项目。 |
| |
| Alpine 中软件安装包的名字可能会与其他发行版有所不同,可在 https://pkgs.alpinelinux.org/packages 网站搜索并确定安装包名称。如果需要的安装包不在主索引内,但是在测试或社区索引中。可按照以下方法使用这些安装包。 |
| $ echo "http://dl-4.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories |
| $ apk --update add --no-cache <package> |
编写Dockerfile
| [root@node2 ~]# vim Dockerfile |
| FROM alpine:3.13.6 |
| |
| RUN set -x; \ |
| echo "http://mirrors.aliyun.com/alpine/latest-stable/main/" > /etc/apk/repositories && \ |
| echo "http://mirrors.aliyun.com/alpine/latest-stable/community/" >> /etc/apk/repositories && \ |
| apk upgrade && \ |
| apk add --no-cache ca-certificates && \ |
| apk add --no-cache unzip curl bash bash-doc bash-completion bash wget vim net-tools && \ |
| rm -rf /tmp/* /var/cache/apk/* |
| |
| WORKDIR / |
| |
| ADD jdk-8u301-linux-x64.tar.gz apache-tomcat-9.0.53.tar.gz / |
| |
| COPY glibc-2.32-r0.apk glibc-bin-2.32-r0.apk glibc-dev-2.32-r0.apk glibc-i18n-2.32-r0.apk / |
| COPY sgerrand.rsa.pub /etc/apk/keys/sgerrand.rsa.pub |
| |
| RUN /bin/bash && \ |
| apk add glibc-2.32-r0.apk glibc-bin-2.32-r0.apk glibc-dev-2.32-r0.apk glibc-i18n-2.32-r0.apk && \ |
| rm -rf *.apk /var/cache/apk/* && \ |
| mv /apache-tomcat-9.0.53 /tomcat9 && \ |
| rm -rf /tomcat9/webapps/{docs,examples,host-manager,manager} && \ |
| # install JRE |
| apk add --no-cache openjdk8-jre-base && \ |
| rm -rf /var/cache/apk/* |
| |
| COPY Shanghai /etc/localtime |
| |
| ENV JAVA_HOME=/jdk1.8.0_301 |
| ENV CLASSPATH=JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar |
| ENV PATH=$PATH:.JAVA_HOME/bin:$PATH |
| |
| EXPOSE 8080 |
| |
| CMD ["/tomcat9/bin/catalina.sh","run"] |
| |

构建镜像
| [root@node2 ~]# docker build -t alpine:v1 . |
创建容器
该步可自定义添加其他参数
| [root@node2 ~]# docker run -itd --name tomcat1 -p 8080:8080 alpine:v1 |
Alpine包管理
| Alpine使用apk进行包管理,下面介绍常用命令 |
| |
| 1.apk update |
| $ apk update |
| |
| 2.apk search |
| $ apk search |
| $ apk search -v |
| $ apk search -v 'acf*' |
| $ apk search -v -d 'docker' |
| |
| 3.apk add |
| $ apk add openssh |
| $ apk add openssh openntp vim |
| $ apk add --no-cache mysql-client |
| |
| 4.apk info |
| $ apk info |
| $ apk info -a zlib |
| $ apk info --who-owns /sbin/lbu |
| |
| 5.apk upgrade |
| $ apk upgrade |
| $ apk upgrade openssh |
| $ apk upgrade openssh openntp vim |
| $ apk add --upgrade busybox |
| |
| 6.apk del |
| $ apk del openssh |
Alpine常用命令
| [root@node2 ~]# docker exec -it b013b /bin/sh |
| / # apk search --no-cache openssh |
| |
| |
| |
Alpine安装常用服务
| # 配置sshd |
| / # apk add --no-cache openssh-server openssh-client |
| / # sed -i "s/#PermitRootLogin.*/PermitRootLogin yes/g" /etc/ssh/sshd_config && \ |
| / # ssh-keygen -t rsa -P "" -f /etc/ssh/ssh_host_rsa_key && \ |
| / # ssh-keygen -t ecdsa -P "" -f /etc/ssh/ssh_host_ecdsa_key && \ |
| / # ssh-keygen -t ed25519 -P "" -f /etc/ssh/ssh_host_ed25519_key && \ |
| / # echo "root:admin" | chpasswd # root用户的密码改为admin |
| / # /usr/sbin/sshd -D # 指定此选项后sshd不会分离也不会成为守护进程 |
| / # ip a |
| 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000 |
| link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 |
| inet 127.0.0.1/8 scope host lo |
| valid_lft forever preferred_lft forever |
| 126: eth0@if127: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP |
| link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff |
| inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0 |
| valid_lft forever preferred_lft forever |
| |
| / # exit |
| |
| # 本机测试ssh连接 |
| [root@node2 ~]# ssh root@172.17.0.2 |
| root@172.17.0.2's password: # 密码是admin |
| Welcome to Alpine! |
| |
| The Alpine Wiki contains a large amount of how-to guides and general |
| information about administrating Alpine systems. |
| See <http://wiki.alpinelinux.org/>. |
| |
| You can setup the system with the command: setup-alpine |
| |
| You may change this message by editing /etc/motd. |
| |
| b013b0ebcb2f:~# cat /etc/issue |
| Welcome to Alpine Linux 3.13 |
| Kernel \r on an \m (\l) |
FAQ
| 提示源没有这个openssh的包 |
| |
| 解决方式: |
| 在dockerfile中改为国内的源 |
| http://mirrors.aliyun.com/alpine/latest-stable/main/ |
| http://mirrors.aliyun.com/alpine/latest-stable/community/ |
| |
| 创建容器文件修改 |
| [root@docker43 ~]# docker run -it alpine |
| / # vi /etc/apk/repositories |
| http://mirrors.aliyun.com/alpine/latest-stable/main/ |
| http://mirrors.aliyun.com/alpine/latest-stable/community/ |
| |
| #http://dl-cdn.alpinelinux.org/alpine/v3.8/main |
| #http://dl-cdn.alpinelinux.org/alpine/v3.8/community |
| |
| # 注释或者删除原来的默认源,添加阿里云的源,然后执行apk update,在进行安装就OK了 |
| |
| |
| 2、ssh 启动问题 |
| / # /etc/init.d/sshd start |
| /bin/sh: /etc/init.d/sshd: not found |
| |
| 这样的方式不能启动,需要安装一个alpine的管理工具 |
| apk add --no-cache openrc |
| / # /etc/init.d/sshd start |
| * WARNING: sshd is already starting |
| 所以使用 /usr/sbin/sshd -D 方式启动。但是又出现如下错误 |
| / # /usr/sbin/sshd -D |
| Could not load host key: /etc/ssh/ssh_host_rsa_key |
| Could not load host key: /etc/ssh/ssh_host_ecdsa_key |
| Could not load host key: /etc/ssh/ssh_host_ed25519_key |
| sshd: no hostkeys available -- exiting. |
| 解决方式: |
| ssh-keygen -t rsa -P "" -f /etc/ssh/ssh_host_rsa_key |
| ssh-keygen -t ecdsa -P "" -f /etc/ssh/ssh_host_ecdsa_key |
| ssh-keygen -t ed25519 -P "" -f /etc/ssh/ssh_host_ed25519_key |
| |
| 再次启动 |
| / # /usr/sbin/sshd -D |
| |
| 启动成功 |
| |
| |
| 3、创建容器后的网络问题 |
| [root@docker43 opt]# docker run -it alpine |
| WARNING: IPv4 forwarding is disabled. Networking will not work. |
| |
| 解决方式: |
| [root@docker43 ~]# vim /etc/sysctl.conf |
| net.ipv4.ip_forward=1 # 添加这一行 |
| |
| [root@docker43 ~]# docker run -it alpine |
| / # |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
2019-09-28 关于Server2008 R2日志的查看