命令补充

docker信息与帮助

  • docker version 和 docker info
  • docker --help 查看所有docker命令列表
  • docker --help run/commit/... 查看指定docker命令用法

镜像命令

  • 本机镜像列表 docker images

    -a 列出本机所有镜像(包括中间层)

    -q 只显示镜像ID

    --digests 显示镜像的摘要信息

    --no-trunc 显示完整镜像ID
  • 镜像查询获取 docker search 镜像[:tag]; docker pull 镜像[:tag]
  • 镜像删除
    • 单个删除 docker rmi 镜像id/name(-f强制删除)
    • 删除多个 docker rmi -f img1:tag img2:tag ...
    • 删除所有 docker rmi -f $(docker images -qa)
  • 镜像提交(commit)与推送(push)云端-类比GitHub
  • 镜像保存(save)与加载(load)

    想要移植某个提交的状态镜像,但是推送云端太麻烦。

    可以将一个或多个镜像保存为文件,然后载入这个文件达到目的。

    实验开始:将centos和hello-world镜像移植

    1)拉取centos和hello-world镜像

    docker pull centos

    docker pull hello-world

    2)镜像保存为文件

    docker save centos hello-world -o /usr/local/mydocker/myimages.package

    3)删除原来的镜像

    docker rmi centos hello-world

    4)载入镜像

    docker load -i /usr/local/mydocker/myimages.package

容器命令

  • 新建并启动容器 docker run [options] 镜像id/name

    --name 为该容器指定一个名字

    -d 后台运行容器,返回容器ID,用于启动守护式容器(tomcat容器)

    -i 以交互模式运行容器,通常与 -t 一起用(centos容器)

    -t 给容器新分配一个输入终端(bash)

    -P 随机端口映射

    -p 指定端口映射
  • 运行容器列表查看 docker ps

    -a 历史容器(包括停止的,启动失败的)

    -l 查看最近容器

    -n 查看最近n次的容器

    -q 只显示容器ID
  • 容器停止和启动 docker stop/start/restart 容器id/name

    强制停止容器(Exited) docker kill 容器id/name
  • 删除已停止(Exited)的容器 docker rm 容器id/name

    此时docker ps -a 看不到容器记录了

    docker rm -f 容器id/name强删,如果有运行的,会先进行stop
  • 退出容器交互(已进入容器/集装箱内)
    • exit 退出并停止容器(Exited)
    • Ctrl-P+Q 回到宿主机环境,不停止容器
  • 查看容器内运行进程 docker top 容器id/name

    docker --help|grep top == Display the running processes of a container

  • 查看容器日志 docker logs 容器id/name

    -f 跟随最新日志

    -t 打印时间戳

    --tail n 显示最后n条
    实验开始:
    1 运行centos镜像容器,持续打印日志
    `docker run --name mycentos -d centos /bin/sh -c "while true; do echo hello mycentos; sleep 2; done"`
    2 查看容器日志 `docker logs mycentos -ft --tail 5`
    3 查看容器内运行进程 `docker top mycentos`
  • 查看容器内部细节 docker inspect mycentos

    打印JSON对象文本,描述了该容器的细节信息,比如容器id,创建时间,运行路径,运行参数,状态等等。
  • 继续与运行的容器进行交互
    • docker attach mycentos

      回到该容器内部Linux
    • docker exec -t mycentos ls -lrt

      对目标容器施加命令,获取输出,隔山打牛

      docker exec -it mycentos /bin/bash效果和attach一样
  • 容器内文件拷贝至宿主机 docker cp mycentos:/test.txt /

    注:停止/退出(stop-Exited)的容器,运行期文件不会消失(系统开关机),但docker rm后,文件消失(重装了系统一样..)。

    真正使用时,应该使用容器数据卷来达到容器运行数据持久化的目的。
  • 运行容器状态镜像提交 docker commit -a "作者" -m "描述" 容器id/name 新镜像版本名[:tag]
    实验开始:
    1)运行官方centos镜像,容器内新建文件111.txt
    docker run --name mycentos -it centos /bin/bash
    touch /usr/local/111.txt
    2)临时退出容器,进行容器镜像提交
    docker commit -a "Richard" -m "add 111.txt" mycentos hwc/centos
    //执行成功会返回新的镜像ID
    3)查看本地镜像,运行新的镜像,进入看是否有新增的/usr/local/111.txt

容器数据卷(volume)

容器卷概述

  • 卷即目录或文件,容器卷的设计目的就是为了容器数据的持久化。
  • 当容器被删除后,容器内运行时产生的数据也消失了,我们希望对齐持久化,类比Redis中的数据持久化的rdb和aof文件。
  • 我们还希望容器和宿主文件共享,容器之间文件共享。
  • 容器卷存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此可以绕开UnionFS提供一些用于数据持久化和共享的特性。
  • 容器卷独立于容器的生存周期,Docker容器退出会删除时不会删除其挂载的容器卷。
  • 容器卷特点
    • 容器卷可在容器之间共享和重用数据
    • 卷中的更改直接生效,但不会影响到提交的镜像中(即数据卷容器提交的镜像,运行时不会挂载原容器卷,从docker inspect的信息中可以看出这点)

开始使用

  • 容器运行添加容器卷

    docker run -v /宿主机文件目录:/容器内文件目录[:ro] 镜像id/name

    可以追加:ro设置容器卷为容器只读。追加多个-v则可挂载多个容器卷。

    另一种挂载容器卷的方式是编写/改写DockerFile描述构建镜像运行。
    实验开始:
    1)运行centos容器,-v 挂载一个容器卷
    docker run --name mycentos -it -v /usr/local/dcVolume/mycentos:/usr/local/dcVolume centos;
    2)docker inspect mycentos 可以看到挂载信息
    "Binds": [
    "/usr/local/dcVolume/mycentos:/usr/local/dcVolume"
    ]
    3)容器内外创建修改文件验证共享性
  • 数据卷容器(--volumes-from 容器间传递共享)
    • 即挂载了容器卷的容器,其他容器运行时可以继承这个父容器实现容器间数据的共享。
    • 实验开始
    1)先运行一个数据卷容器
    docker run --name mycentos00 -it -v /usr/local/dcVolume/mycentos:/usr/local/dcVolume centos;
    2)运行两个新的相同镜像容器,继承容器卷运行
    docker run --name mycentos01 -it --volumes-from mycentos00 centos;
    docker run --name mycentos02 -it --volumes-from mycentos00 centos;
    3)可以看到这三个容器内都有 /usr/local/dcVolume 目录
    4)宿主机fs新建一个host.txt文件,三个容器中都会出现
    5)容器间修改目录文件,宿主机fs和容器间会实时同步

docker进阶1-命令补充和容器卷使用的更多相关文章

  1. Docker进阶:容器卷、DockerFile、Docker网络原理

    1.Docker镜像 1.1镜像是什么 镜像是一种轻量级.可执行的独立软件包,用来打包软件运行环境和机遇运行环境开发的软件. 包含一个软件的所有内容.蒋所有的应用和环境,直接打包为docker镜像,直 ...

  2. 『现学现忘』Docker常用命令 — 20、容器常用命令(二)

    提示:接上一篇 目录 9.后台启动容器 10.查看容器日志 11.查看容器内运行的进程 12.查看容器内部细节 9.后台启动容器 后台启动容器也叫启动守护式容器. 命令:docker run -d 镜 ...

  3. Docker操作笔记(二)容器

    容器 一.启动容器 启动一个容器有两种方式: 1.基于镜像新键并启动一个容器: 所需要的主要命令为docker run docker run ubuntu:18.04 /bin/echo " ...

  4. 1.docker介绍、命令、容器、镜像、数据卷、Dockerfile、常用软件安装、推送阿里云

    一.docker介绍 1.docker是什么 一款产品从开发到上线,从操作系统,到运行环境,再到应用配置.作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各 ...

  5. Docker(七):Docker容器卷管理

    1.使用容器卷的原因:Docker容器产生的数据,如果不通过commit生成新的镜像,数据会在容器删除后丢失.为了能持久化保存和共享容器的数据,Docker提出了两种管理数据的方式:数据卷和数据卷容器 ...

  6. docker进阶篇(一) ---- Volume(数据卷)

    引言 docker的镜像是由多个只读的文件系统叠加在一起形成的.当我们在我启动一个容器的时候,docker会加载这些只读层并在这些只读层的上面(栈顶)增加一个读写层.这时如果修改正在运行的容器中已有的 ...

  7. Docker学习笔记之docker volume 容器卷的那些事(二)

    预览目录 更改目录拥有者 Data Container 切换用户 参考文章 0x00 概述 如果你读了docker volume 容器卷的那些事(一),我想应该不会遇到下面这些问题的,毕竟是具有指导意 ...

  8. Docker学习笔记之docker volume 容器卷的那些事(一)

    预览目录 volume 方式 相关用例 使用方式 使用 volume driver bind mount 方式 相关用例 使用方式 配置selinux标签 配置macOS的安装一致性 tmpfs 方式 ...

  9. 创建基于 AFS 的 Docker 容器卷

    标准的 Docker 容器卷一般是位于 Docker 主机上的一个本地目录.在这样的配置下,容器必须依赖于一台特定的主机,因此使得容器的迁移和扩展变得困难.通过使用容器卷插件,能让容器访问独立于主机的 ...

随机推荐

  1. 菜单(menu)

    菜单 menu ——菜单默认隐藏 ——实现菜单的接口: Menu,父接口,用于创建主菜单 SubMenu继承Menu接口,用于创建子菜单 ContextMenu接口继承Menu接口,用于创建上下文菜单 ...

  2. JVM执行原理

    ,Java是一种技术,它由四方面组成:Java编程语言.Java类文件格式.Java虚拟机和Java应用程序接口(Java API).它们的关系如下图所示: 运行期环境代表着Java平台,开发人员编写 ...

  3. JDBC连接mysql数据库操作详解

    1.什么是JDBC JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Jav ...

  4. HTTP_4_返回结果的HTTP状态码

    状态码:返回请求结果. 状态码种类繁多,以下总结常用的状态码:     类别 信息性状态码 1XX 服务器接受请求,继续处理       成功状态码 200 OK 请求处理成功,并返回资源(响应报文中 ...

  5. isMemberOfClass、isKindOfClass原理分析

    isMemberOfClass - 调用者必须是传入的类的实例对象才返回YES- 判断调用者是否是传入对象的实例,别弄反了,如 [s1 isMemberOfClass:p1] ,意思是s1是否是p1的 ...

  6. Cocos经典游戏教程之仿皇室战争

    版权声明: 本文原创发布于博客园"优梦创客"的博客空间(网址:http://www.cnblogs.com/raymondking123/)以及微信公众号"优梦创客&qu ...

  7. 超实用,Linux中查看文本的小技巧

    日常开发中,我们经常需要在服务器上进行各种文本,日志的查看操作,本文主要对常用的文本,日志查看技巧进行了一番总结和归纳,方便大家收藏起来后续查看使用: tail命令查看日志信息 实时监控日志: tai ...

  8. SBT安装及命令行打包spark程序

    1.从https://www.scala-sbt.org/download.html官网上寻找所需要的安装包 可以直接本地下载完扔进去也可以wget路径,在这里我用的是sbt1.2.8版本的,下载到/ ...

  9. 100天搞定机器学习|day37 无公式理解反向传播算法之精髓

     100天搞定机器学习(Day1-34) 100天搞定机器学习|Day35 深度学习之神经网络的结构 100天搞定机器学习|Day36 深度学习之梯度下降算法 本篇为100天搞定机器学习之第37天,亦 ...

  10. 十分钟入门流处理框架Flink --实时报表场景的应用

    随着业务的发展,数据量剧增,我们一些简单报表大盘类的任务,就不能简单的依赖于RDBMS了,而是依赖于数仓之类的大数据平台. 数仓有着巨量数据的存储能力,但是一般都存在一定数据延迟,所以要想完全依赖数数 ...