Docker容器操-容器创建、启动、导入、导出等操作


Docker 容器创建与运行

容器的创建,启动,终止,及进入容器执行操作、删除容器等操作

1. 新建docker容器 – docker [container] create

create出来的容器时停止状态,并不是在执行中的容器。可以使用 docker [container] start 命令来启动它。

create 命令和run命令选项都十分复杂,需要慢慢熟悉。这些选项主要分级一下几大类:

  1. 与容器运行模式相关
  2. 与容器环境配置相关
  3. 与容器资源限制相关
  4. 安全保护

举例:

    docker  create -it centos:7 # 会返回id的编码,创建了一个交互式的容器 t 伪终端  i 持续打开标准输入

    docker  ps -a #可以看到创建的容器

    # 如何启动这个容器?
    docker  start 容器编码

    docker ps #可以查看启动的容器

    # docker run 的完整命令
    docker  run -it centos:7 [/bin/bash]

docker run 相当于 docker create + docker start + 进入容器的命令。
–rm 容器退出后,自动删除容器

2. docker [container] run 的执行细节

1. 检查本地是否存在指定的镜像, 如果不存在,则从公共仓库下载
2. 使用惊险创建一个容器,开启该容器
3. 分配一个文件系统给容器,并在制度的镜像层外面挂载一层可读写层
4. 从宿主主机配置的网桥接口桥接一个虚拟接口到容器中
5. 从网桥地址池中配置一个ip地址给容器
6. 执行用户指定的应用
7. 执行完毕后容器被自动终止

Docker容器里的应用关闭后,容器也会跟着一块退出。
进入centos容器伪终端后:

  1. exit 退出终端,centos容器也会随着退出。
  2. ctrl + p + q: 不停止容器实力的运行,退出伪终端。
给容器起个名字
docker run -it --name "mycentos7" centos:7

守护进程启动形式:
-d 来实现

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

3. 查看容器的输出信息 docker [container] logs

docker [container] logs常用选项包括:
-t, –timestamps: 显示时间错
-f, –follow: 持续保持输出
–tail string: 输出最近的若干日志

docker  logs -t -f --tail  3 container_id

4. 停止容器

4.1. 暂时停止 docker pause|unpause

docker [container] pause container_id|container_name [other_container_id|other_container_name]
处于pause状态下的容器,可以通过:
docker [container] unpause container_id|container_name [container_id_other|container_name_other]
恢复容器运行状态

4.2. 终止容器 docker stop|kill

  1. docker stop
    docker [container] stop container_id|container_name
    两个步骤:
    1) 首先向容器发送一个 SIGTERM信号
    2) 等待一段时间后(默认为10秒),在发送 SIGKILL信号来终止容器
  2. docker kill
    直接向容器发出SIGKILL信号
    docker [container] kill container_id|container_name
  3. 在容器内部停止应用运行
    exit等

    #批量停止容器
    docker stop $(docker ps -a -q)

5. 容器重启 docker restart

针对docker ps -a 列出来的容器,可以使用docker start重新启动的。
可以使用 docker restart 来重启容器。

6. 重新进入容器

6.1. docker attach 命令

docker attach container_id|container_name
存在问题:
当多个窗口同时 attach到一个容器时,所有窗口都会同步显示。
当某个窗口因命令阻塞时,其他窗口无法执行操作了。

6.2. docker exec命令

docker [container] exec [参数选项] container_id 子命令
参数选项:
-d –detach : 在容器后端执行,不开伪终端
-i 打开标准输入,接收用户输入命令, 默认为false
-t –tty=true 分配伪终端,默认为false

 docker exec -it 366149762dc0 /bin/bash
 # -it 交互式模式打开        执行/bin/bash应用

7. 删除容器 – 删除终止或者退出状态的容器 docker rm

docker [container] rm [-f | –force] [-l | –link] [-v | –volumes] container [other_container]
-f –force 是否轻质终止并删除一个运行中的容器
-l –link 删除容器的连接,保留容器
-v –volumes 删除容器挂载的数据卷

7.1. 批量删除容器方法: docker rm 命令

# 批量删除容器
docker rm $(docker ps -a -q) 

8. 导入和导出容器 export/import

导出一个已经创建的容器到一个文件,不管此时这个容器是否处于运行状态

8.1. 导出容器 export

实际生成容器的一个快照。

docker commit 与docker exportde 区别:

  1. docker export 不管容器是否运行,都可以导出。 docker commit只能运行中的容器才可以使用
    1. docker export生成容器的快照文件会丢弃所有历史记录和元数据信息(仓库名字,tag信息)(仅保留容器当前的快照状态)
      docker commit生成的镜像 存储文件将保存完成的记录, 体积比较大
      export导出的快照文件时,会丢失很多元数据, 在使用导出镜像,(docker run)启动容器时, 不要省略后面的子命令
sudo docker export -o mycentos.tar container

8.2. 导入容器,变成本地的镜像 import

docker [container] import 快照文件

# 由于快照不包含元数据,在导入时,需要指定镜像名和tag
docker improt xxx.tar centos:7.1
# 启动时 要带着后面子命令
docker  run -it centos:7.1 /bin/bash

9. 查看容器详情 inspect

docker [container] inspect container_id|container_name

10. 查看容器内部的进程 docker top

docker top container_id

11. 查看统计信息 docker stats

查看 CPU 内存 存储的基本信息
docker [container] stats [options] container
-a 所有容器的统计信息
–no-stream 不持续输出 默认会自动更新持续实时结果
–no-trunc 不截断输出信息

# 只显示一次结果后退出
docker stats --no-trunc --no-stream 286c5e4f5f2a

# 持续实时统计展示结果
docker stats --no-trunc  286c5e4f5f2a

12. 其他容器命令

12.1. 容器中文件与宿主机相互交换 docker cp

docker cp [options] container:src_path des_path

docker cp [options] src_path container:des_path
options支持的选项:
-a –archive: 打包模式,文件会带有原始的uit和git信息
-L –follow-link: 跟随软连接,如果当前路径为软连接,默认只会复制链接信息,不会复制目标内容,使用此参数,会复制连接的目标内容。

12.2. 查看容器变更 docker diff

查看容器内文件系统的变更
docker [container] diff container

docker diff 286c5e4f5f2a

执行结果:
docker diff 286c5e4f5f2a
C /tmp
A /tmp/test.txt
A /tmp/yum-container.log
D /tmp/yum.log

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注