• 第3章 docker容器管理


    一、容器操作命令总结

    create

    创建容器

    start

    启动容器

    run

    创建并启动容器

    ps

    查看正在运行的容器

    logs

    查看容器输出信息

    pause

    暂停容器

    unpause

    取消暂停继续运行容器

    stop

    发送 SIGTERM 停止容器

    kill

    发送 SIGKILL 快速停止容器

    start

    启动容器

    restart

    重启容器

    attach

    attach 到容器启动进程的终端

    exec

    在容器中启动新进程,通常使用 “-it” 参数

    logs

    显示容器启动进程的控制台输出,用 “-f” 持续打印

    rm

    删除终止或退出的容器

    export

    导出已创建的容器到文件

    import

    导入文件成镜像

    [container] inspect

    查看容器具体信息

    [container] top

    查看容器内进程

    [container] stats

    查看容器统计信息

    [container] cp

    复制文件

    [container] diff

    查看文件系统变更

    [container] port

    查看端口映射

    [container] update

    更新运行时资源配置

    二、创建容器

    1.新建容器

    [root@docker~]# docker create -it ubuntu:latest

    新建的容器处于停止状态

    2.启动容器

    [root@docker ~]# docker start priceless_archimedes

    启动容器名称通过docker ps -a查看,粘贴names或者id值启动容器

    3.创建并启动容器

    docker run命令,等价于先执行docker create命令,然后执行docker start命令

    [root@docker ~]# docker run -it ubuntu /bin/bash
    • Docker中系统镜像的缺省命令是 bash,如果不加 -it bash 命令执行了自动会退出。这是因为如果没有衔接输入流,本身就会马上结束。加-it 后docker命令会为容器分配一个伪终端,并接管其stdin/stdout支持交互操作,这时候bash命令不会自动退出。
    • 服务类容器以 daemon 的形式运行,对外提供服务。比如 web server,数据库等。通过 -d 以后台方式启动这类容器是非常合适的。如果要排查问题,可以通过 exec -it 进入容器。
    • 工具类容器通常给能我们提供一个临时的工作环境,通常以 run -it 方式运行,执行 exit 退出终端,同时容器停止。
      | -d, --detach=false | 指定容器运行于前台还是后台,默认为false |
      | — | — |
      | -i, --interactive=false | 打开STDIN,用于控制台交互 |
      | -t, --tty=false | 分配tty设备,该可以支持终端登录,默认为false |
      | -u, --user=“” | 指定容器的用户 |
      | -a, --attach=[] | 登录容器(必须是以docker run -d启动的容器) |
      | -w, --workdir=“” | 指定容器的工作目录 |
      | -c, --cpu-shares=0 | 设置容器CPU权重,在CPU共享场景使用 |
      | -e, --env=[] | 指定环境变量,容器中可以使用该环境变量 |
      | -m, --memory=“” | 指定容器的内存上限 |
      | -p, --publish-all=false | 指定容器暴露的端口 |
      | -h, --hostname=“” | 指定容器的主机名 |
      | -v, --volume=[] | 给容器挂载存储卷,挂载到容器的某个目录 |
      | --volumes-from=[] | 给容器挂载其他容器上的卷,挂载到容器的某个目录 |
      | --entrypoint=“” | 覆盖image的入口点 |
      | --env-file=[] | 指定环境变量文件,文件格式为每行一个环境变量 |
      | --expose=[] | 指定容器暴露的端口,即修改镜像的暴露端口 |
      | --link=[] | 指定容器间的关联,使用其他容器的IP、env等信息 |
      | --lxc-conf=[] | 指定容器的配置文件,只有在指定–exec-driver=lxc时使用 |
      | --name=“” | 指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字 |
      | --net=“bridge” 容器网络设置 | bridge :使用docker daemon指定的网桥
      host:容器使用主机的网络
      container:NAME_or_ID >//使用其他容器的网路,共享IP和PORT等网络资源
      none:容器使用自己的网络(类似–net=bridge),但是不进行配置 |
      | --restart=“no” 指定容器停止后的重启策略,默认容器退出时不重启 | on-failure:容器故障退出(返回值非零)时重启
      always:容器退出时总是重启
      –rm=false 指定容器停止后自动删除容器(不支持以docker run -d启动的容器) |

    4.守护态后台运行

    [root@docker ~]# docker run -d ubuntu /bin/sh -c "while true; do echo hello; sleep 1; done"

    5.查看容器运行日志

    [root@docker ~]# docker logs 6a590199c02a

    三、停止容器

    1.暂停容器

    [root@docker~]# docker pause 6a590199c02a

    2.取消暂停继续运行容器

    [root@docker~]# docker unpause 6a590199c02a
    有时我们只是希望暂时让容器暂停工作一段时间,或者 dcoker host 需要使用 CPU,这时可以执行 docker pause。处于暂停状态的容器不会占用 CPU 资源,直到通过 docker unpause 恢复运行。

    3.终止容器

    [root@docker~]# docker stop 6a590199c02a

    使用docker kill可以强行终止容器
    当docker容器中的应用终止时,容器也会自动终止

    四、进入容器

    1.使用attach命令进入容器

    [root@docker  ~]# docker attach boring_bell 

    当多个窗口同时attach到一个容器时,所有窗口都会同步显示,当某个窗口阻塞时,其他窗口也无法操作

    2.使用exec命令进入容器

    [root@docker  ~]# docker exec -it 8e3b24402577 /bin/bash 
    • attach 直接进入容器 启动命令 的终端,不会启动新的进程。
    • exec 则是在容器中打开新的终端,并且可以启动新的进程。
    • 如果想直接在终端中查看启动命令的输出,用 attach;其他情况使用 exec。

    选项

    作用

    --detach, -d

    后台运行模式,在后台执行命令相关命令

    --detach-keys

    覆盖容器后台运行的一些参数信息

    --env, -e

    设置环境变量

    --interactive, -i

    展示容器输入信息STDIN

    --privileged

    为命令提供一些扩展权限

    --tty, -t

    命令行交互模式

    --user, -u

    设置用户名(format: [:])

    --workdir, -w

    指定容器内的目录

    3.启动容器并指定名称

    [root@admin  ~]#docker run -d 

    五、删除容器

    1.使用docker rm删除已终止或退出的容器

    [root@docker ~]# docker rm e4af2433d094

    -f

    通过SIGKILL信号强制删除一个运行中的容器

    -l

    移除容器间的网络连接,而非容器本身

    -v

    删除与容器关联的卷

    • docker rm 是删除容器,而docker rmi 是删除镜像

    六、导入和导出容器

    1.导出容器

    • 导出容器是指,导出一个已经创建的容器到一个文件,不管此时该容器是否处于运行状态
    1. [root@docker~]# docker export -o centos.tar f0761a1df372
    2. [root@docker~]# docker export -o f0761a1df372 > centos.tar

    2.导入文件成为镜像

    1. [root@docker~]# docker import centos.tar centos:test
    2. [root@docker~]# docker load < busybox.tar.gz
    • docker import和docker load区别在于:load导入镜像存储文件,import导入容器快照文件。容器快照文件仅保存当前快照状态,丢弃所有历史记录和元数据信息,镜像存储文件将保存完整记录,体积更大。从容器快照文件导入时可以重新制定标签等元数据信息。

    七、查看容器

    1.查看容器详情信息

    [root@docker~]# docker inspect 8e3b24402577

    2.查看容器内进程

    [root@docker~]# docker top 8e3b24402577

    3.查看统计信息

    [root@docker~]# docker stats 8e3b24402577

    八、其他容器命令

    1.复制文件

    [root@docker~]# docker cp centos.tar 8e3b24402577:/

    2.查看容器文件系统的变更

    [root@docker~]# docker diff 8e3b24402577

    3.查看端口映射

    [root@docker~]# docker port 8e3b24402577

    4.更新容器运行时的配置,主要是资源限制

    [root@docker~]# docker update --cpu-period 100000 8e3b24402577

    5.容器直接互联

    • 启动mysql容器
    [root@docker~]# docker run --name mysqldb -p 3306:3306  -e MYSQL_ROOT_PASSWORD=my-pwd -d mysql:latest
    • 启动httpd容器与mysql容器互联
    [root@docker~]# docker run -it --name web --link mysqldb:webdb httpd /bin/bash
    • 测试链接

    第1章 docker基础

    第2章 docker镜像管理

  • 相关阅读:
    如果你要去拜访国外客户需要做哪些准备
    工业设计|设计就是生活
    k8s 基础入门
    含氟废水处理工艺案例
    MAC 通过IDEA启动tomcat,显示80端口被占用解决办法
    《QA离业务代码能有多近?》轻量级单元测试方案
    批量替换WordPress文章内图片链接
    【Spring Boot 源码学习】JedisConnectionConfiguration 详解
    三肽Gly-Cys-Gly、88440-55-5
    如何找出你的Windows 10的内部版本和版本号?这里提供两种方法
  • 原文地址:https://blog.csdn.net/zhuyangyong/article/details/127807088