基本概念
主要参考这篇文章做的笔记, here
简单的说,容器是独立运行的一个或一组应用,以及它们的运行态环境。对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环境)和跑在上面的应用。
启动
启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(stopped)的容器重新启动。 因为 Docker 的容器实在太轻量级了,很多时候用户都是随时删除和新创建容器。
cmd: docker run
只运行一个程序:
vimer@host:~$ docker run ubuntu /bin/echo “Hello, vimer” Hello, vimer
当利用 docker run 来创建容器时,Docker 在后台运行的标准操作包括:
检查本地是否存在指定的镜像,不存在就从公有仓库下载 利用镜像创建并启动一个容器 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去 从地址池配置一个 ip 地址给容器 执行用户指定的应用程序 执行完毕后容器被终止
守护态运行
通过 -d
参数来指定docker后天运行。
使用容器无限执行,在伪终端输出以上内容。
加了-d
参数,所以docker把容器放在后台运行了。使用 -d 参数启动后会返回一个唯一的 id,也可以通过 docker container ls 命令来查看容器信息。
docker container ls
docker container logs id
可以查看正在运行的container跑的是什么内容(假设有打印输出的话)。
docker container stop id
docker container start id
可以将一个终止的container重新激活。restart是首先关闭docker,然后再打开docker。
进入容器
在使用 -d 参数时,容器启动后会进入后台。 某些时候需要进入容器进行操作,包括使用 docker attach 命令或 docker exec 命令,推荐大家使用 docker exec 命令,原因会在下面说明。
docker attach id
也就是这样,使用attach的方式,可以在伪终端下使用 Ctrl + C
的方式关掉container。
docker exec -it ID bash
docker exec 后边可以跟多个参数,这里主要说明 -i -t 参数。
-i 只是交互,但是输出呢,是那种原来一行一行的。 -t 是模拟出来一个终端。
这里你就可以放心使用exit退出容器,但是原容器还是存在的。 加上 -t 的参数后:
导出容器: export
我们首先将上面的container stop。然后使用export命令导出:
导入容器: import
这个时候,你使用container ls
是看不到该container的,首先得激活才有可能看到,类似实例化吧。
这块还有一点问题,后面再补充吧。
import可以直接在URL上导入过来,而且在这个过程中可以继续打tags info。
rm container
docker container rm ID
该命令必须删除终止状态的容器。如果是运行中的,则添加-f
参数。
docker container prune 则会清除所有的已终止的container,慎用。
通过最下面的提示,我们可以发现, container占用的资源的真的很少的,至少在占用物理空间这个层面来说。