浙江省住房与城乡建设部网站,网店网络营销策划方案,合肥网站制作建设,上海远丰电商网站建设公司怎么样首先要理解docker的基本使用#xff0c;本文不做过多阐述#xff0c;博主也对docker没有了解透彻。
这里列一下docker的基本命令#xff1a;
docker info # 查看docker信息
docker -v # 查看docker版本
docker images # 查看docker所有的镜…首先要理解docker的基本使用本文不做过多阐述博主也对docker没有了解透彻。
这里列一下docker的基本命令
docker info # 查看docker信息
docker -v # 查看docker版本
docker images # 查看docker所有的镜像
docker ps -a # 查看docker所有的容器
docker rm ${容器id} # 删除容器
docker rmi ${镜像id} # 删除镜像 -f:强制删除
docker cp ${本地文件的路径} ${容器id}:${容器内文件路径} # 传输文件宿主机-容器
docker cp ${容器id}:${容器内文件路径} ${本地文件的路径} # 传输文件容器-宿主机
docker start ${容器名} # 启动容器
docker attach ${容器名} #进入容器
docker stop ${container id} # 根据容器id终止运行的容器
Ctrld # 退出容器
Ctrlpq # 退出容器而不关闭
docker rename ${旧的容器名} ${新容器名} # 修改容器名字
docker tag ${旧的容器id\旧的镜像名} ${新的镜像名}
docker commit -m ${备注信息} ${容器id/容器名} ${新的镜像名}:${新的镜像tag} # 修改完容器中内容保存为新的镜像docker save -o ${目标文件} ${镜像名}:${镜像tag} # 镜像导出
docker save -o nginx.tar nginx:latest # 样例其中-o和表示输出到文件nginx.tar为目标文件nginx:latest是源镜像名name:tag
docker load -i ${目标文件} # 镜像导入
docker load -i nginx.tar # 样例 其中-i和表示从文件输入。会成功导入镜像及相关元数据包括tag信息docker run --name${容器名} --ipchost -it --gpus all -p ${主机端口}:${容器端口} --cpu-shares 1024 -v ${主机文件夹}:${容器文件夹} ${REPOSITORY}:${TAG} /bin/bashdocker run --namemmdet --ipchost -it --gpus all -p 7777:8888 --cpu-shares 1024 -v /home/gy77:/workspace/ pytorch/pytorch:1.12.0-cuda11.3-cudnn8-devel /bin/bash
# --name: 容器名
# --ipchost: 容器间共享宿主机的内存
# -i: 交互式操作。
# -t: 终端。
# --gpus all 启动所有的gpu
# detrex:v1: 这是指用 ubuntu 15.10 版本镜像为基础来启动容器。
# --cpu-shares 1024 : 设置容器按比例共享CPU资源(容器A是1024容器B是2048则是按照1:2)
# /bin/bash放在镜像名后的是命令这里我们希望有个交互式 Shell因此用的是 /bin/bash。# docker增加非管理员的权限
cho $USER
sudo gpasswd -a $USER docker
newgrp dockerdocker 添加国内镜像源
ubuntu:
vim /etc/docker/daemon.json 内容如下
{registry-mirrors: [http://hub-mirror.c.163.com,https://docker.mirrors.ustc.edu.cn,https://registry.docker-cn.com]
}service docker restart # 重启docker
docker info # 验证是否成功封装项目
本文以detrex项目为例讲解如何把一个项目封装进docker以便更好的转移。
1️⃣ 拉取pytorch镜像
ptorch镜像网址https://hub.docker.com/r/pytorch/pytorch/tags
去找一个适合自己的pytorch版本镜像拉取到本地。这里博主拉取 pytorch:1.12.0-cuda11.3-cudnn8-devel 。可以看到是对应的cuda11.3版本在宿主机也就是服务器中安装的cuda版本最好一致。
⚠️ 值得注意的是我们要拉取结尾为devel 的镜像。
docker pull pytorch/pytorch:1.12.0-cuda11.3-cudnn8-devel2️⃣ 创建容器
拉取完毕后我们可以用docker images 命令查看一下创建容器
gy77ECS-yd24:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
pytorch/pytorch 1.12.0-cuda11.3-cudnn8-devel 43a3ceca55fd 8 months ago 14.1GB根据自己的需求创建容器
docker run --name${容器名} --ipchost -it --gpus all -p ${主机端口}:${容器端口} --cpu-shares 1024 -v ${主机文件夹}:${容器文件夹} ${REPOSITORY}:${TAG} /bin/bash# 例子
docker run --namedetrex --ipchost -it --gpus all -p 7777:8888 --cpu-shares 1024 -v /home/gy77:/workspace/ pytorch/pytorch:1.12.0-cuda11.3-cudnn8-devel /bin/bash
# --name: 容器名
# --ipchost: 容器间共享宿主机的内存
# -i: 交互式操作。
# -t: 终端。
# --gpus all 启动所有的gpu
# detrex:v1: 这是指用 ubuntu 15.10 版本镜像为基础来启动容器。
# --cpu-shares 1024 : 设置容器按比例共享CPU资源(容器A是1024容器B是2048则是按照1:2)
# /bin/bash放在镜像名后的是命令这里我们希望有个交互式 Shell因此用的是 /bin/bash。3️⃣ 连接容器
创建容器后我们就可以在另一个终端中利用 dockers ps -a 命令看到已启动的容器。
如果想让一个新的终端窗口进入容器使用docker attach命令容器启动的情况下容器未启动的情况下先启动容器。
docker start ${容器名} # 启动容器
docker attach ${容器名} # 连接容器4️⃣ 在容器中搭建我们项目的环境。
⭐️ 每个人的项目不一致这里就需要自己在容器中搭建自己的项目环境了。
# 基础的ubuntu软件包先更新一下
apt update# 搭建项目环境detrex为例
cd /workspace
git clone https://github.com/IDEA-Research/detrex.git
cd detrex
git submodule init
git submodule update
python -m pip install -e detectron2
pip install -e .# 测试推理你的项目
cd detrex# download pretrained DINO model
wget https://github.com/IDEA-Research/detrex-storage/releases/download/v0.2.1/dino_r50_4scale_12ep.pth# download the demo image
wget https://github.com/IDEA-Research/detrex-storage/releases/download/v0.2.1/idea.jpg# 验证gpu
python demo/demo.py --config-file projects/dino/configs/dino_r50_4scale_12ep.py \--input ./idea.jpg \--output ./demo_output.jpg \--opts train.init_checkpoint./dino_r50_4scale_12ep.pth5️⃣ 将容器打包为镜像。
docker commit -m ${备注信息} ${容器id/容器名} ${新的镜像名}:${新的镜像tag} # 修改完容器中内容保存为新的镜像6️⃣ 镜像导出和导入
docker save -o ${目标文件} ${镜像名}:${镜像tag} # 镜像导出
docker save -o detrex_img.tar detrex:latest # 样例其中-o和表示输出到文件nginx.tar为目标文件nginx:latest是源镜像名name:tag
docker load -i ${目标文件} # 镜像导入
docker load -i detrex_img.tar # 样例 其中-i和表示从文件输入。会成功导入镜像及相关元数据包括tag信息