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 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
上一篇: 一文搞懂telnet在windows和linux上的使用方法,一份非常适合收藏的Linux运维进阶面试题
下一篇: 【linux深入剖析】深入理解软硬链接 | 动静态库的制作以及使用
本文标签
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。