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

Logo

一起探索未来云端世界的核心,云原生技术专区带您领略创新、高效和可扩展的云计算解决方案,引领您在数字化时代的成功之路。

更多推荐