精华内容
下载资源
问答
  • 如何修改docker容器中的hosts文件

    万次阅读 2019-03-12 18:36:34
    直接进入容器修改/etc/hosts,这种方式在重启容器后,增加的内容会丢失。 方法二: 在制作镜像的时候,直接修改。这种方式需要你是root用户,/etc/hosts文件对于普通用户是没有权限的。所以你还要在容器中安装sudo...

    方法一:

    直接进入容器中修改/etc/hosts,这种方式在重启容器后,增加的内容会丢失。

    方法二:

    在制作镜像的时候,直接修改。这种方式需要你是root用户,/etc/hosts文件对于普通用户是没有权限的。所以你还要在容器中安装sudo,增大了镜像大小,不建议使用。

    方式三:

    在使用docker run运行一个新的容器的时候,通过参数--add-host来添加域名和IP信息到容器的/etc/hosts文件中。例如:

    docker run --add-host=myhostname:10.180.8.1 --name test -it debian 
    

    上面中我添加了一个域名myhostname,以及对应的IP地址10.180.8.1

    方式四:

    docker-compose.yml文件中,通过配置参数extra_hosts来实现。例如:

    extra_hosts:
     - "somehost:162.242.195.82"
     - "otherhost:50.31.209.229"
    

    你就可以在你容器中/etc/hosts中看到下面的内容:

    162.242.195.82  somehost
    50.31.209.229   otherhost
    

    参考文章

    1. docker run
    2. Compose file version 3 reference
    展开全文
  • 关于docker容器修改/etc/hosts文件

    万次阅读 2018-07-20 08:57:36
    容器启动起来修改成功后,下次容器重启丢失,因此,我们需要将ip hostname 在做镜像的时候写进去。 CMD命令,启动容器的入口。可以在这个shell 脚本中加入: echo "ip hostname" >> /...

    第一部分:root用户

    对于root用户,这个修改起来还是比较方便呢。 容器启动起来修改成功后,下次容器重启会丢失,因此,我们需要将ip hostname 在做镜像的时候写进去。

    CMD命令,启动容器的入口。可以在这个shell 脚本中加入:

    echo "ip hostname" >> /etc/hosts 文件中。

    对于写入的对应关系比较多的情况下。可以将其写入一个文件中,然后使用:

    cat hosts.txt >> /etc/hosts

    第二部分:普通用户(非root用户)

    普通用户对/etc/hosts 没有操作权限,因此在操作之前需要现有操作的权限,可以在容器中装sudo,具体如下:

    yum install -y sudo

    sudo.sh 文件内容

    #!/bin/bash

    chmod 777 /etc/sudoers;

    echo "Cmnd_Alias HOSTS = /bin/chmod 777 /etc/hosts" >> /etc/sudoers;

    echo "Cmnd_Alias HOST = /bin/chmod 644 /etc/hosts" >> /etc/sudoers;

    echo "yanfa ALL=(root)      NOPASSWD:HOSTS,HOST" >> /etc/sudoers;

    chmod 440 /etc/sudoers;

    在CMD启动脚本中,写入:

    sudo /bin/chmod 777 /etc/hosts;

    cat /app/setup/hosts >> /etc/hosts;

    sudo /bin/chmod 644 /etc/hosts;

    注: /app/setup/hosts  是ip hostname 对应关系的文件

    通过以上内容可以实现容器中/etc/hosts的实现。

    展开全文
  • 我们删除主机,重新添加,发现所有的容器都没有了,服务都是rancher从镜像重新拖拽下来的,也就是说之前在容器修改的配置文件,以及log日志,es存储都没有了。这个风险很严重,所以这次记录一下该问题解决方案。 ...

    背景:今天服务器主机突然重启发现,rancher容器网络出现问题,大面积服务启动失败、Timeout getting IP address。就是所有的容器服务都启动不起来。

    我们删除主机,重新添加,发现所有的容器都没有了,服务都是rancher从镜像重新拖拽下来的,也就是说之前在容器修改的配置文件,以及log日志,es存储都没有了。这个风险很严重,所以这次记录一下该问题解决方案。

     

    1.关于dockker容器配置相关,也就是在系统中修改的,我们可以根据docker允许的容器,备份镜像

      docker commit -a 'lvhao' [容器id]  [镜像名称]:[版本号]

      docker commit -a 'lvhao' 740ba80459  lvhaoelk:v1.0

     

    2.将elk生成的日志输出到外部服务器

      

    展开全文
  • 官方文档: 所以 mysql应如下启动: docker run -p 3306:3306 -d -e MYSQL_ROOT_PASSWORD=密码 -v /windows盘符/指定的...补充知识:docker 挂载进容器文件修改后没有改变需要重启 今天发现一个很奇怪的现象,就是我
  • 如果运行中的容器修改了现有的一个已经存在的文件,那该文件将会从读写层下面的只读层复制到读写层,该文件的只读版本仍然存在,只是已经被读写层中该文件的副本所隐藏。当删除Docker容器,并通过该镜像重启时,之前...

    Docker镜像是由多个文件系统(只读层)叠加而成,当启动一个容器的时候,Docker会加载只读镜像层并在其上(镜像栈顶部)添加一个读写层。如果运行中的容器修改了现有的一个已经存在的文件,那该文件将会从读写层下面的只读层复制到读写层,该文件的只读版本仍然存在,只是已经被读写层中该文件的副本所隐藏。当删除Docker容器,并通过该镜像重启时,之前的修改将会丢失。在Docker中,只读层和顶部的读写层的组合被称为联合文件系统(Union File System)。
    Docker镜像可以理解成多个只读文件叠加而成,因此镜像是只读的,当镜像运行起来时,就相当于在只读的镜像外包裹了一层读写层变成了容器。当删除容器之后,使用镜像重新创建一个容器时,此时的镜像的只读层和原来一样,只是在读写层的修改会全部丢失。
    Docker提供了三种不同的方式,用于将宿主机的数据挂载到容器中:

    1.1 volumes

    Volumes:

    • 由Docker进程创建和管理,可以通过命令docker volume create来创建一个指定的卷,也可以由Docker进程在创建容器或服务的过程中来创建。
    • 当为一个容器创建一个volume时,这个volume将会被存储到宿主机的一个目录下,当你挂载这个volume到一个容器中时,就是在挂载这个目录到容器中。
    • 一个volume可以被同时挂载到多个容器中。当没有任何容器在使用这个volume的时候,这个volume也仍然可以被Docker进程所使用,而不是自动删除。当前这里可以使用命令手动删除volume:docker volume prune
    • 当你挂载一个volume时,可以选择为它命名,也可以不命名。如果不命名的话,当这个volume首次被挂载到一个容器中时,Docker进程会分配给他一个随机的名字,以保证在宿主机操作系统中这个volume的名字唯一。除了名字之外,命名和不命名的volume没有区别。
    • volume也支持使用volume drivers,以帮助你将数据保持到远程主机或云上。

    Volumes是Docker管理宿主机文件系统的一部分,默认位于/var/lib/docker/volumes目录中:df3d503c1979efc95905f0ab3c96a43a.png
    由上图可以看出,目前所有的Container数据都保存在了这个目录下,由于没有在创建的时候指定卷,所以Docker帮我们创建了许多匿名的卷(就是一堆很长ID名字的卷)

    适用场景:

    • 多个容器间需要共享数据。如果volume没有手动被创建,它将会在首次挂载到某个容器之前被自动创建,当容器被停止或删除时,这个volume不会随之被删除。多个容器可以同时以rw或ro的方式挂载这个volume。只有手动指定删除volume,它才会被删除。
    • 当宿主机并没有专用于Docker的文件系统结构时。使用volume可以使宿主机的配置与容器的运行解耦。
    • 当你希望将数据保存到远程主机或云上。
    • 你希望在不同的宿主机直接备份/恢复/迁移数据时,volume是一个很好的选择。你可以停止运行使用volume的容器,然后直接备份volume所在的目录即可,如/var/lib/docker/volumes/

    1.2 bind mounts

    Bind mounts:

    • 与volume相比,它的功能比较局限。当使用bind mounts时,宿主机的目录或文件被挂载到容器中。容器将按照挂载目录或文件的绝对路径来使用或修改宿主机的数据。宿主机中的目录或文件不需要预先存在,在需要的使用会自动创建。使用bind mounts在性能上是非常好的,但这依赖于宿主机有一个目录妥善结构化的文件系统。(使用bind mounts的容器可以在通过容器内部的进程对主机文件系统进行修改,包括创建,修改和删除重要的系统文件和目录,这个功能虽然很强大,但显然也会造成安全方面的影响,包括影响到宿主机上Docker以外的进程)

    适用场景:

    • 将宿主机的系统配置文件共享给容器,这是Docker为容器提供DNS配置的默认方式,即通过bind mounts的方式将宿主的的/etc/文件挂载到容器中。
    • 将宿主机开发环境中的源代码或实验结果共享给容器。例如:你在宿主机上进行一个项目Maven的测试,每次你在宿主机上对Maven项目进行了更改后,容器就可以直接获取更改后的结果
    • 你可以确定宿主机的文件系统结构应该与容器内部完全一致时。

    1.3 tmpfs mounts

    tmpfs:

    • 在这种挂载方式下,容器内的应用数据将不会被持久的保存在硬盘上。其中的数据只能在某个容器的生存周期内被使用,或者用于保存一些不需要持久存储或者一些敏感的数据信息。

    适用场景:
    当你出于安全原因,或者容器性能优化的原因(如需要写入大量的不持久的状态数据时),不需要容器的数据长久保存时可以使用这种方式。

    展开全文
  • 事情是这样的,开始的时候安装的mysql8 的容器,默认是区分大小写的,我想直接进入mysql容器修改my.cnf: # is match case lower_case_table_names=1 这样改了之后,重启mysql 出问题了 ,无法启动,也无法...
  • Docker修改hosts方法

    千次阅读 2020-08-12 11:47:46
    缺点:重启容器后,增加的内容会丢失 方法二: 制作镜像的时候,直接修改。 限制: 需要是root用户,需要在容器中安装sudo 增大了镜像大小 方法三: 使用docker run运行一个新的容器的时候,通过参数-...
  • 2、如果运行中的容器修改了现有的一个已经存在的文件,那该文件将会从读写层下面的只读层复制到读写层,该文件的只读版本依然存在,只是已经被读写层中该文件的副本所隐藏,此即"写时复制(COW)"机制 关闭并重启容器,...
  • POD重启之后,原容器数据会丢失。为了让数据可以持久化存储,可以采用Volume挂载的方式避免数据丢失。 Deployment发布文件样例 官方样例:参考文档 mysql-svc.yml文件修改如下: 注意volumeMounts 和 volumes的...
  • docker数据卷性质

    2020-07-28 20:39:30
    如果运行中的容器修改了现有的一个已经存在的文件,那么该文件将会从读写层下面的的只读层复制到读写层,该文件的只读版本仍然存在,只是已经被读写层中该文件的副本所隐藏,次即“写时复制”机制,读写层的修改不...
  • 一、在生产环境中使用Pod来工作 ...本节将介绍一些在生产环境中运行应用非常有用的...容器文件系统只有当容器正常运行时有效,一旦容器奔溃或者重启,所有对文件系统的修改将会丢失,从一个原始的文件系统重新
  • docker存储卷管理

    2020-05-15 17:47:13
    (2)如果运行中的容器修改了现有的一个已经存在的文件,那该文件将会从读写层下面的只读层复制到读写层,该文件的只读版本仍然存在,只是已经被读写层中该文件副本所隐藏,此即“写时复制”机制。 二:为什么要用到...
  • 肯定是多节点启动(独立部署或者docker等容器部署),防止单节点故障导致整个服务不能访问,网关是对客户端的入口与出口,在生产运行中极为重要,哪怕是简单的重启也会导致部分请求的丢失。 网关的路由配置这个时候...
  • 肯定是多节点启动(独立部署或者docker等容器部署),防止单节点故障导致整个服务不能访问,网关是对客户端的入口与出口,在生产运行中极为重要,哪怕是简单的重启也会导致部分请求的丢失。 网关的路由配置这个时候...
  • Axx:ARJ压缩文件的分包序号文件,用于将一个大文件压至几个小的压缩包中(xx取01-99的数字) A3L:Authorware 3.x库文件 A4L:Authorware 4.x库文件 A5L:Authorware 5.x库文件 A3M,A4M:Authorware Macintosh...
  • 注意:静态编译后常量数据位于PE文件的.rdata段中,只可读不可写,编程时请避免修改它们。譬如以下的代码,静态编译后就可能会出现问题: a = " " GetWindowTextA(hWnd, a, 20) 正确的代码为: a = 取空白文本 ...
  • asp.net知识库

    2015-06-18 08:45:45
    HttpModule 实现 ASP.Net (*.aspx) 中文简繁体的自动转换,不用修改原有的任何代码,直接部署即可! 服务器自定义开发二之客户端脚本回发 Web开发: 使用URL重写WEB主题切换 如何在Asp.Net1.1中实现页面模板(所谓的...
  • 165.一张自增表里面总共有 7 条数据,删除了最后 2 条数据,重启 mysql 数据库,又插入了一条数据,此时 id 是几? 166.如何获取当前数据库版本? 167.说一下 ACID 是什么? 168.char 和 varchar 的区别是什么? 169...
  • 系统API控制,VA虚拟并实现了整个安卓系统框架,这也是VA可以免安装在内部运行apk的原理,您可以对虚拟框架的实现进行修改以动态监测分析App的行为等;除此之外,您还可模拟一些系统行为以实现一些在外部难以实现的...
  • 肯定是多节点启动(独立部署或者docker等容器部署),防止单节点故障导致整个服务不能访问,网关是对客户端的入口与出口,在生产运行中极为重要,哪怕是简单的重启也会导致部分请求的丢失。 网关的路由配置这个时候...

空空如也

空空如也

1 2
收藏数 23
精华内容 9
关键字:

容器修改重启丢失文件