容器是 Docker 又一核心概念。简单的说,容器是独立运行的一个或一组应用,以及它们的运行态环境。对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环境)和跑在上面的应用。
Docker 利用容器来运行应用。
容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全
的平台。
可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运
行在其中的应用程序。
*注:镜像是只读的,容器在启动的时候创建一层可写层作为最上层。
1.启动容器
docker run
docker run docker.io/centos /bin/echo 'Hello World'跟本地执行/bin/echo 'Hello World'一样,执行完就退出了。
下面启动一个bash终端,可以和用户交互
其中, -t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上, -i 则让容器的标
准输入保持打开。
在交互模式下,用户可以通过所创建的终端来输入命令.
当利用 docker run 来创建容器时,Docker 在后台运行的标准操作包括:
1.检查本地是否存在指定的镜像,不存在就从公有仓库下载
2.利用镜像创建并启动一个容器
3.分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
4.从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
5.从地址池配置一个 ip 地址给容器
6.执行用户指定的应用程序
7.执行完毕后容器被终止
容器的核心为所执行的应用程序,所需要的资源都是应用程序运行所必需的。除此之外,并没有其它的资
源。可以在伪终端中利用 ps 或 top 来查看进程信息。可见,容器中仅运行了指定的 bash 应用。这种特点使得 Docker 对资源的利用率极高,是货真价实的轻量级虚拟化。
2.启动/停止一个已存在的容器
docker start/stop/restart 容器di或容器名
docker start -i 容器id,交互模式进入容器
3.导出容器快照
docker import
4.导入容器快照
cat 本地快照 | docker import - 镜像名称:tag
此外,也可以通过指定 URL 或者某个目录来导入,例如
$sudo docker import http://example.com/exampleimage.tgz example/imagerepo
*注:用户既可以使用 docker load 来导入镜像存储文件到本地镜像库,也可以使用 docker import 来
导入一个容器快照到本地镜像库。这两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息
(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也要大。此外,从容器快照文
件导入时可以重新指定标签等元数据信息。
5.删除容器
docker rm 容器id或容器名
删除一个处于停止状态的容器,如果不是停止状态的,则加-f,就是docker rm -f
6.自定义容器名
docker run 时,如果没有指定名称,则docker会自己生成一个名称,往往该名称是没什么意义的,可以自定义指明一个
docker run --name 容器名,容器名是唯一的,如果已存在了,则会启动失败
7.进入启动状态的容器
docker attach 容器id/容器名