如何使用Docker

时间:2017-05-02 10:49:26

标签: docker

我有一个具有以下结构的Docker项目:

.
├── config
└── Dockerfile

Dockerfile

FROM alpine:latest
EXPOSE 8118
RUN apk --update add privoxy
COPY config /etc/privoxy/config
CMD ["privoxy", "--no-daemon"]

并且config包含两行

listen-address 0.0.0.0:8118
forward-socks5 / tor:9050 .

在容器中,我想将Privoxy配置文件(默认位置为/etc/privoxy(参见https://www.privoxy.org/user-manual/config.html))放入本地' config文件,这是我尝试使用COPY指令实现的。

但是,如果我docker build --tag my_privoxy .后跟docker run my_privoxy,我会看到以下错误消息:

2017-05-02 10:40:29.371 7f2ce5f00b48 Info: Privoxy version 3.0.24
2017-05-02 10:40:29.371 7f2ce5f00b48 Info: Program name: privoxy
2017-05-02 10:40:29.371 7f2ce5f00b48 Fatal error: can't check configuration file '//config':  Invalid argument

我不知道配置文件的预期位置如何以容器中的'//config'结尾; COPY的使用在我看来与https://docs.docker.com/engine/reference/builder/#copy一致。以上Dockerfile有什么问题?

3 个答案:

答案 0 :(得分:2)

/etc/privoxy/config目录吗?如果不是,那么你的命令应该是

COPY config /etc/privoxy/

答案 1 :(得分:0)

根据privoxy --help,该命令接受[configfile]可选输入。所以我把最后一行改为

CMD ["privoxy", "--no-daemon", "/etc/privoxy/config"]

它有效。 (我仍然不明白为什么没有configfile输入它不起作用,因为/etc/privoxy/config应该是默认值。

答案 2 :(得分:0)

  

在容器中,我想制作Privoxy配置文件

您可以使用所需的配置将卷装入文件夹。这将通过docker run -v hostFolder:containerFolder imagename完成。但是,这不会产生带有配置的新图像,而是会得到一个具有所需配置的容器。