2021.10.21更新:
1、删除同名或者同IMAGEID的镜像:
docker rmi repository:TAG
2、同一个系统中,一个镜像打包成tar包之后,导入时,时间是原镜像生成的时间,并且不会生成新镜像。可以将这个tar包在其他系统导入,得到镜像,时间也是原镜像的建立时间,可以修改repository和tag,然后打包,再导入原系统,就可以得到新的tag了。
3、利用export导出的镜像不完整,例如,原来镜像里装好了显卡驱动,利用export导出之后,就没有。
1、修改docker镜像名字
docker tag IMAGEID(镜像id) REPOSITORY:TAG
例如对上图中 的vqa_yolo5镜像修改名字:
PERPOSITORY:写上自己想改的名字
TAG:写上版本号或者latest
docker tag d0a151a73903 vqa:latest
#删除容器前,需要停止运行容器
2、删除容器
docker rm 容器ID
删除镜像前需要停止这个镜像产生的容器,然后删除这个镜像产生的容器,才可以删除镜像。
3、删除镜像
docker rmi IMAGEID
4、启动容器
docker start 容器名或者容器id
5、停止容器
docker stop 容器名或者容器id
6、导入导出:
注:
导出镜像 :docker save -o 路径/文件名 镜像名:镜像tag
导入镜像: docker load -i 文件名
导出容器:docker export -o 文件名 容器id
导入容器:docker import 文件名 -自定义镜像名:镜像tag
将容器导出成为镜像:
docker commit -a "镜像作者" -m "提交说明" 容器名 生成镜像的名字:tag
推荐使用save和load,一般不会出问题
7、创建容器:
如果不指定端口,宿主机和容器无法通信,
比如容器中的服务端口为80,ip为172.12.1.12,映射到宿主机8000端口,宿主机ip为:192.168.43.248
如果映射了端口就可以,用192.168.43.248:8000来访问容器中172.12.1.12:80的服务。
注意1:-p端口参数在-v挂在路径的前边,否则会出错。
注意2:-p x1:x1 -p x2:x2 ...如果需要映射多个端口,可以写多个-p参数进行设置
docker run -itd --name 容器名 -e LANG="en_US.UTF-8" -p 8000:80 -v (挂在硬盘)宿主机路径:容器路径 镜像名:版本号 /bin/bash
#例子:
docker run -itd --name my_container -e LANG="en_US.UTF-8" -p 8000:80 -v /APP/iMAT/zhuliagnqi-ghq:/temp my_images:v1 /bin/bash
7.1如果要创建gpu可以用的容器,需要指定runtime参数,命令如下:
docker run -itd --gpus all -e LANG="en_US.UTF-8" --name=lqzhu_con_gpu --runtime=nvidia -v C:/zlq:/temp -p 9970:9970 lqzhu_gpu:v1.0 /bin/bash
7.2 如果将来要用来跑深度学习代码,请添加以下参数,--shm 64G
,设置共享内存的大小,可以在加载数据的时候,开启多线程,提高模型的训练速度。生成容器的命令如下:
docker run -itd --gpus all -e LANG="en_US.UTF-8" --name 容器名 --runtime=nvidia -p 8000:80 --shm-size 64G -v (挂在硬盘)宿主机路径:容器路径 镜像名:版本号 /bin/bash
例如利用pytorch加载数据时,参数num_workers=8可以大大提高加载数据的速度:
train_loader = data.DataLoader(train_set, batch_size=args.batch_size,num_workers=4, shuffle=True)
8、启动
docker exec -it my_container /bin/bash