我们通过上一节的学习,已经大体了解了镜像,并且通过我们的努力还自己做了一个镜像,最后在运行这个镜像的时候,我们说把它变成一个容器通过docker run运行了它,那么什么是容器呢?我们怎么创建它呢?相信通过这节的学习,你会初步掌握容器的相关知识。。。。。。
下面给出Image与container的关系
- 通过Image 创建(copy)
- 在Image layer之上建立一个container layer(可读写)
- 类比面向对象:类和实例
- Image 负责app的存储和分发, Container负责运行app
废话不多说,先创建一个Container
-bash-4.2$ docker run apple/hello-world
hello docker
接下来我们使用docker container ls查看当前的容器
-bash-4.2$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
我们发现当前没有任何的容器?这是为什么呢?我们刚才不是已经运行一个容器了嘛!这是因为我们在运行完hello-world以后它就退出了,并不是一个常驻内存的进程,小伙伴们这个知识点记住了嘛!那么如果我们非要查看怎么办呢?
-bash-4.2$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c9143f4b837c apple/hello-world "/hello" 3 minutes ago Exited (0) 3 minutes ago brave_joliot
正如上面所示,加个-a就可以了,这个就包括正在运行的与退出的。。。。。。
上面是一个比较简单的image,下面我们可以在来个复杂点的, 我们用ubuntu这个镜像做个容器,并运行它。
docker run ubuntu:14.04
结果是空
-bash-4.2$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4b3a575c9706 ubuntu:14.04 "/bin/bash" 52 seconds ago Exited (0) 51 seconds ago relaxed_jackson
c9143f4b837c apple/hello-world "/hello" 10 minutes ago Exited (0) 10 minutes ago brave_joliot
7d28d4169d19 apple/hello-world "/hello" 3 hours ago Exited (0) 3 hours ago vibrant_cori
56e64b2e29c9 apple/hello-world "/hello" 3 hours ago Exited (0) 3 hours ago goofy_dijkstra
我们发现多了一个退出的ubuntu,它提示我们使用,bin/bash执行它,但是我们执行这个bin/bash它也不会常驻内存,那我们怎么办呢?我们使用
-bash-4.2$ docker run -it ubuntu:14.04
root@ac295f07bf8c:/#
这样我们就进入一个交互式的环境当中,我们刚开始说过,这个是在image上面多建的一层,是可读写的,我们试着创建一个文件
root@ac295f07bf8c:/# touch index.html
root@ac295f07bf8c:/# ls
bin boot dev etc home index.html lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
这样我们就创建了一个文件,甚至我们可以在这里面安装一些软件,比如
apt-get update && sudo apt-get install vim
exit退出容器
在这一节的最后我给大家介绍几个常用的命令,以供大家日后方便操作Docker
docker container rm CONTAINER ID # 删除容器
docker ps -a # 列出当前的退出与没退出的容器
docker rm CONTAINER ID # 删除容器
docker images # 列出当前的image
docker image rm IMAGE ID # 删除image
docker rmi IMAGE ID # 删除image
docker container ls -aq # 列出当前的CONTAINER ID
-bash-4.2$ docker container ls -a | awk {'print$1'} # 列出当前的CONTAINER ID
docker rm $(docker container ls -aq) # 删除所有的container
docker rm $(docker container ls -f "status=exited" -q) # 删除已经退出的容器
怎么样,小伙伴们是不是又掌握了一波技能,多加联系,多找快捷键,多偷懒,😄!!!!!!
网友评论