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 主机上的一个本地目录.在这样的配置下,容器必须依赖于一台特定的主机,因此使得容器的迁移和扩展变得困难.通过使用容器卷插件,能让容器访问独立于主机的 ...
随机推荐
- Centos7 安装Homestead环境2
历史命令, -- :: cd /etc/yum.repos.d/ -- :: wget http://download.virtualbox.org/virtualbox/rpm/rhel/virtu ...
- Pow共识算法
谈到哈希算法,每个程序员都不陌生,但是谈到比特币共识算法PoW,如果没有接触过的技术人员可能觉得应该会很复杂,毕竟全球的比特币节点数量如此庞大,达成共识的算法应该不会很简单.但其实如果你已掌握哈希算法 ...
- 【Laravel】 安装及常用的artisan命令
composer Laravel 安装 cmd composer create-project laravel/laravel Laravel5 之后自动创建 常用的artisan命令 全局篇 查看a ...
- C#文件下载流程
private bool DownloadPicture(string picUrl, string savePath, int timeOut) { bool ...
- php 获取未来七天的日期和星期
php获取未来七天的日期和星期代码 for($i=4;$i<8;$i++){ $dateArray[$i]=date('Y-m-d',strtotime(date('Y-m- ...
- Git 服务使用搭建集合
Git 服务使用搭建集合 一.本地Git 仓库搭建与使用 1.Git 概念介绍 版本控制系统 版本控制是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统.大部分时候我们使用最频繁的还是对源 ...
- 【React踩坑记三】React项目报错Can't perform a React state update on an unmounted component
意思为:我们不能在组件销毁后设置state,防止出现内存泄漏的情况 分析出现问题的原因: 我这里在组件加载完成的钩子函数里调用了一个EventBus的异步方法,如果监听到异步方法,则会更新state中 ...
- jenkins部署自动化项目备注
一.定时任务部署: 第一个*表示分钟,取值0~59 第二个*表示小时,取值0~23 第三个*表示一个月的第几天,取值1~31 第四个*表示第几月,取值1~12 第五个*表示一周中的第几天,取值0~7, ...
- javascript 异步请求封装成同步请求
此方法是异步请求封装成同步请求,加上token验证,环境试用微信小程序,可以修改文件中的ajax,进行封装自己的,比如用axios等 成功码采用标准的 200 到 300 和304 ,需要可以自行修改 ...
- Spring IoC源码解析之invokeBeanFactoryPostProcessors
一.Bean工厂的后置处理器 Bean工厂的后置处理器:BeanFactoryPostProcessor(触发时机:bean定义注册之后bean实例化之前)和BeanDefinitionRegistr ...