一、简介

为什么要用 docker?
目前大部分LLM 推理框架都支持 docker 的方式安装,好处是可以快速的搭建好环境,不需要安装组件的依赖,一键安装与删除。

没有安装 wsl2 的 参考 08_Win+wsl2+Ubuntu(个人大模型开发测试运行基础环境)

二、配置apt源

cp /etc/apt/sources.list /etc/apt/sources.list.bak #备份(可选)

vim /etc/apt/sources.list #编辑apt源文件

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse

:x #保存并退出

然后执行 apt update # 更新源数据

三、配置Docker 源

cat /etc/docker/daemon.json # 查看 docker源文件

vim /etc/docker/daemon.json #编辑docker源文件,并添加 镜像地址,解决下载镜像慢的问题


{
    "registry-mirrors": ["https://docker.xuanyuan.me"]
}
   {  
      registry-mirrors: [https://docker.nju.edu.cn/]  
    }

service docker restart # 重启docker 服务

四、安装 Docker

sudo su # 切换到 root 用户 (可选)

sudo apt-get remove docker docker-engine docker.io containerd runc #卸载旧版本Docker (可选)

sudo apt-get install ca-certificates curl gnupg lsb-release #安装依赖

curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - #添加docker密钥

sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" #添加阿里云docker软件源

apt-get install docker-ce docker-ce-cli containerd.io #安装docker

如果是用非root用户安装的可以执行下面命令 (可选)
sudo usermod -aG docker $USER
sudo reboot # 重启

五、防火墙切换为iptables-legacy(非常重要)

网络上的教程最多坑的就是这里,没有多少教程说到这个点的,都是安装完docker 后就 systemctl start docekr … … ,
你会发现启动不了docker 不是报这个问题就是报那个问题, 巨坑

update-alternatives --config iptables #防火墙切换为iptables

如下,选择 iptables-legacy
iptables
检查是否切换成功
(base) root@DESKTOP:~# iptables --version

iptables v1.8.10 (legacy)

六、启动docker

#启动docker
(base) root@DESKTOP:~# service docker start

#检查docker是否正常
(base) root@DESKTOP:~# service docker status

七、Docker 常用命令

7.1 查看命令

查看Docker版本信息: docker versiondocker info

7.2 镜像命令

搜索镜像: docker search <镜像名>

拉取镜像: docker pull <镜像名>docker pull <镜像名>:<标签>

查看本地镜像: docker images

删除镜像: docker rmi <镜像ID或名称> docker rmi -f <镜像ID或名称>

构建镜像: docker build <路径>

保存镜像为文件: docker save -o <文件名> <镜像名>

从文件加载镜像: docker load -i <文件名>

7.3 容器命令

列出运行中的容器: docker ps

列出所有容器: docker ps -a

停止容器: docker stop <容器ID或名称>

强制停止容器: docker kill <容器ID>

启动已停止的容器: docker start <容器ID或名称>

查看容器详细信息: docker inspect <容器ID>

查看容器日志: docker logs <容器ID>

查看容器内进程: docker top <容器ID>

进入运行中的容器: docker exec -it <容器ID> /bin/bash

退出容器: exit ctrl+p+q(不关闭容器)

删除容器: docker rm <容器ID或名称>docker rm -f <容器ID>

7.4 数据卷命令

列出所有数据卷: docker volume ls

创建数据卷: docker volume create <卷名>

删除数据卷: docker volume rm <卷名>

查看数据卷详细信息: docker volume inspect <卷名>

7.5 镜像导入/导出

docker images # 查看需要导出的镜像名

导出docker 镜像:docker save -o xxx.tar.gz <要导出的镜像名>

导入docker 镜像:docker load -i <要导入的镜像名如 xxx.tar.gz >

八、问题排查

8.1 使用 systemctl 启动 docker 失败 bus: Host is down

[!error]
systemctl start docker

System has not been booted with systemd as init system (PID 1). Can’t operate.
Failed to connect to bus: Host is down

改为service 启动
service docker start
service docker status

8.2 启动 docker 失败 error=“open /proc/sys/net/ipv4/ip_local_port_range”

[!info]
(base) root@DESKTOP:~# service docker start
* Starting Docker: docker [ OK ]
(base) root@DESKTOP:~# service docker status
* Docker is not running

cat /var/log/docker.log # 日志报错信息

[!error]
time=“xxxxx” level=info msg=“falling back to default port range 49153-65535” error=“open /proc/sys/net/ipv4/ip_local_port_range: no such file or directory”

echo 1 > /proc/sys/net/ipv4/ip_forward # 开启转发后还是启动失败

[!info]
(base) root@DESKTOP:~# iptables --version
iptables: Failed to initialize nft: Protocol not supported

原因:
使用了 iptables-nft

解决:
update-alternatives --config iptables //切换iptables-legacy

8.3 docker 下载容器失败 overlay mount to

[!error]
提示: failed to register layer: error creating overlay mount to /var/lib/docker/overlay2/05ba20ae1d95cdba7be439e60d080dfeceda2cec0ae8/merged: invalid argument

原因:​

​ 使用了 wsl1 Docker 无法识别底层文件系统​

wsl -l -v 确认是否运行在 wsl 1 ,

解决:
升级到 wsl2

参考: 08_Win+wsl2+Ubuntu(个人大模型开发测试运行基础环境)


本文/视频中引用了部分来源于网络的公开素材。若版权方认为存在侵权,请通过留言等方式联系,我将立即予以处理并深表感谢。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐