Linux离线arm环境安装部署docker详细教程

测试小渣渣 2024-07-11 17:07:03 阅读 50

1、下载

通过官网下载docker安装包,找arm环境的安装包,如果是x86环境可以下载对应的安装包

Index of linux/static/stable/aarch64/

2、上传到服务器上,通过rz命令

上传成功后解压 tar -xvf docker-24.0.6.tgz 

3. 复制文件到 /usr/bin

cp ./docker/* /usr/bin

4. 创建docker.service

vim  /etc/systemd/system/docker.service

把这些复制到创建的文件中(注意需要修改insecure-registry=192.168.205.230,ip地址修改为当前机器的地址)

[Unit]

Description=Docker Application Container Engine

Documentation=https://docs.docker.com

After=network-online.target firewalld.service

Wants=network-online.target

 

[Service]

Type=notify

# the default is not to use systemd for cgroups because the delegate issues still

# exists and systemd currently does not support the cgroup feature set required

# for containers run by docker

ExecStart=/usr/bin/dockerd --selinux-enabled=false --insecure-registry=192.168.205.230

ExecReload=/bin/kill -s HUP $MAINPID

# Having non-zero Limit*s causes performance problems due to accounting overhead

# in the kernel. We recommend using cgroups to do container-local accounting.

LimitNOFILE=infinity

LimitNPROC=infinity

LimitCORE=infinity

# Uncomment TasksMax if your systemd version supports it.

# Only systemd 226 and above support this version.

#TasksMax=infinity

TimeoutStartSec=0

# set delegate yes so that systemd does not reset the cgroups of docker containers

Delegate=yes

# kill only the docker process, not all processes in the cgroup

KillMode=process

# restart the docker process if it exits prematurely

Restart=on-failure

StartLimitBurst=3

StartLimitInterval=60s

 

[Install]

WantedBy=multi-user.target

5. 添加可执行权限

chmod +x  /etc/systemd/system/docker.service

6. 常用命令

systemctl daemon-reload  # 加载docker.service

systemctl start docker   # 启动docker

systemctl status docker  # 查询docker当前状态

systemctl enable docker.service # 设置开机自动启动

7、使用docker ps -a 命令查看运行的容器

8、关闭防火墙命令

systemctl stop firewalld

systemctl disable firewalld

##selinux 无需操作,k8s脚本自动设置selinux

sed -i s#SELINUX=.*#SELINUX=disabled#g /etc/selinux/config

setenforce 0

9、普通用户执行docker ps -a 命令报错

 解决办法:把我们当前的用户添加到docker组中就可以了,这样他们就是一家人了。

第一步:sudo gpasswd -a username docker  #将普通用户username加入到docker组中,username这个字段也可以直接换成$USER。

第二步:newgrp docker  #更新docker组

第三步:再执行你报错的命令,此时就不会报错了。

启动报错分析原因

命令:需要把这个文件修改下名字,目录/etc/docker    mv daemon.json daemon.conf

迁移docker

通过修改 Docker 配置文件的方式来修改 Docker 数据存储路径,以减少系统盘的占用空间。

1、停止 Docker 服务

systemctl stop docker

2、备份当前的 Docker 数据存储目录 /var/lib/docker,或者直接把/var/lib/docker  移动到新建的目录,一定要先停止docker在操作

mv /var/lib/docker /var/lib/docker.bak

3、创建新的 Docker 数据存储目录,例如 /data/docker

mkdir /data/docker

4、修改 Docker 配置文件

修改 Docker 配置文件 /etc/docker/daemon.json,如果该文件不存在,则创建它:

vim /etc/docker/daemon.json

将以下内容复制粘贴到文件中,并将其中的 /data/docker 替换为实际的数据存储路径:

{

"data-root": "/data/docker"

}

5、启动 Docker 服务

systemctl start docker

6、测试验证

确认 Docker 数据存储路径是否已经修改成功:

docker info | grep 'Docker Root Dir'

7、可能出现启动不成功的问题:按照这样的方法试试

docker默认存储路径在/var/lib/docker下

[root@node01 system]# docker info | grep -i dir

 Docker Root Dir: /var/lib/docker

修改docker的systemd的配置文件

方法一、

移动文件位置

cp -a /var/lib/docker  /home/docker

vim /usr/lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd --graph /home/docker

编辑 /etc/docker/daemon.json 文件,如果不存在得手动创建,如果你写了国内源的话,就在这下边在加一行就行。

{

   "registry-mirrors":["http://docker.mirrors.ustc.edu.cn"],

   "exec-opts": ["native.cgroupdriver=systemd"],

   "data-root": "/home/docker"

}

最后重新加载配置,启动,查看路径是否修改成功

systemctl daemon-reload

systemctl restart docker

[root@node01 system]# docker info | grep -i dir

 Docker Root Dir: /home/docker

 

方法二、

创建软连接

移动文件位置

cp -a /var/lib/docker  /home/docker

创建软连接

sudo ln -fs /home/docker /var/lib/docker

重新加载配置&查看位置

复制 

systemctl daemon-reload

systemctl restart docker

[root@node01 system]# docker info | grep -i dir

 Docker Root Dir: /home/docker

 

docker 启动容器报错

1、/usr/bin/docker-current: Error response from daemon: shim error: docker-runc not installed on system

创建软连接

ln -s /usr/libexec/docker/docker-runc-current /usr/bin/docker-runc-current

 

如果不行的话

但是尝试之后依然发现没有解决问题,后来检查了一遍所有的配置文件发现问题:

[root@localhost docker.service.d]# pwd

/usr/lib/systemd/system/docker.service

[Service]

ExecStart=

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock  --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current --default-runtime=docker-runc --storage-driver devicemapper --label provider=generic --bip=10.2.31.1/24 --mtu=1450

Environment=

没有指定docker-runc参数导致,docker无法找到相应文件的位置,因此在进行排错迁一定要确认参数配置正确

2、如果报错exec: "docker-proxy": executable file not found in $PATH

创建软连接,然后重启docker

ln -s  /usr/libexec/docker/docker-proxy-current /usr/bin/docker-proxy



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。