简单地说,容器是镜像的一个运行实例,所不同的是,它带有额外的可写文件层。如果认为虚拟机试模拟运行一整套操作系统(提供了运行态环境和其他系统环境)和跑在上面的应用。那么Docker容器就是独立运行的一个或一组应用,以及他们的必须运行环境。
创建容器
Docker的容器十分轻量级,用户可以随时创建或删除容器。
新建容器
可以使用docker create命令新建一个容器。使用docker create命令新建的容器处于停止状态,可以使用docker start命令来启动它。
新建并启动容器
启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态的容器重新启动。所需要的命令主要为docker run,等价于先执行docker create命令,再执行docker start命令。
利用docker run来创建并启动容器时,Docker在后台运行的标准操作包括:
- 检查本地是否存在指定的镜像,不存在就从公有仓库下载。
- 利用镜像创建并启动一个容器
- 分配一个文件系统,并在只读的镜像层外挂在一层可读层
- 从宿主主机配置的网桥接口中桥接一个虚拟接口道容器中去。
- 从地址池配置一个IP地址给容器。
- 执行用户指定的应用程序
- 执行完毕后容器被终止
守护态运行
更多的时候,需要让Docker容器在后台以守护态(Daemonized)形式运行。用户可以通过添加-d参数来实现。
终止容器
可以使用docker stop来终止一个运行中的容器,命令的格式docker stop[-t | –time=[=10]]。它会首先向容器发送SIGTERM信号,等待一段时间后(默认为10秒),再发送SIGKILL信号终止容器。
此外,当Docker容器中指定的应用终结时,容器也自动终止。例如对于上一节中只启动了一个终端的容器,用户荣国exit命令或Ctrl+d来退出终端时,所创建的容器立刻终止。
处于终止状态的容器,可以通过docker start命令来重新启动。
此外,docker restart命令会将一个运行态的容器终止,然后再重新启动它。
进入容器
在使用-d参数时,容器启动后会进入后台,用户无法看到容器中的信息。某些时候如果需要进入容器进行操作,有多种方法,包括使用docker attach命令,docker exec命令,以及nsenter工具等。
删除容器
可以使用docker rm命令删除处于终止状态的容器,命令格式为docker rm[options] container [container…]。支持的选项包括:
- -f, –force=false强行终止并删除一个运行中的容器。
- -l, –link=false删除容器的连接,但保留容器。
- -v, –volumes=false删除容器挂在的数据卷。