V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  helphelp  ›  全部回复第 2 页 / 共 3 页
回复总数  46
1  2  3  
350 天前
回复了 helphelp 创建的主题 程序员 traefik 多域名到底是用“,”还是“||”
350 天前
回复了 helphelp 创建的主题 程序员 traefik 多域名到底是用“,”还是“||”
@msg7086 它后面就一直不更新软件包了啊 为啥啊
353 天前
回复了 xyz8899 创建的主题 NAS 发现一个 Docker 镜像可能有问题!
@xyz8899 抓包看看
@loveqianool 大佬 这是将先运行容器在 docker cp 的过程用一键脚本完成了是吧
@liwufan 谢大佬解答
不能编辑了,想替换帖子里面那个图片的,重新截了一张

![nginx]( https://file.uhsea.com/2305/97cc78035fc6d0868a6b5b9ab91e1e63H3.png)
另外吐槽一下,为啥发帖支持 Markdown 回帖不支持...
以下是 @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
@javalaw2010 大佬牛逼 谢谢 大概明白怎么回事了 意思就是容器执行的时候顺带执行了脚本对吗
## 重新整理一下问题,刚刚可能没表达清楚

下面两部分代码,一个是 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]( https://file.uhsea.com/2305/ca4cd2e176ce4d798b225b4d5e97db6534.png)


**请问:**


**1.怎么让官方版像 linuxserver 一样自动创建文件呢?就是把容器内的 /etc/nginx/nginx.conf 这些配置文件自动拷贝或者说创建到本地。**
@xiaomingVTEX 怎么让官方版 nginx 像 linuxserver 版 nginx 一样自动创建文件呢?就是把 /etc/nginx/nginx.conf 这些配置文件自动拷贝或者说创建到本地。
@xiaomingVTEX 可是我本地没有文件,我想知道 linuxserver 他们是怎么做到把容器里面的文件创建到本地的
@liwufan 原来是这样啊 谢谢大佬了 那 linuxserver 的 Nginx 镜像是怎么做到 docker run 的时候 自动在宿主机创建文件的
@leonshaw 就像你直接用 apt install nginx 安装它会在本地 /usr/share/nginx/conf.d 给你创建好基本的.conf 配置文件对吧,不需要你手动创建,但是 docker 版的官方 nginx 镜像它默认不创建,我想让他自动创建
@leonshaw 就像这张图里面的 nginx 文件夹一样: https://file.uhsea.com/2305/ca4cd2e176ce4d798b225b4d5e97db6534.png 容器啥的都给配置好了 我直接在 www 文件夹里面放入 html 就能访问了
@leonshaw 俺就是想要容器自己创建配置文件 我不想手动创建我懒 我希望 docker run 之后就自动创建好 我放入 html 就能用
@leonshaw 大佬 怎么写 怎么把容器的配置文件拷贝到本地文件夹呢
我问了 GPT ,GPT 说不能直接将容器的文件拷贝到宿主机上,我想知道 Linuxserver 的镜像是怎么做到自动创建文件的 大佬们

以下是 GPT 的回答

问:
dockerfile 如何将容器文件拷贝到宿主机


答:
在 Dockerfile 中,容器文件无法直接拷贝到宿主机上。Docker 建立的容器是与宿主机隔离的,它们运行在不同的命名空间中,因此无法直接访问宿主机上的文件系统。

如果需要将容器中的文件拷贝到宿主机上,可以使用 Docker 的 docker cp 命令。该命令允许将容器中的文件复制到宿主机上,或从宿主机上复制文件到容器中。
1  2  3  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6005 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 17ms · UTC 02:59 · PVG 10:59 · LAX 19:59 · JFK 22:59
Developed with CodeLauncher
♥ Do have faith in what you're doing.