标签:Docker

0

107

N卡环境下以Docker方式一键部署ComfyUI

之前直接在N卡物理机上跑模型难免因为各种依赖兼容的问题反复折腾, 并且当模型升级时依赖环境又得升级。 特别当跑多个不同模型时,环境的兼容性就成了“鱼与熊掌不可兼得”尴尬。 最近发现可以用Docker方式部署,不得不说英伟达的生态还是非常棒的,也难怪成为显卡一哥。

下面把折腾笔记记录一下。

假设在debian12服务器系统下已安装好如下基础环境:

  • 安装好英伟达显卡驱动;
  • 安装好Docker;

安装英伟达为Docker容器工具包

检查 NVIDIA 容器工具包是否安装:

dpkg -l | grep nvidia-container-toolkit

确认 NVIDIA 容器工具包是否已正确安装

如果没有任何信息出现,则使用以下命令安装:

distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
    && curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
    && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
 
sudo apt update
sudo apt install -y nvidia-container-toolkit
sudo systemctl restart docker

注意,如果是ubuntu18.04之类的系统,上面步骤是可以的。 但是debian12可能会报错,可能是debian12作为debian最新发行版显卡一哥还没来得及更新。

不过没关系用deiban11也是可以,如下:

curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey > /etc/apt/keyrings/nvidia-docker.key
curl -s -L https://nvidia.github.io/nvidia-docker/debian11/nvidia-docker.list > /etc/apt/sources.list.d/nvidia-docker.list
sed -i -e "s/^deb/deb \[signed-by=\/etc\/apt\/keyrings\/nvidia-docker.key\]/g" /etc/apt/sources.list.d/nvidia-docker.list
apt update
apt -y install nvidia-container-toolkit
systemctl restart docker

部署ComfyUI

拉取第三方ConfyUI镜像:

docker pull dockerproxy.net/yanwk/comfyui-boot:cu124-cn

定义工作空间:

mkdir -p /data/comfyui/storage

启动镜像容器:

……

乐果   发表于   2025 年 02 月 08 日 标签:Dockerai 继续阅读

0

175

Docker 容器跨主机通信之网络:overlay

当你安装了 docker, 它会自动创建 3 个网络,可以使用 docker network ls 命令来查看。

(base) xiao@xiao:~$ docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
acb47f4c7ff0   bridge    bridge    local
f2b6a346bd84   host      host      local
d2699c7383f0   none      null      local
  • Bridge模式(桥接模式):默认的网络模式,容器通过虚拟网桥连接到主机的物理网络接口上,可以通过端口映射将容器的端口映射到主机上。
  • Host模式(主机模式):容器与主机共享网络命名空间,容器直接使用主机的网络栈,可以轻松访问主机上的网络资源,但会损失一定的隔离性。
  • None模式(无网络模式):容器不连接到任何网络,只能通过内部与其他容器进行通信,不能与外部进行网络通信。

docker inspect 命令可以查看某个网络详情。

root@vm01:~# docker inspect bridge
[
    {
        "Name": "bridge",
        "Id": "e11244c41ed7db4a5f43f392316c1dd1999bc7e49b74952f0aed6f5352a4a70f",
        "Created": "2025-01-02T15:53:02.456439999+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16",
                    "Gateway": "172.17.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        },
        "Labels": {}
    }
]

当你开启 docker swarm 模式时,overlay 网络模式就会出现了。

docker swarm 初始化如下所示:

……

乐果   发表于   2025 年 01 月 03 日 标签:Docker 继续阅读

0

748

设置代理的一些方法

因国内网络限制的原因,有时运维安装一些依赖包时常常因为源地址无法访问而头疼。

下面总结一下关于设置代理的一些方法。

debian 系统 apt 命令设置代理

直接贴命令案例:

apt -o Acquire::http::proxy="socks5h://192.168.1.211:1080/" upgrade -y
apt -o Acquire::http::proxy="socks5h://127.0.0.1:1089/" update
apt -o Acquire::http::proxy="socks5h://192.168.1.211:1080/" install maven

注:将上面 192.168.1.211:1080 改成自己的代理服务器即可。

docker pull 拉取镜像设置代理

由于 docker pull 命令是由 dockerd 守护进程执行。 而 dockerd 守护进程是由 systemd 管理。因此,如果需要在执行 docker pull 命令时使用 HTTP/HTTPS 代理,需要通过 systemd 配置。

方法如下:

dockerd 创建配置文件夹:

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo touch /etc/systemd/system/docker.service.d/proxy.conf

在这个 proxy.conf 文件(可以是任意 *.conf 的形式)中, 添加以下内容: /etc/systemd/system/docker.service.d/http-proxy.conf , 并在该文件中添加相关环境变量。

[Service]
Environment="HTTP_PROXY=socks5://192.168.1.211:1080/"
Environment="HTTPS_PROXY=socks5://192.168.1.211:1080/"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"

刷新配置并重启 docker 服务

systemctl daemon-reload
systemctl restart docker

docker build 镜像构建过程设置代理

……

乐果   发表于   2024 年 06 月 12 日 标签:Dockerdebian 继续阅读

0

372

docker运维

最近参与一些运维工作,因此做一下容器运维的常用命令笔记。

docker ps

docker ps命令参数:

  • -a 显示所有容器,包括停止状态的
  • --format 输出格式(ID,Names,Image,Created,Status,Ports,Command)
  • --no-trunc 显示完整的输出格式(包括Command)

如下所示:

docker ps --no-trunc --format "table {{.Names}}\t{{.Image}}\t{{.Command}}"
docker ps --no-trunc --format "table {{.ID}}\t{{.Names}}\t{{.Image}}\t{{.Command}}"
docker ps --no-trunc --format "table {{.ID}}\t{{.Names}}\t{{.Image}}\t{{.Ports}}\t{{.Command}}"

docker inspect

docker inspect 用于查看某容器的运行状态,例如:

……

乐果   发表于   2024 年 05 月 16 日 标签:Docker 继续阅读

0

452

docker swarm 模式相关常见操作

因2024年要加入公司的运维组了,最近必须提前预习一下 docker swarm 模式下常见的命令以及部署方法等,故整理了一些资料。

什么是Swarm

Swarm这个名称特别贴切。在Wiki中解释道:

Swarm behavior是指动物的群集行为。比如我们常见的蜂群,鱼群,秋天往南飞的雁群都可以称作Swarm behavior。

Swarm通过把多个Docker Engine聚集在一起,形成一个大的docker-engine,对外提供容器的集群服务。同时这个集群对外提供Swarm API,用户可以像使用Docker Engine一样使用Docker集群。

……

乐果   发表于   2024 年 01 月 31 日 标签:Docker 继续阅读

较旧的文章
热评文章