Docker 实践指南(4)
本节介绍容器的常用操作。
前面说过,服务都是跑在容器里的,容器的底层实质上也是一个操作系统,能安装软件,有进程,只不过这个系统很精简。容器和虚拟机一样有启动、停止的状态。使用 ubuntu 14.04 镜像运行一个容器来体验一下:
$ docker run -it ubuntu:14.04 /bin/bash
root@bfffba2819bf:/#
这样我们就启动并进入到了容器里面,接着输入一些命令看看效果 ps aux
,ifconfig
,df -h
。
上面命令中 -it
参数表示接管容器的标准输入输出并开启一个伪终端(其实和 windows 的远程连接是一个意思,在这里意思是从宿主机连接到容器里),跟在命令最后面的 /bin/bash
表示启动容器后要运行的进程,由于我们要与容器进行交互,所以得开启一个shell
输入exit
退出当前容器,返回宿主机
root@bfffba2819bf:/# exit
使用docker ps
查看当前宿主系统中容器的状态
$ docker ps
正常来说是查看不到东西,这是由于容器要一直保持启动状态,就得有持续活动的进程,如果没有或者进程运行一段时间自己结束掉了,容器会自动停止。这也就是为什么要在docker run
语句的最后面加上 /bin/bash
,如果不指定,容器里就没有进程,当然它将一直无法启动。理解这个概念很重要。
使用 docker ps -a
查看未能启动(过期)的容器
$ docker ps -a
尝试启动并查看它。操作容器可以使用容器名、容器ID、ID简写,下例演示ID简写的方式:
$ docker start 77
再次使用docker ps
发现依旧未能启动,这是由于该容器启动后没有任何进程,故而自动停止了。删除这个容器,接下来创建一个有持久进程存在的容器。
删除容器:
$ docker rm --force 77fd6
创建一个容器,name为 daemon_container
,不开启交互,以分离(--detach)的形式在后台持续运行:
$ docker run --name daemon_container --detach ubuntu:14.04 \
/bin/bash -c "while true; do echo I\'am living... ; sleep 1; done"
再次查看容器状态:
由于开启了一个死循环,所以这个进程是不会自己结束的。在宿主层面查看该容器的进程:
$ docker top daemon_container
看看容器的日志信息:
$ docker logs daemon_container
停止容器:
$ docker stop daemon_container
查看容器详细描述:
$ docker inspect daemon_container
至此 docker 的基础操作简单介绍完毕,后面文章将进入到构建 LNMP 的过程。