前言

这两天火爆的甲骨文 ARM 实例经过折腾基本把环境配置完毕,但是最后发现 docker compose 原生无法支持 ARM ,查了一圈资料发现都是需要自编译,而且相关文献都是国外针对树莓派的一些案例.最后还是在国外知名的linuxserver.io上找到了方法.整理下水一片中文教程.

本文为 Stille 原创文章.经实践,测试,整理发布.如需转载请联系作者获得授权,并注明转载地址.

compose 官方已经发布 ARM 版本,不需要自行编译了.

官方多平台安装命令

curl -L https://github.com/docker/compose/releases/download/v2.5.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

国内环境镜像

curl -L https://ghproxy.com/https://github.com/docker/compose/releases/download/v2.5.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

本文已过期

原理

目前的 ARM 版本方案的 docker compose 并不是编译获得执行文件,而是使用官方的仓库进行 docker 容器化编译成镜像,然后在需要docker-compose up -d等操作的目录中来启动容器代为编排启动.由于编译教程都很古老,博主尝试了几次都失败,但是linuxserver.io已经提供了编译好的镜像可以直接使用.

教程

本文教程基于 Oracle Linux 系统

镜像使用

使用非常简单,在需要docker-compose up -d命令的目录中执行以下命令即可:

docker run --rm \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v "$PWD:$PWD" \
  -w="$PWD" \
  linuxserver/docker-compose \
  up

其中最后一行的up是命令,根据需求自行修改,例如up -d,down,restart等.本容器命令也自带--rm参数,执行完毕自动删除compose 容器,并不会给系统带了无用的多余容器.

推荐脚本模拟镜像使用

官方推荐用更加方便的方式,通过脚本文件修改为/usr/local/bin/docker-compose,就可以像X86架构一样,直接执行docker-compose up -d等操作了.不过原理上还是使用上述的容器来执行.这样使用起来更加方便和熟悉.执行以下两行命令即可:

sudo curl -L --fail https://raw.githubusercontent.com/linuxserver/docker-docker-compose/master/run.sh -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Tips

博主平时使用docker-compose会传递一些宿主机的系统环境变量,例如$HOSTNAME到容器中,在常规X86的系统下 docker-compose 本身是在宿主机运行,所以没什么问题.而现在ARM的使用方式是需要利用容器来帮忙运行docker-compose,所需的环境变量自然是变成了这个中间帮忙的容器的变量.目前只能通过修改/usr/local/bin/docker-compose脚本来实现.

例如,将/usr/local/bin/docker-compose最后一行的exec docker run --rm .....命令中追加为exec docker run --rm --hostname=$HOSTNAME .....,这样就可以将宿主机的主机名带入至docker-compose 容器,在带入进需要启动的容器中.

结语

后续更多关于甲骨文的一些使用心得会持续更新,欢迎收藏本站或订阅RSS源.
甲骨文云 Oracle Cloud 免费 ARM 实例关于引导卷扩容 yum docker 等相关解决方案

本文为 Stille 原创文章.经实践,测试,整理发布.如需转载请联系作者获得授权,并注明转载地址.

本文链接 https://www.ioiox.com/archives/135.html

晚高峰稳定 4K 的 IPLC 机场 解锁各流媒体 支持 ChatGPT. 晚高峰稳定 4K 的 IPLC 机场 解锁各流媒体 支持 ChatGPT. RedteaGO - 最划算的大陆漫游 eSim 流量卡,原生境外 IP,注册就送 3 刀。
RedteaGO - 最划算的大陆漫游 eSim 流量卡,原生境外 IP,注册就送 3 刀。
如果喜欢我的文章,觉得对你有帮助,请随意赞赏!