继续docker的学习之旅,今天练习一些常用的命令:
一、镜像相关
1.1 列出本机所有镜像

后面的操作,都以ubuntu做为练习的目标。
另外:如果某些镜像文件不想要了,可以用下面的命令删除
1.2 删除镜像
docker rmi 镜像Id(即:1.1图中的IMAGE ID)
有时候删除会失败,比如:有一个容器正在使用该镜像文件。这时可以加参数-f 强制删除,如果不清楚每个命令可以加哪些参数,可以用
docker 命令 --help查看帮助,比如:
bin docker rmi --help
Usage: docker rmi [OPTIONS] IMAGE [IMAGE...]Remove one or more images
-f, --force=false Force removal of the image
--help=false Print usage
--no-prune=false Do not delete untagged parents二、容器相关
2.1 最基本的启动
docker run -it ubuntu参数-it的含义,可以用docker run –help查看,就不展开了
2.2 启动后执行命令
docker run -it ubuntu echo 'hello world'2.3 启动时指定容器名称
docker run -it --name 'myubuntu' ubuntu容器名称是一个很有意思的东东,后面马上会讲到。上面的命令运行完以后,先用exit退出,以便后面学习其它命令。
2.4 查看最近运行过的所有容器
docker ps -a
从图上可以看出,如果启动时未显示指定容器名称,docker会自动生成一个好玩的名称,命令的风格大致是:什么样的_谁谁,比如图中的insane_lamarr,字面的意思为”疯狂的拉马尔”,从这些细节可以感受到,docker的创造者们都是一帮很爱玩的家伙。
除了容器名称,还有二列非常重要:CONTAINER ID及STATUS,其中STATUS中以Up开头的,表示容器正在运行(注:容器是否处于运行状态,排除人为docker stop的因素外,很大程序上是由docker run 最后的命令参数决定的,如果启动时不指定任何命令参数,默认执行/bin/bash,如果指定了类似echo “hello world”之类瞬间就执行完的命令,run起来,马上就会转为关闭,因为命令已经执行完了),而CONTAINER ID在很多场景中都会用到(比如:删除容器)

另外,对于同一个镜像(比如ubuntu),默认不指定容器名称的话,每次容器启动docker都会生成一个唯一的名称,这个有点象OOP编程,镜像相当于Class类定义,是一个只读的模板,而容器则是类的运行实例,java中每次new出来的实例,其hashcode必然不同,所以每次启动的docker容器,名称也不一样,只不过与OOP不同的是,OOP中实例消亡了,所有关联的信息全清掉了,而docker容器就算停止掉,docker仍会记住其最后的运行状态。










