环境前提
零碎环境ubuntu20.04
uname -a
nvida cuda 显卡驱动 默认曾经装置胜利
nvidia-smi
装置配置 docker
upgrade 零碎
更新零碎依赖:
apt-get upgrade
卸载之前的 Docker 环境
确认是否之前装置过 docker 并卸载:
sudo apt-get remove docker docker-engine docker.io containerd runc
装置相干工具并增加 docker 阿里云源
# 装置相干工具
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
#增加阿里云的 docker GPG 密钥
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
#增加阿里镜像源
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
#更新
sudo apt-get update
装置 docker
sudo apt-get install -y docker-ce
启动并查看 docker 运行状态:
sudo systemctl restart docker
sudo systemctl status docker
5. 配置镜像加速器
注:这一部步根本能够疏忽,因为没有应用国外 dockerhub 镜像!
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://7zk8hbh7.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
装置配置nvidia-docker2
配置nvidia-docker2 仓库
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
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-get update
装置nvidia-docker2 并重启 docker 服务
装置 nvidia-docker2 包
sudo apt-get install -y nvidia-docker2
sudo pkill -SIGHUP dockerd
装置实现后须要重启 docker:
sudo systemctl daemon-reload
sudo systemctl restart docker
运行 cuda 镜像验证是否装置胜利
sudo docker run --rm --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi
能输入 cuda 相干信息装置胜利:
Docker 运行stable diffusion webui
登陆公有仓库并加载 stable diffusion webui 镜像:
注:我这里用的腾讯云的 tcr 的公有仓库同步的 siutin/stable-diffusion-webui-docker 镜像:
docker login xxxx.tencentcloudcr.com --username 'tcr$xxxx-read' --password xxxxxx
docker pull xxxxx.tencentcloudcr.com/xxxx/stable-diffusion-webui-docker:latest-cuda
曾经吐槽过 tcr 仓库的 username tcr$ 的形式 …… 恩 还有我想不便绑定子账号的需要 … 不晓得什么时候会排期:
本地宿主机创立 models outputs 目录
创立本地挂载目录,并 chmod 设置文件夹权限:
mkdir -p /data/stable-diffusion-webui-docker&&cd /data/stable-diffusion-webui-docker
mkdir models outputs
sudo chmod 775 -R models outputs
上传或者下载 models 到 models 目录!
启动 stable-diffusion-webui 实例
Docker 后盾启动 stable-diffusion-webui
docker run -it -d --name zhangpeng -p 7860:7860 --gpus all --network host -v /data/stable-diffusion-webui/models:/app/stable-diffusion-webui/models -v /data/stable-diffusion-webui/outputs:/app/stable-diffusion-webui/outputs --rm xxxx.tencentcloudcr.com/xxxx/stable-diffusion-webui-docker:latest-cuda bash webui.sh --share --listen
参数阐明:
-d 后盾启动
-it -i 是交互 - t 是调配终端
–name 实例名
-p 指定端口映射,格局为:宿主机端口: 容器端口
-v 绑定一个卷
–network 网络模式 参数有 host bridge
webui.sh 参数
–listen –api –port xxx 端口
–device-id 显卡 ID
查看容器运行状态:
docker logs -f zhangpeng
注:因为我这里没有模型,挂载本地 models 空目录会报错,这里演示没有挂载 dodels 目录,会主动下载
web 拜访测试
自定义用户名明码形式:
注:先进行实例 docker stop zhangpeng
docker run -it -d --name zhangpeng -p 7860:7860 --gpus all --network host -v /data/stable-diffusion-webui/models:/app/stable-diffusion-webui/models -v /data/stable-diffusion-webui/outputs:/app/stable-diffusion-webui/outputs --rm xxx.tencentcloudcr.com/xxxx/stable-diffusion-webui-docker:latest-cuda bash webui.sh --share --listen --gradio-auth zhangpeng:abc@1234
当然了也能够 docker-compose 的形式启动,这里就简略跑一下了!