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

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

启动docker报错,可以手动启动

sudo dockerd --data-root=/data/docker --selinux-enabled=false --insecure-registry=10.92.167.87 

原因:没有 docker0 的桥接网络

解决:添加一个桥接网络,执行以下命令

 ip link add name docker0 type bridge

 ip addr add dev docker0 172.17.0.1/16

删除 Docker 和 Containerd 的 PID 文件

如果 containerd 或 Docker 有旧的 PID 文件,这可能会导致启动问题。删除这些文件并重启服务:

sudo rm /var/run/docker/containerd/docker-containerd.pid sudo rm /var/run/docker.pid sudo systemctl restart docker

迁移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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值