操作容器
一、启动
- 基于镜像新建一个容器启动
- 重新启动终止状态的容器
1. 新建并启动
命令主要是docker run
。
例如:
$ docker run -t -i ubuntu:18:04 bin/bash
root@af8bae53bdd3:/
其中,-t选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上,-i则让容器的标准输入保持打开。
利用docker run
来创建容器时,docker在后台运行的标准操作包括:
- 检查本地是否存在指定的镜像,不存在就从公有仓库下载
- 利用镜像创建并启动一个容器
- 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
- 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
- 从地址池配置一个 ip 地址给容器
- 执行用户指定的应用程序
- 执行完毕后容器被终止
2. 启动已终止容器
可以利用docker container start
命令,直接将一个终止的容器启动运行。
容器的核心为所执行的应用程序,所需要的资源都是应用程序运行所必需的。除此
之外,并没有其它的资源。可以在伪终端中利用 ps 或 top 来查看进程信息。
二、守护态运行
更多的时候,需要让 Docker 在后台运行而不是直接把执行命令的结果输出在当前宿主机下。此时,可以通过添加 -d 参数来实现。此时容器在后台运行并不会把输出的结果(STDOUT)打印到宿主机上面(输出结果可以用docker logs
查看)
三、终止容器
docker container stop
:终止一个运行中的容器
docker容器中指定的应用终结时,容器也自动终止
docke container ls
:查看容器信息
docker container ls -a
:查看终止状态的容器
docker container start
:启动处于终止状态的容器
docker container restart
:终止一个运行的容器,然后再重新启动
四、进入容器
使用-d参数后,容器启动后会进入后台,此时,若想要进入容器进行操作,可以使用docker attach
或者docker exec
,推荐使用docker exec
。
进入容器后,如果在这个stdin中exit,通过attach进入的容器也会终止,exec则不会。
五、导出和导入容器
docker export
:
$ docker export 7691a814370e > ubuntu.tar
docker import
从快照文件中再导入为镜像,也可以指定URL或者某个目录来导入,如:
$ docker import http://example.com/exampleimage.tgz example/imagerepo
注:用户既可以使用 docker load 来导入镜像存储文件到本地镜像库,也可以使用 docker import 来导入一个容器快照到本地镜像库。这两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也要大。此外,从容器快照文件导入时可以重新指定标签等元数据信息。
六、删除容器
docker container rm
删除一个处于终止状态的容器,加上-f
可以删除一个运行中的容器,docker会发送SIGKILL信号给容器。
docker container prune
清理所有处于终止状态的容器。