一、Dockerfile构建镜像使用命令
1.写Dockerfile文件,在目录下构建
bash
docker build -t <镜像名称或ID>:<版本号> .
eg.
docker build -t image_name:latest .
建议Dockerfile文件使用 NVIDIA CUDA 11.8 运行时镜像
bash
FROM nvidia/cuda:11.8.0-runtime-ubuntu18.04
2.导出镜像
bash
# 方式0:使用docker save
sudo docker save -o image_name.tar image_name:latest
# 方式1:使用docker save和gzip管道
docker save image_name:latest | gzip > image_name.tar.gz
# 方式2:先保存为tar再压缩
docker save -o image_name.tar image_name:latest
gzip image_name.tar
# 方式3:使用tar命令直接压缩
docker save image_name:latest | tar -czf image_name.tar.gz -
3.在另一台电脑加载镜像
bash
sudo docker load -i image_name.tar
# 或从压缩文件导入
sudo docker load -i image_name.tar.gz
4.运行容器
bash
docker run -d \
--name image_name_v1 \ # 生成容器的名称(运行环境的名称)
-v /mywork/code:/app/code \ # 挂载代码的路径
-v /mywork/datasets:/app/datasets \ # 挂载前后端数据存储的路径,为了方便通信取到数据
--network host \ # 使用主机模式
--gpus all \ # 使用GPU
image_name:latest # 镜像名称
5.启动容器
bash
docker start <容器名称或ID>
6.进入容器
bash
docker exec -it <容器名称或ID> /bin/bash
查看容器状态
bash
docker <镜像名称或ID> status
重启容器
bash
docker restart <镜像名称或ID>
停止容器
bash
docker stop <容器名称或ID>
删除容器
bash
docker rm <容器名称或ID>
删除镜像
bash
docker rmi <镜像名称或ID>
7. docker commit 命令
注:把修改后的容器保存为镜像,黑箱操作,不建议。
Docker 提供了一个 docker commit 命令,可以将容器的存储层保存下来成为镜像。换句话说,就是在原有镜像的基础上,
再叠加上容器的存储层, 并构成新的镜像。以后我们运行这个新镜像的时候,就会拥有原有容器最后的文件变化。
bash
docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]
eg.
docker commit --message "修改了默认网页" \
--author "Tao Wang <twang2218@gmail.com>" \
8. 个人环境polyiou编译
linux编译
bash
cd polyiou
g++ -shared -fPIC -o _polyiou.so polyiou.cpp polyiou_wrap.cxx -I/home/gw/miniconda3/envs/vit-adapter/include/python3.8 -L/home/gw/miniconda3/envs/vit-adapter/lib -lpython3.8
win编译
基于分析,推荐用户在 Visual Studio 2022 开发人员命令提示符中使用上述编译命令。确保 Python 路径正确,并匹配 Python 和编译器的位数。
bash
cl /LD /Fe_polyiou.dll polyiou.cpp polyiou_wrap.cxx /I"D:\ProgramData\anaconda3\envs\ImageSegmentation\include" /link /LIBPATH:"D:\ProgramData\anaconda3\envs\ImageSegmentation\libs" /OUT:_polyiou.dll python38.lib
bash
cl /LD /Fe_polyiou.dll polyiou.cpp polyiou_wrap.cxx /I"D:\ProgramData\anaconda3\envs\ImageSegmentation\include" /link /LIBPATH:"D:\ProgramData\anaconda3\envs\ImageSegmentation\libs" python38.lib std:c++17
ultralytics 安装
bash
cd yolo
pip install -e .