关于 Docker 容器自动创建文件夹和文件的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
helphelp
V2EX    程序员

关于 Docker 容器自动创建文件夹和文件的问题

  •  
  •   helphelp 2023-05-28 14:20:39 +08:00 1883 次点击
    这是一个创建于 937 天前的主题,其中的信息可能已经有所发展或是发生改变。

    重新发一下,之前发的一个帖子没表达清楚意思,顺便把大佬的回答搬过来


    以下是原问题:

    下面两部分代码,一个是 linuxserver 的 nginx 镜像,一个是官方版

    docker run -d \ --name=nginx \ -v /home/nginx:/config \ # 注意看这部分 --restart unless-stopped \ lscr.io/linuxserver/nginx:latest 
    docker run -d \ --name nginx1 \ --log-opt max-size=1m \ -v /home/nginx1:/etc/nginx \ 注意看这部分 --restart unless-stopped \ nginx 

    开始的时候我的 home 目录是空白的,什么都没有

    当运行这两个容器之后,

    linuxserver 会在 /home/nginx 里自动创建文件夹和文件(注意是文件夹和配置文件都自动创建了)

    而官方版的镜像不会自动创建文件。

    如图:

    nginx 文件夹下面有很多文件,都是容器自动创建的,但是 nginx1 文件夹里面什么都没有

    nginx

    请问:

    1.怎么让官方版像 linuxserver 一样自动创建文件呢?就是把容器内的 /etc/nginx/nginx.conf 这些配置文件自动拷贝或者说创建到本地。或者说 linuxserver 是怎么实现的呢?

    7 条回复    2023-05-29 11:45:17 +08:00
    helphelp
        1
    helphelp  
    OP
       2023-05-28 14:21:22 +08:00
    以下是 @javalaw2010 大佬的回答

    注意一下 https://github.com/linuxserver/docker-baseimage-alpine-nginx 这个容器的构建,/root 文件加会被添加进容器和 /合并,注意 /migrations 目录下面的文件,这个文件会被更基础的镜像 https://github.com/linuxserver/docker-baseimage-alpine 的 S6 进程管理器读取,会把 nginx 的配置文件从 apt 源安装的初始目录拷贝到 /config 文件夹下面。

    想要启动容器的时候自动创建文件夹的话,一种方案就是你用跟 linuxserver 一样的进程管理器的方案,然后写一些启动脚本让它读取。还有一种更轻量级的方案就是写一个 docker-entrypoint.sh 脚本,作为容器的 entrypoint ,在这个里面做一些初始化的工作,然后用 gosu 和 exec 命令执行 command ,实际的使用示例可以看这个: https://github.com/laravel/sail/blob/1.x/runtimes/8.2/start-container
    helphelp
        2
    helphelp  
    OP
       2023-05-28 14:22:09 +08:00
    另外吐槽一下,为啥发帖支持 Markdown 回帖不支持...
    helphelp
        3
    helphelp  
    OP
       2023-05-28 14:26:32 +08:00
    不能编辑了,想替换帖子里面那个图片的,重新截了一张

    ![nginx]( https://file.uhsea.com/2305/97cc78035fc6d0868a6b5b9ab91e1e63H3.png)
    helphelp
        4
    helphelp  
    OP
       2023-05-28 14:27:58 +08:00
    ![nginx]( )
    loveqianool
        5
    loveqianool  
       2023-05-29 01:54:21 +08:00
    ```
    sudo sh -c "echo 'docker exec -i --user="\$UID":users nginx nginx "\$@"' > /usr/local/bin/nginx" && \
    sudo chmod +x /usr/local/bin/nginx && \
    docker run --rm -ti xmartlabs/htpasswd admin 123456 > /opt/docker/nginx/.htpasswd && \
    docker run --name tmp-nginx -d nginx:alpine && \
    docker cp tmp-nginx:/etc/nginx /opt/docker && \
    docker cp tmp-nginx:/usr/share/nginx/html/50x.html /opt/www/ && \
    docker cp tmp-nginx:/usr/share/nginx/html/index.html /opt/www/ && \
    mkdir /opt/docker/nginx/logs; \
    sudo chown -R "$UID":users /opt/docker/nginx/logs && \
    sudo chmod -R g+rwx /opt/docker/nginx/logs && \
    docker rm -f tmp-nginx
    ```
    kaedeair
        6
    kaedeair  
       2023-05-29 09:26:25 +08:00
    https://hub.docker.com/_/nginx 中 Complex configuration 一节写了配置在 /etc/nginx/下面,其他的配置项需要自己设置和挂载相应目录
    helphelp
        7
    helphelp  
    OP
       2023-05-29 11:45:17 +08:00
    @loveqianool 大佬 这是将先运行容器在 docker cp 的过程用一键脚本完成了是吧
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     812 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 22:27 PVG 06:27 LAX 14:27 JFK 17:27
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86