环境信息
处理器架构:鲲鹏920 aarch64
操作系统版本:Kylin Linux Advanced Server V10 (Lance)
docker 版本:26.1.3
docker-compose 版本:docker-compose-linux-aarch64 v2.27.0
容器镜像
构建特殊镜像
Dockerfile ,修改基础镜像为Arm版本
FROM arm64v8/openjdk:8u181-alpine
RUN echo "http://mirrors.aliyun.com/alpine/v3.8/main" > /etc/apk/repositories && echo "http://mirrors.aliyun.com/alpine/v3.8/community" >> /etc/apk/repositories
RUN apk update
RUN apk add yasm && apk add ffmpeg && apk add curl
执行构建
# docker build -t arm64v8/openjdk:8u181-alpine-ffmpeg-curl .
[+] Building 28.8s (8/8) FINISHED docker:default
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 301B 0.0s
=> [internal] load metadata for docker.io/arm64v8/openjdk:8u181-alpine 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [1/4] FROM docker.io/arm64v8/openjdk:8u181-alpine 0.0s
=> [2/4] RUN echo "http://mirrors.aliyun.com/alpine/v3.8/main" > /etc/apk/repositories && echo "http://mirrors.aliyun.com/alpine/v3.8/community" >> /etc/apk/reposito 0.4s
=> [3/4] RUN apk update 2.1s
=> [4/4] RUN apk add yasm && apk add ffmpeg && apk add curl 25.9s
=> exporting to image 0.3s
=> => exporting layers 0.3s
=> => writing image sha256:804f144aa80e2f8cd31241998806ca12e3977d033b4ba969d29093371118c4d4 0.0s
=> => naming to docker.io/arm64v8/openjdk:8u181-alpine-ffmpeg-curl
查看系统信息
[root@DC1-06-002 ~]# hostnamectl
Static hostname: DC1-06-002
Icon name: computer-server
Chassis: server
Machine ID: afd797ca9de64084a9b6c92f3ded6789
Boot ID: 5203826879d74982a51d192ee4576b9f
Operating System: Kylin Linux Advanced Server V10 (Lance)
Kernel: Linux 4.19.90-52.15.v2207.ky10.aarch64
Architecture: arm64
离线安装 docker
下载 docker包
wget https://download.docker.com/linux/static/stable/aarch64/docker-26.1.3.tgz
# 2024年05月27日 当前时间最新的版本
解压安装
tar -xvf docker-26.1.3.tgz
cp docker/* /usr/bin/
docker.service 文件
vi /usr/lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
重新加载和启动服务
systemctl daemon-reload
systemctl restart docker
查看服务情况
[root@DC1-06-002 ~]# docker info
Client:
Version: 26.1.3
Context: default
Debug Mode: false
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 26.1.3
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Using metacopy: false
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
Swarm: inactive
Runtimes: io.containerd.runc.v2 runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 926c9586fe4a6236699318391cd44976a98e31f1
runc version: v1.1.12-0-g51d5e94
init version: de40ad0
Security Options:
seccomp
Profile: builtin
Kernel Version: 4.19.90-52.15.v2207.ky10.aarch64
Operating System: Kylin Linux Advanced Server V10 (Lance)
OSType: linux
Architecture: aarch64
CPUs: 128
Total Memory: 254GiB
Name: DC1-06-002
ID: c5a385e4-be0a-403a-9931-8c9e4409b70b
Docker Root Dir: /var/lib/docker
Debug Mode: false
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
Product License: Community Engine
#### 安装 docker-ce
>切记这里不要直接yum install docker-ce,会报错的
```bash
# yum install docker-ce docker-ce-cli containerd.io
[root@DC1-06-002 yum.repos.d]# yum install docker-ce docker-ce-cli containerd.io
Last metadata expiration check: 0:03:29 ago on 2024年05月16日 星期四 05时48分22秒.
Error:
Problem 1: cannot install the best candidate for the job
- nothing provides container-selinux >= 2:2.74 needed by docker-ce-3:26.1.2-1.el7.aarch64
Problem 2: cannot install the best candidate for the job
- nothing provides container-selinux >= 2:2.74 needed by containerd.io-1.6.31-3.1.el7.aarch64
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
通过制定安装版本,有测试以下两个版本可以安装成功,可以根据自己情况选择
yum install docker-ce-18.06.3.ce-3.el7yum install docker-ce-3:19.03.15-3.el8yum install docker-ce-3:26.1.2-1.el8
```bash
yum install docker-ce-18.06.3.ce-3.el7
# 中间可能会弹出交互,直接y确认
[root@DC1-06-002 yum.repos.d]# yum install docker-ce-18.06.3.ce-3.el7
Last metadata expiration check: 0:04:09 ago on 2024年05月16日 星期四 05时48分22秒.
Dependencies resolved.
=============================================================================================================================================================================
Package Architecture Version Repository Size
=============================================================================================================================================================================
Installing:
docker-ce aarch64 18.06.3.ce-3.el7 docker-ce-stable 31 M
Installing dependencies:
container-selinux noarch 2:2.73-3.gitd7a3f33.oe1 OS 37 k
libcgroup aarch64 0.41-23.oe1 OS 94 k
Transaction Summary
=============================================================================================================================================================================
Install 3 Packages
Total download size: 31 M
Installed size: 141 M
Is this ok [y/N]: y
Downloading Packages:
(1/3): libcgroup-0.41-23.oe1.aarch64.rpm 756 kB/s | 94 kB 00:00
(2/3): container-selinux-2.73-3.gitd7a3f33.oe1.noarch.rpm 66 kB/s | 37 kB 00:00
(3/3): docker-ce-18.06.3.ce-3.el7.aarch64.rpm 14 MB/s | 31 MB 00:02
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 14 MB/s | 31 MB 00:02
警告:/var/cache/dnf/docker-ce-stable-b401a908f39b682f/packages/docker-ce-18.06.3.ce-3.el7.aarch64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID 621e9f35: NOKEY
Docker CE Stable - aarch64 16 kB/s | 1.6 kB 00:00
Importing GPG key 0x621E9F35:
Userid : "Docker Release (CE rpm) <docker@docker.com>"
Fingerprint: 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35
From : https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
Is this ok [y/N]: y
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Running scriptlet: libcgroup-0.41-23.oe1.aarch64 1/3
Installing : libcgroup-0.41-23.oe1.aarch64 1/3
Running scriptlet: libcgroup-0.41-23.oe1.aarch64 1/3
Installing : container-selinux-2:2.73-3.gitd7a3f33.oe1.noarch 2/3
Running scriptlet: container-selinux-2:2.73-3.gitd7a3f33.oe1.noarch 2/3
Deprecated, use selabel_lookup
Running scriptlet: docker-ce-18.06.3.ce-3.el7.aarch64 3/3
Installing : docker-ce-18.06.3.ce-3.el7.aarch64 3/3
Running scriptlet: docker-ce-18.06.3.ce-3.el7.aarch64 3/3
Verifying : docker-ce-18.06.3.ce-3.el7.aarch64 1/3
Verifying : container-selinux-2:2.73-3.gitd7a3f33.oe1.noarch 2/3
Verifying : libcgroup-0.41-23.oe1.aarch64 3/3
Installed:
docker-ce-18.06.3.ce-3.el7.aarch64 container-selinux-2:2.73-3.gitd7a3f33.oe1.noarch libcgroup-0.41-23.oe1.aarch64
Complete!
配置docker启动
systemctl enable docker && systemctl start docker
配置 docker 加速
创建配置目录
mkdir /etc/docker
添加配置文件
/etc/docker/daemon.json
{
"registry-mirrors": ["https://ccr.ccs.tencentyun.com/","https://docker.mirrors.ustc.edu.cn/"],
"insecure-registries":["docker.rockylinux.cn"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "10"
},
"storage-driver": "overlay2",
"live-restore": true,
"default-shm-size": "128M",
"max-concurrent-downloads": 10,
"max-concurrent-uploads": 10,
"debug": false
}
重启服务
systemctl restart docker
docker 服务状态查看
# 查看docker版本信息
[root@DC1-06-002 local]# docker version
Client:
Version: 18.06.3-ce
API version: 1.38
Go version: go1.10.3
Git commit: d7080c1
Built: Wed Feb 20 02:24:54 2019
OS/Arch: linux/arm64
Experimental: false
Server:
Engine:
Version: 18.06.3-ce
API version: 1.38 (minimum version 1.12)
Go version: go1.10.3
Git commit: d7080c1
Built: Wed Feb 20 02:28:12 2019
OS/Arch: linux/arm64
Experimental: false
docker-compose 安装
yum -y install python3-devel libffi-devel openssl-devel
pip3 install docker-compose
独立文件方式安装 下载docker-Compose,可以根据情况下载相应的版本,这里选择当前日期(2024年05月16日)最新版本v2.27.0
下载文件
curl -L https://github.com/docker/compose/releases/download/v2.27.0/docker-compose-Linux-aarch64 -o /usr/local/bin/docker-compose
添加执行权限
chmod +x /usr/local/bin/docker-compose
创建软链接
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose 执行状态
docker-compose -v
Docker Compose version v2.27.0
导出镜像
docker save -o arm64v8-mysql-8.0.29.tar.gz arm64v8/mysql:8.0.29
docker save -o arm64v8-redis-7.2.4-alpine.tar.gz arm64v8/redis:7.2.4-alpine
docker save -o minio-RELEASE.2020-11-25T22-36-25Z-arm64.tar.gz minio/minio:RELEASE.2020-11-25T22-36-25Z-arm64
docker save -o arm64v8-openjdk-8u181-alpine.tar.gz arm64v8/openjdk:8u181-alpine
docker save -o arm64v8-openjdk-8u181-alpine-ffmpeg-curl.tar.gz arm64v8/openjdk:8u181-alpine-ffmpeg-curl
docker save -o arm64v8-nginx-1.19.8-alpine.tar.gz arm64v8/nginx:1.19.8-alpine
报错处理
问题1:Redis ARM64-COW-BUG 警告导致Redis容器无法启动
原因
警告提示内核存在 bug,可能会在进行后台存储操作时导致数据损坏。解决这个问题的推荐方法是更新到最新稳定版本的内核。如果你已经在使用最新的稳定内核但问题仍然存在,可能需要检查是否有特定于你的硬件或特定内核版本的已知问题。
处理
有两种方式: - 升级内核:确保你的操作系统使用的是支持你硬件架构的最新稳定内核。 - 忽略警告:如果你确认当前环境的稳定性,并接受潜在的风险,可以在 Redis 的配置文件 (
redis.conf) 中添加以下行来忽略这个特定警告:
ignore-warnings "ARM64-COW-BUG"
评论