Skip to content

07. 容器操作

容器是docker中的核心概念,许多和容器相关的命令都可以省略container参数。

1. 开启容器

创建容器(选项巨多):

docker [container] create [OPTIONS] IMAGE [COMMAND] [ARG...]

开启容器:

docker [container] start [OPTIONS] CONTAINER [CONTAINER...]

还有删除容器、删除退出的容器、暂停/还原容器等。

docker run相当于先执行docker [container] create命令,再执行docker [container] start命令。当使用该命令创建并启动时,Docker在后台运行的标准操作包括:

  1. 检查本地是否存在指定的镜像,不存在就从公有仓库下载;

  2. 利用镜像创建一个容器,并启动该容器;

  3. 分配一个文件系统给容器,并在只读的镜像层外面挂载一层可读写层;

  4. 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去;

  5. 从网桥的地址池配置一个IP地址给容器;

  6. 执行用户指定的应用程序;

  7. 执行完毕后容器被自动终止。

docker run -itd centos /bin/bash

-it是个重要的选项,其中,-t选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上,-i则让容器的标准输入保持打开。

-d则是让容器在后台运行。此时,与容器通信的方法有两个:

  1. docker attach
# Attach local standard input, output, and error streams to a running container
docker attach [OPTIONS] CONTAINER
  1. docker exec(推荐方式)
# Run a command in a running container
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

Options:
  -d, --detach               Detached mode: run command in the background
      --detach-keys string   Override the key sequence for detaching a container
  -e, --env list             Set environment variables
  -i, --interactive          Keep STDIN open even if not attached
      --privileged           Give extended privileges to the command
  -t, --tty                  Allocate a pseudo-TTY
  -u, --user string          Username or UID (format: <name|uid>[:<group|gid>])
  -w, --workdir string       Working directory inside the container

2. 导出与导入容器

导出容器(不论运行与否):

# Export a container's filesystem as a tar archive
Usage:  docker export [OPTIONS] CONTAINER

Options:
  -o, --output string   Write to a tar file, instead of STDOUT

导入容器:

# Import the contents from a tarball to create a filesystem image
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

Options:
  -c, --change list      Apply Dockerfile instruction to the created image(在导人的同时执行对容器进行修改的Dockerfile指令)
  -m, --message string   Set commit message for imported image

导入与载入

既可以使用docker [image] load命令来导入镜像存储文件到本地镜像库,也可以使用docker [container] import命令来导入一个容器快照到本地镜像库。 这两者的区别在于: 容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积更大。 此外,从容器快照文件导人时可以重新指定标签等元数据信息。

3. 查看容器

3.1 查看容器详情

查看容器的具体信息,返回json数据。

# Display detailed information on one or more containers
docker container inspect [OPTIONS] CONTAINER [CONTAINER...]

3.2 查看容器内进程

# Display the running processes of a container
docker container top CONTAINER [ps OPTIONS]

3.3 查看统计信息

CPU、内存、存储、网络等使用情况。

# Display a live stream of container(s) resource usage statistics
# 显示实时容器(s)资源使用情况统计信息流
docker container stats [OPTIONS] [CONTAINER...]

Options:
  -a, --all             Show all containers (default shows just running)
      --format string   Pretty-print images using a Go template
      --no-stream       Disable streaming stats and only pull the first result
      --no-trunc        Do not truncate output

4. 其它命令

复制文件:

# Copy files/folders between a container and the local filesystem
docker container cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

更新配置:

更新容器的一些运行时配置,主要是一些资源限制份额。

docker container update [OPTIONS] CONTAINER [CONTAINER...]