Docker 操作容器
操作容器
- 容器
- 启动容器
- 新建并启动
- 启动已终止容器
- Docker 1.13+
- 守护态运行
- 终止容器
- 进入容器
- attach命令
- exec 命令
- 导出和导入
- 导出容器
- 导入容器快照
- 删除
- 清理所有处于终止状态的容器
- Docker 1.13+
容器
容器是独立运行的一个或一组应用,以及它们的运行态环境。
容器=镜像+读写层
Docker 在 1.13 版本中引进了新的管理命令(management commands),在 Docker 1.13+ 推荐使用 docker container 子命令来管理 Docker 容器。
启动容器
启动容器有两种方式:
- 一种是基于镜像新建一个容器并启动,
- 一个是将在终止状态 (stopped)的容器重新启动。
新建并启动
所需要的命令主要为 docker run
下面的命令则启动一个 bash 终端,允许用户进行交互。
$ docker run -t -i ubuntu:14.04 /bin/bash
- -t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上,
- -i 则让容器的标准输入保持打开。
启动已终止容器
可以利用 docker start 命令,直接将一个已经终止的容器启动运行。
Docker 1.13+
在 Docker 1.13+ 版本中推荐使用 docker container 来管理容器。
$ docker container run ubuntu:17.10 /bin/echo 'Hello world'
$ docker container start
守护态运行
后台(background)运行
更多的时候,需要让 Docker 在后台运行而不是直接把执行命令的结果输出在当前宿主机下。 此时,可以通过添加 -d 参数来实现。
要获取容器的输出信息,可以通过 docker logs 命令。
Docker 1.13+
在 Docker 1.13+ 版本中推荐使用 docker container 来管理镜像。
$ docker container run -d
$ docker container ls
$ docker container logs
终止容器
可以使用 来终止一个运行中的容器。
终止状态的容器可以用 docker ps -a 命令看到。
处于终止状态的容器,可以通过 docker start 命令来重新启动。
此外, docker restart 命令会将一个运行态的容器终止,然后再重新启动它。
进入容器
在使用 -d 参数时,容器启动后会进入后台。
某些时候需要进入容器进行操作,包括使用 docker attach 命令或 docker exec 命令,推荐大家使用 docker exec 命令,原因会在下面说明。
attach命令
docker attach 是 Docker 自带的命令。
$ docker ps
$ docker attach 243c
root@243c32535da7:/#
注意: 如果从这个 stdin 中 exit,会导致容器的停止。
exec 命令
只用 -i 参数时,由于没有分配伪终端,界面没有我们熟悉的 Linux 命令提示符,但命令执 行结果仍然可以返回。
当 -i -t 参数一起使用时,则可以看到我们熟悉的 Linux 命令提示符。
$ docker run -dit ubuntu
$ docker ps
$ docker exec -i 69d1 bash
如果从这个 stdin 中 exit,不会导致容器的停止。这就是为什么推荐大家使用 原因。
导出和导入
导出容器
$ docker ps -a
$ docker export 7691a814370e > ubuntu.tar
$ ls
这样将导出容器快照到本地文件(导出到本地哦)。
可以使用 docker import 从容器快照文件中再导入为镜像:
$ cat ubuntu.tar | docker import - test/ubuntu:v1.0
$ docker images
导入容器快照
Docker 1.13+
在 Docker 1.13+ 版本中推荐使用 docker container 来管理容器。
$ docker container export
$ docker image import
删除
$ docker rm
清理所有处于终止状态的容器
Docker 1.13+
在 Docker 1.13+ 版本中推荐使用 docker container 来管理容器。
$ docker container rm trusting_newton
$ docker container prune
还没有评论,来说两句吧...