docker nginx配置_Docker修改容器文件的几种方法

a558382f5c9fcedbffac66ca15c81621.gif

点击蓝字 关注我们

a558382f5c9fcedbffac66ca15c81621.gif  cbeb0e0d9240c9619f1d43888a7b89dc.png

前言:Docker容器一旦创建后对容器内文件配置和参数进行修改没有宿主机那么方便,本文提供了几种常见的容器内文件的修改方式,在使用过程中可以根据情况灵活选择。

 1 

进入容器内修改

容器创建

根据nginx镜像创建容器

[root@k8s-node2 ~]# docker run -itd -p 80:80  --name=nginx01  nginx:latest8be63cc8acf6dc466ab4bf722e92de425a27ec522eb2884c17a27c1f29e57553

修改文件

容器创建完成后我们需要对nginx.conf配置进行修改,直接进入容器进行修改

[root@k8s-node2 ~]# docker psCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES8be63cc8acf6        nginx:latest        "/docker-entrypoin..."   4 minutes ago       Up 4 minutes        0.0.0.0:80->80/tcp       nginx01[root@k8s-node2 ~]# docker exec -it 8be63cc8acf6 bashroot@8be63cc8acf6:/# cd /etc/nginx/root@8be63cc8acf6:/etc/nginx# lsconf.d  fastcgi_params  koi-utf  koi-win  mime.types  modules  nginx.conf  scgi_params  uwsgi_params  win-utfroot@8be63cc8acf6:/etc/nginx# vim nginx.conf bash: vim: command not found

可以看到我们使用vim命令修改的时候,提示vim命令没有找到,因为docker镜像在构建的时候,为了减少层级,遵循精简的原则,体积越小容器启动会越快,所以很多组件没有安装。

安装vim命令

可以使用yum -y install vim或者apt-get install vim命令安装

root@8be63cc8acf6:/etc/nginx# apt-get install vimReading package lists... DoneBuilding dependency tree       Reading state information... DoneE: Unable to locate package vimroot@8be63cc8acf6:/etc/nginx# apt-get install vimReading package lists... DoneBuilding dependency tree       Reading state information... DoneThe following additional packages will be installed:  libgpm2 vim-common vim-runtime xxdSuggested packages:  gpm ctags vim-doc vim-scriptsThe following NEW packages will be installed:  libgpm2 vim vim-common vim-runtime xxd0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.Need to get 7425 kB of archives.After this operation, 33.8 MB of additional disk space will be used.Do you want to continue? [Y/n] y....

当出现上面提示时,需要先apt-get update获取到最新的软件包,等更新完毕以后再敲命令:apt-get install vim命令即可

然后你就可以直接使用vim编辑nginx.conf配置文件了

 2

docker cp方式

Linux上可以使用cp命令进行文件复制和备份,docker也可以使用cp命令在宿主机和docker容器件进行文件的复制

命令格式docker cp 容器ID或名称:容器目录 物理机目录docker cp 物理机目录 容器ID或名称:容器目录
举例,如图当容器内没有vim命令的时候,我们可以将容器内文件复制到物理机,修改后再复制回容器的方式,支持双向复制。
[root@k8s-node2 ~]# docker psCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES8be63cc8acf6        nginx:latest        "/docker-entrypoin..."   About an hour ago   Up About an hour    0.0.0.0:80->80/tcp       nginx01fcd01514c5cc        training/webapp     "python app.py"          9 days ago          Up 9 days           0.0.0.0:5000->5000/tcp   cranky_darwin[root@k8s-node2 ~]# docker cp 8be63cc8acf6:/etc/nginx/nginx.conf /root[root@k8s-node2 ~]# lsanaconda-ks.cfg  docker  initial-setup-ks.cfg  nginx.conf

 3

卷映射方式

Docker提供了数据持久化的方式,让docker内数据管理更加便利,容器创建的时候做好目录映射或者文件映射,直接修改物理机文件,容器内的文件会相应变化,这种方式的好处就是即使容器被删除了,物理机上的数据仍然不会丢失。

卷映射这种方式相当于,将物理机/etc/nginx/nginx.conf配置文件映射到容器内路径的nginx.conf,当时你也可以直接映射目录到容器内的目录。

[root@k8s-node2 nginx]# docker run -itd -p 8080:80 -v /etc/nginx/nginx.conf:/etc/nginx/nginx.conf --name=webtest nginx:latestd805df368a6f140de2f92384e2f53c1c503fe42a4d983363eb0fc44de54afb73[root@k8s-node2 nginx]# [root@k8s-node2 nginx]# docker psCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMESd805df368a6f        nginx:latest        "/docker-entrypoin..."   22 seconds ago      Up 21 seconds       0.0.0.0:8080->80/tcp     webtest

如上通过命令-v创建容器,将宿主机nginx.conf文件映射到容器内部nginx服务/etc/nginx/目录下。

说明:

  • -v 本地目录:容器目录。挂载主机的本地目录:目录到容器的目录,本地目录的路径必须是绝对路径

  • 容器的路径如果不存在会自动创建

当我们需要修改容器内的nginx.conf配置文件时,直接修改宿主机/etc/nginx/nginx.conf配置即可,如图,我们在宿主机插入hello数据,进入容器内部检查,容器内数据也发生了变化,是不是很方便。

[root@k8s-node2 nginx]# echo hello >>nginx.conf [root@k8s-node2 nginx]# cat nginx.conf | grep hellohello[root@k8s-node2 nginx]# docker psCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMESd805df368a6f        nginx:latest        "/docker-entrypoin..."   14 minutes ago      Up 14 minutes       0.0.0.0:8080->80/tcp     webtest[root@k8s-node2 nginx]# docker exec -it d805df368a6f bashroot@d805df368a6f:/# cd /etc/nginx/root@d805df368a6f:/etc/nginx# cat nginx.conf | grep hellohello
04035438443ec5d7df7642e5f981f800.png 04035438443ec5d7df7642e5f981f800.png

往期精选

June  2020

  • Docker入门篇之docker安装

  • Docker基础使用篇

  • Apache日志存储优化方案

文字:原创  

扫码关注我们

f010b54d90e12e9178cdc505c1f911c6.png

微信号 : 等风来

公众号:运维之美

点个在看  你最好看

我知道你

在看

f66e0dfd2669176b4ea1070e0dd58260.gif写留言
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值