docker进阶1-命令补充和容器卷使用
命令补充
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 attach mycentos
- 容器内文件拷贝至宿主机
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-命令补充和容器卷使用的更多相关文章
- Docker进阶:容器卷、DockerFile、Docker网络原理
1.Docker镜像 1.1镜像是什么 镜像是一种轻量级.可执行的独立软件包,用来打包软件运行环境和机遇运行环境开发的软件. 包含一个软件的所有内容.蒋所有的应用和环境,直接打包为docker镜像,直 ...
- 『现学现忘』Docker常用命令 — 20、容器常用命令(二)
提示:接上一篇 目录 9.后台启动容器 10.查看容器日志 11.查看容器内运行的进程 12.查看容器内部细节 9.后台启动容器 后台启动容器也叫启动守护式容器. 命令:docker run -d 镜 ...
- Docker操作笔记(二)容器
容器 一.启动容器 启动一个容器有两种方式: 1.基于镜像新键并启动一个容器: 所需要的主要命令为docker run docker run ubuntu:18.04 /bin/echo " ...
- 1.docker介绍、命令、容器、镜像、数据卷、Dockerfile、常用软件安装、推送阿里云
一.docker介绍 1.docker是什么 一款产品从开发到上线,从操作系统,到运行环境,再到应用配置.作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各 ...
- Docker(七):Docker容器卷管理
1.使用容器卷的原因:Docker容器产生的数据,如果不通过commit生成新的镜像,数据会在容器删除后丢失.为了能持久化保存和共享容器的数据,Docker提出了两种管理数据的方式:数据卷和数据卷容器 ...
- docker进阶篇(一) ---- Volume(数据卷)
引言 docker的镜像是由多个只读的文件系统叠加在一起形成的.当我们在我启动一个容器的时候,docker会加载这些只读层并在这些只读层的上面(栈顶)增加一个读写层.这时如果修改正在运行的容器中已有的 ...
- Docker学习笔记之docker volume 容器卷的那些事(二)
预览目录 更改目录拥有者 Data Container 切换用户 参考文章 0x00 概述 如果你读了docker volume 容器卷的那些事(一),我想应该不会遇到下面这些问题的,毕竟是具有指导意 ...
- Docker学习笔记之docker volume 容器卷的那些事(一)
预览目录 volume 方式 相关用例 使用方式 使用 volume driver bind mount 方式 相关用例 使用方式 配置selinux标签 配置macOS的安装一致性 tmpfs 方式 ...
- 创建基于 AFS 的 Docker 容器卷
标准的 Docker 容器卷一般是位于 Docker 主机上的一个本地目录.在这样的配置下,容器必须依赖于一台特定的主机,因此使得容器的迁移和扩展变得困难.通过使用容器卷插件,能让容器访问独立于主机的 ...
随机推荐
- 【数据结构】B树、B+树详解
B树 前言 首先,为什么要总结B树.B+树的知识呢?最近在学习数据库索引调优相关知识,数据库系统普遍采用B-/+Tree作为索引结构(例如mysql的InnoDB引擎使用的B+树),理解不透彻B树,则 ...
- 理解SVG中的 viewport,viewBox, preserveAspectRatio
_ 阅读目录 一:理解viewport 二:理解viewBox 三:理解 preserveAspectRatio 回到顶部 一:理解viewport 该属性表示的是SVG可见区域的大小.或者也可以叫画 ...
- 10分钟了解一致性hash算法
应用场景 当我们的数据表超过500万条或更多时,我们就会考虑到采用分库分表:当我们的系统使用了一台缓存服务器还是不能满足的时候,我们会使用多台缓存服务器,那我们如何去访问背后的库表或缓存服务器呢,我们 ...
- lvs模式及算法
一.三种模式 (一).Virtual Servervia Network Address Translation(VS/NAT) 通过网路地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将 ...
- 8、JAVA中的用户输入(I/0交互过程)
这里在数组的学习中用到了用户输入,也就是交互模式,日常的数据,不可能每一次都是程序员定义好的,终究需要用户与程序之间进行交互,机器等待用户输入,用户通过键盘输入所需数据(数据包括,字符,字串,数值等) ...
- 定时器任务django-crontab的使用【静态化高频率页面,增加用户体验】【系统的定时器,独立于项目执行】【刘新宇】
页面静态化 思考: 网页的首页访问频繁,而且查询数据量大,其中还有大量的循环处理. 问题: 用户访问首页会耗费服务器大量的资源,并且响应数据的效率会大大降低. 解决: 页面静态化 1. 页面静态化介绍 ...
- Scala集合(四)
1. 集合 集合主要有三种: Sequence Map Set sequence是一种线性元素的集合,可能会是索引或者线性的(链表).map是包含键值对的集合,就像Java的Map,set是包含无重复 ...
- java学习-NIO(五)NIO学习总结以及NIO新特性介绍
我们知道是NIO是在2002年引入到J2SE 1.4里的,很多Java开发者比如我还是不知道怎么充分利用NIO,更少的人知道在Java SE 7里引入了更新的输入/输出 API(NIO.2).但是对于 ...
- 解读 PHP 的 P++提案
解读 PHP 的 P++提案 周末看到一篇文章说 PHP 创始人提议将 PHP 拉出新分支,创建 P++ 语言.随后阅读了一下 Zeev Suraski 发起的这个邮件列表,大致了解了一下,这里做个解 ...
- CMake入门-02-HelloWorld扩展
工作环境 系统:macOS Mojave 10.14.6 CMake: Version 3.15.0-rc4 Hello,World! 扩展-同一目录,多个源文件 (1) 新建 hello 目录,创建 ...