Docker配置容器位置和小技巧
Docker使用小技巧
清理全部停止的docker容器
有时候我们会有很多已经停止的容器或者由于错误强制退出不能用的容器,那我们就需要删除了,但是我们一个一个的rm删除很麻烦,有多少容器就要rm多少次,我们可以根据docker ps -qa 查出所有容器的id,一次性全部删除,不用担心会删除正在运行的容器,运行中的容器rm无法删除,这样我们就一次性把所有停止的容器删除了
# 只适用于Linux环境下
docker rm $(docker ps -qa)
查看镜像中得环境变量
当我们制作好一个镜像或者获取到一个镜像之后如果我们想知道他的环境变量,我们首先想到的就是创建容器看看就知道了,其实不必,我们可以直接通过env查看
docker run nginx env

Windows上和Linux的区别
这两种环境的区别主要原因还是docker的支持问题,我们都知道docker最开始是在Linux上发行的,依赖于Linux内核,但是Windows上没有,那么我们现在是怎么用的呢,虚拟机,如果是win10以下版本基本上装的都是VirtualBox,win10的很多都会选择桌面版的,使用的Hyper-V ,也是虚拟机的一种。只有有了虚拟机之后docker才能在windows上使用,到这里我们应该知道两种不同之处了
在Linux上docker直接就在Linux系统上的,但是在windows上不同,windows系统上是虚拟机,虚拟机上才是docker
Linux系统 << docker容器
win系统 << 虚拟机 << docker容器
也就是这种原因,导致我们在使用的过程中有略微的不同,最常见的就是开端口的时候
Linux系统:docker容器端口直接映射到Linux系统
windows系统:docker容器端口映射到虚拟机,再由虚拟机映射到我们的windows
注: 把我们虚拟机中选择网络的时候选择网络地址转换(NAT),这样我们就不用考虑中间虚拟机到windows这层的端口映射问题了
挂载
在使用Docker的时候很多人都喜欢制作镜像,把应用直接打包到镜像中,直接启动镜像,一切OK,但是避免不了的是我们有时候会做一些细微的修改,特别是配置文件或者是一些项目中微小的修改,这种时候我们还是要重新做镜像吗?答案是不需要的,没有必要
我们前端使用nginx镜像部署,但是发布之后发现有一点样式需要微调,那么我们是不是还需要重新制作一个镜像呢,这样我们会不会感觉很麻烦(至少我会感觉很麻烦),想想我们只需要把修改过的文件把容器中的文件覆盖就行了,怎么样才能直接把修改过的文件覆盖容器中的文件,两种办法:第一直接把文件cp到容器中,这个过程我们还是要操作容器,怎么才能不动容器呢?挂载 我们可以在启动容器的时候直接把会在后面修改的东西挂载到宿主机上,这样我们就不用动容器了,启动的时候使用-v参数挂载宿主机文件或目录到容器
docker run -d -p 80:80 -v /c/Users/SunArmy/Desktop/html:/usr/share/nginx/html nginx


我们随便写一个index.html里面写上welcome nginx
把这个文件覆盖/opt/docker/html/下的index.html
再访问

重启都不需要直接OK
为什么不选择直接cp到容器中
有这样一种情况,如果你需要修改的是配置文件,这肯定是需要重启的,但是在修改的时候不小心把配置文件写错了,这个时候你的容器就起不来了,想要修改容器中的配置,那也做不到了(除非重新创建容器),换种做法,如果我们把配置文件挂载在外面当你启动不起来的时候你可以直接在宿主机上修改为正确配置重启启动即可,综上,挂载的方式比cp到容器中的方式方便且安全
jq工具
最后介绍一个操作json的工具,这个是在查看容器配置的时候用的,我们使用docker inspect ID查看容器配置,往往会过滤出来一些我们关注的信息,一般情况下我们会选择docker inspect --format= 或者使用grep
但是无论使用哪一种都没有我们最熟悉的操作json的方式来过滤用着爽
jq工具需要单独安装yum install jq
使用jq过滤docker inspect 获取地址
docker inspect ac |jq -r .[0].NetworkSettings.IPAddress
. 代表管道前面的输出,之后的[0]就是数组的第1个元素,后面的 . 就是类似于点出对象中的属性一样,跟我们平时使用json是一样的,jq还能方便的格式化查看json文件,对于在命令行下查看json文件简直是利器

修改Docker本地镜像和容器的存储位置
很多人都是只知道创建了容器,从来没有关注过创建的容器在哪?本地镜像在哪?
但是,当你不得不关注的时候往往就是你的docker镜像和容器把你的盘装满了
查看Docker镜像和容器存储的位置
docker info |greo Docker
默认位置就是:/var/lib/docker
修改存储位置的方法有两种:
一):通过建立软连接,把/var/lib/docker 移动到其他地方,建立到这里的软连接
# 停止docker
service docker stop
# 移动/var/lib/docker 到/usr/local/
mv /var/lib/docker /usr/local/
# 建立软连接
ln -s /usr/local/docker /var/lib/docker
# 启动Docker
service docker start
这个时候我们已经修改了,但是查看位置的时候看到的位置还是/var/lib/docker
但是这是个链接,可以查看大小发现是空的,真实的存储位置已经成为了/usr/local/docker
# 查看/var/lib/docker目录大小
du -dh /var/lib/docker
二):修改配置文件
默认配置文件/etc/docker/daemon.json
如果没有的话就自己创建
{
"registry-mirrors": ["http://hub-mirror.c.163.com"],
"graph":"/opt/docker"
}
直接修改 graph 的值为你的位置然后重启,OK
启动
service docker stop
停止
service docker start
重启
service docker restart
再查看docker的存储位置,已经修改成功
Docker配置容器位置和小技巧的更多相关文章
- docker配置容器运行jar包
拉取jdk镜像文件 # docker pull huanwei/alpine-oraclejdk8 创建文件夹编写Dockerfile文件 # mkdir docker # vi Dockerfile ...
- Docker配置本地镜像与容器的存储位置
默认情况下Docker的存放位置为:/var/lib/docker 可以通过下面命令查看具体位置: sudo docker info | grep "Docker Root Dir" ...
- docker容器安装及使用技巧
关于docker前言 A)首先是关于虚拟化 虚拟化我们可以简单的理解为一种资源管理方式.有如下几种虚拟化的方式: 1.完全虚拟化:对底层硬件实现完全的虚拟.例如:Vmware Workstation ...
- docker容器存放目录磁盘空间满了,转移数据修改Docker默认存储位置
原文:docker容器存放目录磁盘空间满了,转移数据修改Docker默认存储位置 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_3767485 ...
- docker-8 docker小技巧
docker使用小技巧 杀死所有正在运行的容器 docker kill $(docker ps -a -q) 删除所有的已经停止的容器 docker rm $(docker ps -a -q) 删除所 ...
- Docker学习3-简单shell脚本安装mysql5.7与docker小技巧
前言 玩过Windows中的 .bat 的小伙伴是不是觉得很有意思呢,github中一键推送.同步拉取等等操作,哈哈,当然shell脚本也是很类似,可以运行一个脚本就可以自动给我们部署好环境啦!但是这 ...
- docker的小技巧记录(如果使用了更多会继续添加)
docker小技巧 复制本地sql脚本到docker容器mysql中进行使用 # 找到容器 docker ps # 复制文件 cp ./xxx.sql container-id:/tmp/ # 进入容 ...
- docker之容器日志存储位置及把运行日志记录至文件
参考:https://www.cnblogs.com/YatHo/p/7866029.html docker启动后日志会在以下位置 /var/lib/docker/containers/容器ID/容器 ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(十四)——开发环境容器调试小技巧
之前有很多同学提到如何做容器调试,特别是k8s环境下的容器调试,今天就讲讲我是如何调试的.大家都知道在vs自带的创建项目模板里勾选docker即可通过F5启动docker容器调试.但是对于启动在k8s ...
随机推荐
- JSON格式的服务接口
电商接口 京东获取单个商品价格接口: http://p.3.cn/prices/mgets?skuIds=J_商品ID&type=1 用例 ps:商品ID这么获取:http://item.jd ...
- arcserver开发小结(二)
一.关于服务器上下文 1,服务器上下文(ServerContext)本质上是一个GIS服务器上的进程,它是服务器端编程的起点. 2,只有本地资源才能得到服务器上下文,通常得到服务器上下文的主线是: M ...
- 不使用运算符(+、-、*、/) 来进行四则运算(C#)
最近在LeetCode 上刷题,遇到一个非常有趣的题目,题目的大概意思就是在不使用运算符的情况下实现两个数的加法...原题点这里>>> 说实话,刚看到这题目,我是一脸懵逼的. 后来仔 ...
- gcc和MinGW的异同(在cygwin/gcc做的东西可以无缝的用在linux下,没有任何问题,是在windows下开发linux程序的一个很好的选择)
cygwin/gcc和MinGW都是gcc在windows下的编译环境,但是它们有什么区别,在实际工作中如何选择这两种编译器. cygwin/gcc完全可以和在linux下的gcc化做等号,这个可以从 ...
- PHP获得指定日期所在星期的第一天和最后一天
function getdays($day){ $lastday=date('Y-m-d',strtotime("$day Sunday")); $firstday=date('Y ...
- liunx 常用操作命令
1.复制粘贴命令:在一行的任何位置按下yy,y是yanked拷贝的意思,然后去想粘贴的位置按下p即可.p是粘贴的意思. 2.如果想复制3行的话,按下3yy,就复制3行,如果想复制多行的话,直接按数字可 ...
- SDP开发平台试用版上线!提供源码!!!!
SDP开发平台提供试用版!! SDP软件快速开发平台是一套面向对象的应用软件快速开发平台. 1.SDP 设计端--页面设计 通过简单的拖拉控件,或者快速生成控件,可以在几分钟快速制作一个页面:如图 通 ...
- iOS 自定义UIButton
工作中有一个点击button更新button上文案的需求,用自定义了button可以很简单的实现的这个需求 首先写个自定义的button CustomButton.h #import <UIKi ...
- swift 如何控制view的显示与隐藏
swift 如何控制view的显示与隐藏 UIView有一个属性 hidden let line: UILabel = UILabel() 默认是显示的 需要显示它的时候:line.hidden = ...
- 人像美妆---妆容迁移算法研究(Makeup transfer)
原文:人像美妆---妆容迁移算法研究(Makeup transfer) 对于人像美妆算法,现在的美妆相机.玩美彩妆之类的app已经做的比较成熟了,但是具体算法,基本网络上是杳无可查,今天本人介绍一种自 ...