第三章:docker的容器

三、docker的容器

1、什么是容器

	容器是镜像的一个运行实例,所不同的是,它带有额外的文件可写层。
	如果认为虚拟机是模拟运行的一套操作系统和跑在上面的应用,那么
docker容器就是独立运行的一个或一组应用,以及它们的必须运行环境。

2、创建容器
①、新建容器:
用户可以使用docker create命令新建一个容器:

sudo docker create -it ubuntu:latest

第三章:docker的容器
注意:该方法创建的容器处于停止状态,启动需要使用docker start命令。
②、新建并启动容器

启动容器有两种:
	①、基于镜像新建一个容器并启动。
	②、将在种植状态的容器重新启动。
#所需要的命令主要是 docker run , 等价于先执行 docker create命令,在执行Docker start命令。

例如:下图中输出一个hello world,之后容器自动终止。
第三章:docker的容器
A、启动一个bash终端,允许用户进行交互

sudo docker run -t -i ubuntu /bin/bash
# 
	-t 选项docker分配一个伪终端,并绑定到容器的标准输入上。
	-i则让容器的标准输入保持打开

第三章:docker的容器
在交互模式下,用户可以通过终端输入相关命令:
第三章:docker的容器
退出:可以按Ctrl+d或输入exit命令来退出容器。
注意:退出后容器自动处于终止状态,对于docker来说,当运行的应用退出后,容器也就没有继续运行的必要了。
③、守护态运行
很多时候需要Docker容器在后台以守护态形式运行,用户可以通过添加-d参数来实现
例如:

sudo docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"

第三章:docker的容器
可以通过如下命令会在后台运行容器:
第三章:docker的容器
获取容器的输出信息,可以通过docker logs命令:
第三章:docker的容器
3、终止容器
①、终止容器:

sudo docker stop [-t | --time[=10]]	

例如:
第三章:docker的容器注意:可以使用docker ps -a -q 命令查看处于终止状态的容器ID
例如:
第三章:docker的容器
此外还可以通过 docker restart命令将一个运行态的容器终止然后在重新启动:

sudo docker restart ID

4、进入容器
进入容器的方式:

有三种进入方式:
	①、docker attach
	②、docker exec
	③、nsenter工具

①、attach命令:

sudo docker attach 

例如:
第三章:docker的容器
注意:当多个窗口同时使用attach 到同一个容器的时候,所有窗口都会同步显示,当某个窗口因命令阻塞时,其他窗口页无法执行操作。
②、exec命令
该命令可以直接在容器内运行命令。
例如:
第三章:docker的容器
5、删除容器
命令格式:

sudo docker rm [OPTIONS] [CONTAINER....]
#支持的选项
	-f   强行终止并删除一个运行中的容器
	-l   删除容器的链接,但保留容器
	-v	 删除容器挂载的数据卷

例如查看处于终止状态的容器并删除:
第三章:docker的容器
如果删除一个运行中的容器,可以添加-f参数:
第三章:docker的容器
6、导入导出容器
①、导出容器
不管容器此时是否处于运行状态,都可以导出:
命令格式:

	sudo docker export CONTAINER

第三章:docker的容器
②、导入容器
导出的文件可以使用docker import 命令导入,成为镜像:
第三章:docker的容器
导入镜像与导入容器的区别:

docker load 命令来导入镜像存储文件到本地的镜像库。
docker import 导入一个容器快照到本地镜像库。
	这两者区别在于容器快照文件将丢弃所有的历史记录和元数据信息,而镜像存储文
件将保存完整记录,体积也要大。