命令补充

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. C# StackTrace

    StackTrace trace = new StackTrace(); //获取是哪个类来调用的 Type type = trace.GetFrame().GetMethod().Declaring ...

  2. @Validated和@Valid的区别?校验级联属性(内部类)

    每篇一句 NBA里有两大笑话:一是科比没天赋,二是詹姆斯没技术 相关阅读 [小家Java]深入了解数据校验:Java Bean Validation 2.0(JSR303.JSR349.JSR380) ...

  3. 【Android】SDK Manager 设置代理

    这里是 Mac 系统下,Windows 环境类似.打开 Android SDK Manager, Proxy Settings 设置如下所示: PS: 注意勾选 "Force https:/ ...

  4. Asp.Net MVC HttpPost用法

    一个Action只能用一个http 特性,例如:HttpPost 不能与HttpGet 或者多个HttpPost重复使用,否则会出错 也可以用 [AcceptVerbs("put" ...

  5. springboot+kafka+邮件发送(最佳实践)

    导读 集成spring-kafka,生产者生产邮件message,消费者负责发送 引入线程池,多线程发送消息 多邮件服务器配置 定时任务生产消息:计划邮件发送 实现过程 导入依赖 <proper ...

  6. TensorFlow学习笔记——深层神经网络的整理

    维基百科对深度学习的精确定义为“一类通过多层非线性变换对高复杂性数据建模算法的合集”.因为深层神经网络是实现“多层非线性变换”最常用的一种方法,所以在实际中可以认为深度学习就是深度神经网络的代名词.从 ...

  7. JS 中构造函数和普通函数的区别

    原来只是随意的了解了下 , 但是最近有点忘了 于是详细了解下 加深下印象. 1.构造函数也是一个普通函数,创建方式和普通函数一样,但构造函数习惯上首字母大写 2.构造函数和普通函数的区别在于:调用方式 ...

  8. WIZnet-io6Library下载及使用

    概观 io6Library是一个IPv6集成库,可以轻松集成和管理使用WIZnet硬连线双TCP / IP堆栈控制器(WIZCHIP)产品系列的用户应用程序. io6Library用于管理依赖于用户特 ...

  9. powerdesign进军(一)--安装破解

    目录 资源下载地址 安装powerdesign 破解powerdesign 汉化 总结 IT行业不管是web开发还是客户端开发都需要数据库,因为现在是数据时代能够拥有强大的数据就是行业的王者.目前一些 ...

  10. DC-2靶机

    DC-2 靶机获取:http://www.five86.com/ 靶机IP:192.168.43.197(arp-scan l) 攻击机器IP:192.168.43.199 在hosts文件里添加:1 ...