Docker是一个开源的应用容器引擎,它允许开发者在几乎任何环境中运行应用程序,而无需担心运行环境的问题。Docker的核心概念是容器,它可以将应用程序及其依赖项打包在一起,形成一个独立的环境。这使得开发者可以在不同的机器上复制相同的运行环境,从而实现应用程序的快速部署和迁移。
Docker的主要优点包括:
镜像(Image)和容器(Container)是Docker技术中的两个核心概念,它们之间的关系类似于传统计算机中的操作系统和应用程序。
简单来说,镜像定义了容器的行为和属性,而容器则是镜像的运行实例。
构建镜像
sudo docker build -f ./ultralytics-main/docker/Dockerfile -t yolov8:v0 .
查看容器
docker imagee
查看正在运行的容器ID(所有运行过的容器)
docker ps -a
安装ssh服务/根据运行的容器,直接进入:
docker exec -t -i ubuntu /bin/bash
运行容器
"""
命令解释 (-d 一直运行;-i 交互式操作; -t 终端;-v 挂载路径 “/home/zzy_ubuntu/share”表示主机路径 “/usr/share/files1”表示docker路径;--gpus表示使用gpu ;“fa50f7fed43a ” 表示容器ID)
"""
# 一直运行容器,exit不会退出(再次进入需要使用docker exec)
sudo docker run -dit --gpus all fa50f7fed43a /bin/bash
# 使用GPU
sudo docker run -it --gpus all fa50f7fed43a /bin/bash
# 使用CPU
sudo docker run -t -i 容器id /bin/bash
# 运行时挂载 {yolov8:base} 是容器id的tag
#### ubuntu挂载
sudo docker run -dit --gpus all -v /home/zzy_ubuntu/share:/workspace/share yolov8:1.0 /bin/bash
#### windows挂载
sudo docker run -dit --gpus all -v /mnt/f/python/company_code/Algorithm_architecture/yolov8:/workspace/share yolov8:1.0 /bin/bash
停止运行容器
sudo docker stop <容器ID>
删除容器
############################################## 删除容器
sudo docker rm <容器ID前三位>
############################################## 删除镜像
docker rmi -f 镜像id # 删单个
docker rmi -f 镜像id 镜像id # 删多个
docker rmi -f $(docker images -aq) # 删除所有
进入容器终端
docker exec -it 容器ID /bin/bash # 此方法需要先通过docker run -dit后台启动
保存新镜像(打包tar)
# 使用save参数进行打包,格式如:docker save -o tar文件名称 镜像REPOSITORY:TAG
docker commit -m="描述信息" -a="作者" 容器id 目标镜像名: [TAG]
---docker commit -m="最新的yolov8环境-无tensorrt" -a="zhaozhiyuan" 2b22 yolov8:cuda11.6.2-cudnn8302-py38
docker save -o yolov5-v6.2.tar yolov5:v6.2 ---- 将镜像保存为.tar文件,默认保存在当前目录
# sudo docker save <镜像ID> -o /home/yolov8_v0.tar
# 其中yolov5:v6.2 是需要保存镜像的REPOSITORY、和TAG;也是上面保存的镜像名称。
给镜像打标签和删除标签
# 打标签
sudo docker tag aba01f181a4a webconsole:latest
容器导出
sudo docker export -o xxx.tar <容器id>
加载tar镜像
# 使用load进行从tar文件导出镜像
docker load -i yolov5-v6.2.tar
# 然后查看是否出现镜像
docker images