Docker配置容器位置与小技巧总结

Docker使用小技巧

1、清理全部停止的docker容器

有时候我们会有很多已经停止的容器或者由于错误强制退出不能用的容器,那我们就需要删除了,但是我们一个一个的rm删除很麻烦,有多少容器就要rm多少次,我们可以根据docker ps -qa 查出所有容器的id,一次性全部删除,不用担心会删除正在运行的容器,运行中的容器rm无法删除,这样我们就一次性把所有停止的容器删除了

# 只适用于Linux环境下
docker rm $(docker ps -qa)

2、查看镜像中得环境变量

当我们制作好一个镜像或者获取到一个镜像之后如果我们想知道他的环境变量,我们首先想到的就是创建容器看看就知道了,其实不必,我们可以直接通过env查看

docker run nginx env

3、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这层的端口映射问题了

4、挂载

在使用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到容器中的方式方便且安全

1、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文件简直是利器

2、修改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的存储位置,已经修改成功

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。

(0)

相关推荐

  • nginx在docker容器中自动生成配置文件

    公司在搭建docker自动化部署时,需要制作一个nginx镜像在其docker run时通过外部指定环境变量使得容器中的配置文件自动生成,不需要再到容器里改配置文件. 实现思路 最后运行的命令大概是这样: docker run -d -p 80:80 -e xxx=xx 镜像名称 镜像中脚本路径 这里的脚本会代替dockerfile中的CMD指令,所以我们要构建一个自动生成且启动nginx的shell脚本. #!/bin/bash #从环境变量里面获取lt开头,为了与其他环境变量区别开,例如lt

  • Docker 手动配置容器网络实例详解

    Docker 手动配置容器网络 docker容器的网络是net命名空间与虚拟设备的结合,容器在启动时会创建一对虚拟接口veth pair,这一对接口分别放到本地和容器中,在本地的veth会被分配类似vethxxxx的名称并被桥接到指定网桥的上(默认为docker0),可以通过brctl show命令查看网桥上挂载的接口,在容器中的veth会从网桥获取一个未使用地址,该veth的名称会被更改为eth0并配置默认路由到vethxxxx,docker允许在启动容器的时候通过--net参数指定不同的网络

  • docker之点到点的容器网络的配置

    一.搭建容器之间的网络 1. 查看目前的网络环境 [root@liuxin-test01 ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft for

  • Docker容器配置Nginx实例分享

    作为目前最火的应用,Docker 确实存在着其独到之处,无论是程序猿还是运维都应该听说过 Docker 的大名,Docker 已经走过了许多的坑,目前最新版本是 v1.11.0 版本,应该说是完全能承载开发使用和运维监控,这款工具能帮助我们高效的打包.发布和运行承载着应用程序的容器系统.而且收集日志.帮助 App 的快速开发都有很大作用. 容器和虚拟机,经常是被拿出来对比的两款产品,实际上两者有着根本的差别,虚拟机是完全模拟了一台真实计算机,在上面运行的系统可能或者不可能知道自己运行在虚拟化环境

  • Docker配置容器位置与小技巧总结

    Docker使用小技巧 1.清理全部停止的docker容器 有时候我们会有很多已经停止的容器或者由于错误强制退出不能用的容器,那我们就需要删除了,但是我们一个一个的rm删除很麻烦,有多少容器就要rm多少次,我们可以根据docker ps -qa 查出所有容器的id,一次性全部删除,不用担心会删除正在运行的容器,运行中的容器rm无法删除,这样我们就一次性把所有停止的容器删除了 # 只适用于Linux环境下 docker rm $(docker ps -qa) 2.查看镜像中得环境变量 当我们制作好

  • SpringBoot2零基础到精通之自动配置底层分析及小技巧

    目录 1 自动配置底层分析 1.1 ​自动配置注解解析 1.2 修改默认配置 1.3 总结 1.4 最佳实践 2 开发小技巧 2.1 Lombok简化开发 2.2 伪热更新 2.3 创建Spring Initailizr项目 1 自动配置底层分析 1.1 ​自动配置注解解析 @SpringBootApplication注解是SpringBoot的核心注解,他是由以下三个注解总和而成. @SpringBootConfiguration 该注解底层有一个@Configuration注解,标明当前类是

  • Docker 配置容器固定IP的方法

    目录 前言 环境介绍 绑定步骤 跨主机容器互访 前言 之前使用pipework 分配静态ip是暂时的,重启之后就会失效,并且使用pipework绑定的ip 物理机,虚拟机,docker容器的ip都在同一网段,这在生产环境是很困难的,下面使用docker自带的network实现固定ip分配,并且重启不会消失. 环境介绍 绑定步骤 先操作192.168.1.105虚拟机 第一步:创建自定义网络 docker network create --subnet=172.172.0.0/24 docker-

  • springboot更新配置Swagger3的一些小技巧

    1.引入依赖,版本3.0.0只引入一个即可 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version> </dependency> 2. 配置类SwaggerConfig package org.fh.config; import org

  • docker日常使用的实用小技巧总结(推荐)

    前言 Docker 是一个能够把开发应用程序自动部署到容器的开源引擎.它由Docker公司的团队编写,基于Apache 2.0开源协议授权.它提供了一个简单.轻量的建模方式,使开发生命周期更高效快速,鼓励了面向服务的架构设计.Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案. Docker 的基础是 Linux 容器(LXC)等技术.在 LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便.用户操作 Docker 的容器就像操作一个快速轻

  • Docker配置本地镜像与容器的存储位置

    使用find命令找到大于指定大小的文件: find / -type f -size +10G 排除某个目录 find / -path "/media/xww" -type f -size +10G 修改Docker本地镜像与容器的存储位置的方法 方法一.软链接 默认情况下Docker的存放位置为:/var/lib/docker 可以通过下面命令查看具体位置: sudo docker info | grep "Docker Root Dir" 解决这个问题,最直接的方

  • Docker 配置阿里云容器服务操作

    配置阿里云Docker容器服务 登录 阿里云镜像服务控制台 首先要有一个自己的阿里云账号 1.点击名称空间,建议用自己名字/公司名字 比如叫 aliyun-stg 创建完成名字空间 2.点击镜像仓库,创建镜像,填写细信息 仓库可以使用Redis mysql 等名字进行管理 创建仓库 3.观察创建好后的信息 registry.cn-beijing.aliyuncs.com/aliyun-stg/flask 阿里docker域名 registry.cn-beijing.aliyuncs.com 我自

  • Docker 容器虚拟化的实用技巧总结

    服务器虚拟化指的是在操作系统与硬件之间加一层,叫做hypervisor层,对下控制硬件,对上承载操作系统,操作系统os以文件形式封装运行,称为虚拟机,主要解决的问题是硬件利用率和灵活性的问题,常见的方案为vmware vsphere,xen,kvm,hyper-v..容器虚拟化指的是在os上将应用打包以进程的形式运行,应用和应用间非完全隔离,但是更轻量,效率高,lxc和docker都可以称为容器级虚拟化,区别在于docker可以理解为经过精美封装过更加好用的lxc,有更好的接口和更完善的配套.

  • docker中容器的网络配置常用命令详解

    网络基础配置 虽然Docker可以根据镜像"多开"容器,并而每个容器互不影响,但并不代表容器与容器之间是完全决裂的.Docker在运行镜像的时候提供了映射容器端口到宿主主机.容器端口到另一个容器的网络互联功能,使得容器与宿主主机.容器与容器之间可以相互通信. ### 从外部访问容器应用 在启动容器的时候,如果不指定对应的参数,在容器外是无法通过网络来访问容器内的网络应用和服务的.当容器中运行一些需要被外部访问的网络应用时,可以通过-P或者-p参数来指定端口映射.当使用-P标记时,Doc

随机推荐