三、docker的容器
1、什么是容器
容器是镜像的一个运行实例,所不同的是,它带有额外的文件可写层。
如果认为虚拟机是模拟运行的一套操作系统和跑在上面的应用,那么
docker容器就是独立运行的一个或一组应用,以及它们的必须运行环境。
2、创建容器
①、新建容器:
用户可以使用docker create命令新建一个容器:
sudo docker create -it ubuntu:latest
注意:该方法创建的容器处于停止状态,启动需要使用docker start命令。
②、新建并启动容器
启动容器有两种:
①、基于镜像新建一个容器并启动。
②、将在种植状态的容器重新启动。
#所需要的命令主要是 docker run , 等价于先执行 docker create命令,在执行Docker start命令。
例如:下图中输出一个hello world,之后容器自动终止。
A、启动一个bash终端,允许用户进行交互
sudo docker run -t -i ubuntu /bin/bash
#
-t 选项docker分配一个伪终端,并绑定到容器的标准输入上。
-i则让容器的标准输入保持打开
在交互模式下,用户可以通过终端输入相关命令:
退出:可以按Ctrl+d或输入exit命令来退出容器。
注意:退出后容器自动处于终止状态,对于docker来说,当运行的应用退出后,容器也就没有继续运行的必要了。
③、守护态运行
很多时候需要Docker容器在后台以守护态形式运行,用户可以通过添加-d参数来实现
例如:
sudo docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"
可以通过如下命令会在后台运行容器:
获取容器的输出信息,可以通过docker logs命令:
3、终止容器
①、终止容器:
sudo docker stop [-t | --time[=10]]
例如:
注意:可以使用docker ps -a -q 命令查看处于终止状态的容器ID
例如:
此外还可以通过 docker restart命令将一个运行态的容器终止然后在重新启动:
sudo docker restart ID
4、进入容器
进入容器的方式:
有三种进入方式:
①、docker attach
②、docker exec
③、nsenter工具
①、attach命令:
sudo docker attach
例如:
注意:当多个窗口同时使用attach 到同一个容器的时候,所有窗口都会同步显示,当某个窗口因命令阻塞时,其他窗口页无法执行操作。
②、exec命令
该命令可以直接在容器内运行命令。
例如:
5、删除容器
命令格式:
sudo docker rm [OPTIONS] [CONTAINER....]
#支持的选项
-f 强行终止并删除一个运行中的容器
-l 删除容器的链接,但保留容器
-v 删除容器挂载的数据卷
例如查看处于终止状态的容器并删除:
如果删除一个运行中的容器,可以添加-f参数:
6、导入导出容器
①、导出容器
不管容器此时是否处于运行状态,都可以导出:
命令格式:
sudo docker export CONTAINER
②、导入容器
导出的文件可以使用docker import 命令导入,成为镜像:
导入镜像与导入容器的区别:
docker load 命令来导入镜像存储文件到本地的镜像库。
docker import 导入一个容器快照到本地镜像库。
这两者区别在于容器快照文件将丢弃所有的历史记录和元数据信息,而镜像存储文
件将保存完整记录,体积也要大。