Skip to content

container

容器的实质是进程,容器进程运行于自己的独立的命名空间。

容器拥有自己的 root 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间。

容器存储层的生存周期和容器一样,容器消亡时,容器存储层也随之消亡。

容器存储层要保持无状态化。所有的文件写入操作,都应该使用 数据卷(Volume)、或者 绑定宿主目录

参数

  • -t 选项让 Docker 分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上,
  • -i 则让容器的标准输入保持打开。
  • -d 后台运行。(容器运行时间与 -d 无关)

容器运行时间与 -d 无关,比如

sh
docker run -d ubuntu:18.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"

虽然是后台运行,但是运行玩就结束了

02

启动容器有两种方式,

  • 基于镜像新建一个容器并启动
  • 将在终止状态(exited)的容器重新启动

命令

sh
# 新建并运行
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

# 重新启动
docker container start [container ID or NAMES]
docker container stop [container ID or NAMES]

# 删除
docker container rm

docker container ls -a

docker container ps

docker container logs [container ID or NAMES]

# 进入容器查看信息
docker attach [container ID]
docker exec -it [container ID] bash

# 倒入导出
docker export 7691a814370e > ubuntu.tar
cat ubuntu.tar | docker import - test/ubuntu:v1.0
docker import http://example.com/exampleimage.tgz example/imagerepo

attach 的 exit 会导致容器的停止,而 docker exec 不会