文章开始,先简单介绍一下docker中镜像与容器的概念:
以C++类为比喻,镜像就好比C++写好的类,容器就是C++类实例化后的对象,创建容器之前必须有镜像.
1 通过Dockerfile编译生成镜像
#test/face为生成的镜像名,用户可以自定义;最后面的符号.代表在当前目录下查找Dockerfile文件
sudo docker build -t="test/face" .
2 根据已有的镜像创建并启动一个容器
#--runtime=nvidia代表创建的是一个可以使用nvidia gpu的容器;-it实际是-i和-t的组合;test/face就是镜像名,
#即从test/face镜像创建出一个容器出来
sudo docker run --runtime=nvidia -it test/face
3 退出容器
在容器的命令行界面执行exit
4 查看镜像列表
sudo docker images
5 查看容器列表
sudo docker ps -a
6 启动一个已存在的容器
#b2258bd0034e为容器ID,容器ID可以通过sudo docker ps -a命令查看
sudo docker start b2258bd0034e
7 进入刚启动的容器
sudo docker attach b2258bd0034e
8 停止所有的容器
sudo docker stop $(sudo docker ps -a -q)
9 删除所有的容器
sudo docker rm $(sudo docker ps -a -q)
10 删除所有的镜像(在删除镜像之前,必须先删除通过该镜像创建出来的容器,否则只能强行删除(不建议))
sudo docker rmi $(sudo docker images -q)
11 删除untagged images,也就是那些id为<None>的image
sudo docker rmi $(sudo docker images | grep "^<none>" | awk "{print $3}")
12 从容器中拷贝文件到宿主机
#87114930825a是容器ID,用户可以根据自己的修改;
sudo docker cp 87114930825a:/tmp/test.jpg /home/ubuntu
13 从宿主机拷贝文件到容器
#b2258bd0034e是容器ID,用户可以根据自己的修改;
sudo docker cp /home/ubuntu/test.jpg b2258bd0034e:/tmp/