前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker之容器操作

Docker之容器操作

作者头像
海盗船长
发布2021-12-07 16:10:06
4800
发布2021-12-07 16:10:06
举报
文章被收录于专栏:基础知识文章基础知识文章

1. 创建容器

1. 新建容器

可以使用 docker [container] create 命令新建一个容器。

代码语言:javascript
复制
docker create -it ubuntu:latest
af8f4f922dafee22c8fe6cd2aelld16e2507d61flblfa55b36e94db7ef45178
$ docker ps - a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
af8f4f922daf ubuntu:latest "/bin/bash " 17 seconds ago Created silly_euler

使用 docker [container] create 命令新建的容器处于停止状态,可以使用 docker [container] start 命令来启动它。

在这里插入图片描述
在这里插入图片描述

图1. Create 命令与容器运行模式相关的选项

在这里插入图片描述
在这里插入图片描述

图2. create 命令与容器环境和配置相关的选项

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

create 命令与容器资源限制和安全保护相关的选项

其他选项还包括:

  • -l, --label =[]: 以键值对方式指定容器的标签信息 ;
  • --label-file =[]: 从文件中读取标签信息 。
2. 启动容器

使用 docker [container] start 命令来启动一个已经创建的容器。 例如,启动刚创建的 ubuntu 容器 :

代码语言:javascript
复制
$ docker start af
af

此时,通过 docker ps 命令,可以查看到一个运行中的容器 :

代码语言:javascript
复制
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
af8f4f922daf ubuntu:latest "/bin/bash" 2 minutes ago Up 7 seconds silly_euler
3 . 新建井启动容器

除了创建容器后通过 start 命令来启动 也可以直接新建并启动容器。 所需要的命令主要为 docker [container]run,等价于先执行 docker [container] create 命令,再执行 docker [container] start 命令 。 当利用 docker [container] run 来创建并启动容器时, Docker 在后台运行的标准操作包括:

  • 检查本地是否存在指定的镜像,不存在就从公有仓库下载;
  • 利用镜像创建一个容器,并启动该容器;
  • 分配一个文件系统给容器,并在只读的镜像层外面挂载一层可读写层;
  • 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去;
  • 从网桥的地址池配置一个 IP 地址给容器;
  • 执行用户指定的应用程序;
  • 执行完毕后容器被自动终止 。

某些时候,执行 docker [container] run时候因为命令无法正常执行容器会出错直接退出, 此时可以查看退出 的错误代码 。 默认情况下,常见错误代码包括 :

  • 125 : Docker daemon 执行出错,例如指定了不支持的 Docker 命令参数;
  • 126 :所指定命令无法执行,例如权限出错 ;
  • 127 : 容器内命令无法找到 。

命令执行后出错,会默认返回命令的退出错误码 。

4.守护态运行

更多的时候,需要让 Docker 容器在后台以守护态(Daemonized)形式运行。 此时,可以通过添加-d 参数来实现。 例如,下面的命令会在后台运行容器 :

在这里插入图片描述
在这里插入图片描述

容器启动后会返回一个唯一的 id ,也可以通过 docker psdocker container ls命令来查看容器信息:

在这里插入图片描述
在这里插入图片描述

5. 查看窑器输出 要获取容器的输出信息,可以通过 docker [container] logs 命令 。 该命令支持的选项包括:

  • -details: 打印详细信息;
  • -f, -follow: 持续保持输出;
  • -since string: 输出从某个时间开始的日志;
  • -tail string: 输出最近的若干日志;
  • -t, -timestamps: 显示时间戳信息 ;
  • -until string: 输出某个时间之前的日 志 。

2. 停止容器

1. 暂停容器

可以使用 docker [container] pause CONTAINER [CONTAINER ... ]命令来暂停一个运行中的容器。 处于 paused 状态的容器,可以使用 docker [container ] unpause CONTAINER [CONTAINER ... ] 命令来恢复到运行状态 。

2. 终止容器

可以使用 docker [container] stop 来终止一个运行中的容器。 该命令的格式为docker [container] stop [-t I - -time [=10]] [CONTAINER ... ] 。 该命令会首先向容器发送 SIGTERM 信号,等待一段超时时间后(默认为 10 秒),再发送 SIGKILL 信号来终止容器:

代码语言:javascript
复制
$ docker stop ce5
ce5

此时执行 docker container prune 命令,会自动清除掉所有处于停止状态的容器。 此外,还可以通过 docker [container ] kill 直接发送 SIGKILL 信号来强行终止容器。 docker [container] restart 命令会将一个运行态 的容器先终止,然后再重新启动。

3. 进入容器

1. attach 命令

attach 是 Docker 自带的命令,命令格式为:

代码语言:javascript
复制
docker [container] attach [--detach-keys[=[]]] [--no-stdin] [--sig-proxy[=true]] CONTAINER

这个命令支持三个主要选项:

  • --detach-keys[=[]]: 指定退出 attach 模式的快捷键序列, 默认是 CTRL-p,CTRL-q;
  • --no-stdin=true|false: 是否关闭标准输入,默认是保持打开;
  • --sig-proxy=true|false: 是否代理收到的系统信号给应用进程,默认为 true 。
在这里插入图片描述
在这里插入图片描述

然而使用 attach 命令有时候并不方便 。 当多个窗口同时 attach 到同一个容器的时候,所有窗口都会同步显示;当某个窗口因命令阻塞时,其他窗口也无法执行操作了 。

2. exec 命令

从 Docker 的 1.3.0 版本起, Docker 提供了一个更加方便的工具 exec 命令,可以在运行中容器内直接执行任意命令 。 该命令的基本格式为:

代码语言:javascript
复制
docker [container] exec [-d|--detach] [--detach-keys[=[]] [-i|--interactive] [--piivileged] [-t|--tty] [-u|--user [=USER]] CONTAINER COMMAND [ARG . . . ]

比较重要的参数有:

  • -d, --detach: 在容器中后台执行命令;
  • –detach-keys=“ ”: 指定将容器切回后台的按键;
  • -e, --env=[]: 指定环境变量列表 ;
  • -i, --interactive=true|false: 打开标准输入接受用户输入命令, 默认值为false;
  • –privileged=true|false: 是否给执行命令以高权限,默认值为 false;
  • -t, --tty=true|false: 分配伪终端,默认值为 false;
  • -u, --user="": 执行命令的用户名或 ID 。

4. 删除容器

可以使用 docker [container] rm 命令来删除处于终止或退出状态的容器,命令格式为docker [container] rm [-f|--force] [-l|--link] [-v|--volumes] CONTAINER [CONTAINER ... ]。 主要支持的选项包括 :

  • -f, --force=false: 是否强行终止并删除一个运行中的容器 ;
  • -l, --link=false: 删除容器的连接 ,但保留容器;
  • -v, --volumes=false: 删除容器挂载的数据卷 。

默认情况下, docker rm 命令只能删除已经处于终止或退出状态的容器,并不能删除还处于运行状态的容器 。 如果要直接删除一个运行中的容器,可以添加 -f 参数,Docker 会先发送 SIGKILL 信号给容器,终止其中的应用,之后强行删除 。

5. 导入和导出容器

1 . 导出容器

导出容器是指,导出一个已经创建的容器到一个文件,不管此时这个容器是否处于运行状态 。 可以使用 docker [container ] export 命令,该命令格式为:

代码语言:javascript
复制
docker [container] export [-o|--output [=""]] CONTAINER

其中,可以通过 -o 选项来指定导出的 tar 文件名,也可以直接通过重定向来实现。

2. 导入窑器

导出的文件又可以使用 docker [container ] import 命令导入变成镜像,该命令格式为 :docker import [-c|--change[=[]] [-m|-- message[=MESSAGE]] file|URL| [REPOSITORY [:TAG]] 用户可以通过 -c, --change=[]选项在导入的同时执行对容器进行修改的 Dockerfile指令。 实际上,既可以使用 docker load 命令来导入镜像存储文件到本地镜像库,也可以使用 docker [container] import 命令来导入一个容器快照到本地镜像库。 这两者的区别在于:容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积更大。 此外,从容器快照文件导人时可以重新指定标签等元数据信息 。

6. 查看容器

1 . 查看容器详情

查看容器详情可以使用 docker container inspect [OPTIONS] CONTAINER [CONTAINER . .. ]子命令 。 例如,查看某容器的具体信息,会以 json 格式返回包括容器 Id 、 创建时间、路径、状态、镜像、配置等在内的各项信息:

在这里插入图片描述
在这里插入图片描述
2. 查看窑器内进程

查看容器内进程可以使用 docker [container] top [OPTIONS] CONTAINER [CONTAINER ... ] 子命令 。 这个子命令类似于 Linux 系统中的 top 命令,会打印出容器内的进程信息,包括 PID 、用户、时间、命令等 。 例如,查看某容器内的进程信息,命令如下:

在这里插入图片描述
在这里插入图片描述
3. 查看统计信息

查看统计信息可以使用 docker [container] stats [OPTIONS] [CONTAINER ... ]子命令,会显示 CPU 、内存、存储、网络等使用情况的统计信息 。 支持选项包括 :

  • -a, -all: 输出所有容器统计信息,默认仅在运行中;
  • -format string: 格式化输出信息;
  • -no-stream: 不持续输出,默认会自动更新持续实时结果;
  • -no-trunc: 不截断输出信息 。

7. 其他容器命令

1. 复制文件

container cp 命令支持在容器和主机之间复制文件。 命令格式为 docker [container] cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH |- 。 支持的选项包括:

  • -a, -archive: 打包模式,复制文件会带有原始的 uid/gid 信息;
  • -L, -follow-link: 跟随软连接。当原路径为软连接时, 默认只复制链接信息,使用该选项会复制链接的目标内容 。
2. 查看变更

container diff 查看容器内文件系统的变更。 命令格式为 docker [container] diff CONTAINER

3. 查看端口映射

container port 命令可以查看容器的端口映射’情况。 命令格式为 docker container port CONTAINER [PRIVATE_PORT[/PROTO ]]

4. 更新配置

container update 命令可以更新容器的一些运行时配置,主要是一些资源限制份额。命令格式为 docker [container] update [OPTIONS] CONTAINER [CONTAINER .. . ]

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-11-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 创建容器
    • 1. 新建容器
      • 2. 启动容器
        • 3 . 新建井启动容器
          • 4.守护态运行
          • 2. 停止容器
            • 1. 暂停容器
              • 2. 终止容器
              • 3. 进入容器
                • 1. attach 命令
                  • 2. exec 命令
                  • 4. 删除容器
                  • 5. 导入和导出容器
                    • 1 . 导出容器
                      • 2. 导入窑器
                      • 6. 查看容器
                        • 1 . 查看容器详情
                          • 2. 查看窑器内进程
                            • 3. 查看统计信息
                            • 7. 其他容器命令
                              • 1. 复制文件
                                • 2. 查看变更
                                  • 3. 查看端口映射
                                    • 4. 更新配置
                                    相关产品与服务
                                    容器服务
                                    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                                    领券
                                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档