小编Qki*_*kiZ的帖子

更改 Docker 中命名卷的权限

我有 Docker 容器,其命名卷在非 root 用户上运行,使用以下命令启动:

docker run -v backup:/backup someimage
Run Code Online (Sandbox Code Playgroud)

在图像中,有一个备份脚本尝试将文件保存在/backup目录中,但失败了。目录中安装的backup/backup属于 root 用户。

如何更改/backup目录的权限?

-----编辑1:

mcve如下:

使用 Gerrit 运行 docker 容器:

docker run -v backupgerrit:/backup --name gerrit gerritcodereview/gerrit
Run Code Online (Sandbox Code Playgroud)

现在在其他终端窗口上尝试在目录中保存一些内容/backup

docker exec gerrit touch /backup/testfile
Run Code Online (Sandbox Code Playgroud)

你会得到:

touch: cannot touch '/backup/testfile': Permission denied
Run Code Online (Sandbox Code Playgroud)

docker

17
推荐指数
1
解决办法
6万
查看次数

修改dockerfile中的hosts文件

我有一个带有 RUN 指令的 Dockerfile 来修改 /etc/hosts 文件,但它不起作用。

FROM dockerhub.mydomain.com/sometag/java8
MAINTAINER itsme

ADD some-java-app.jar app.jar
ADD hosts tmp/
ENV PATH=/opt/java/bin:$PATH
RUN cat /tmp/hosts >> /etc/hosts
CMD ["java",\
    "-Djava.security.egd=file:/dev/./urandom",\
    "-jar",\
    "/app.jar"]
Run Code Online (Sandbox Code Playgroud)

hosts复制到 docker 镜像中的 /tmp 的文件中,还有一个额外的主机名和 IP。我想cat这样做/tmp/hosts/etc/hosts但在构建图像后/etc/hosts未修改。

如何正确修改此文件?编辑:我正在尝试使用tee命令,但是当图像是构建内容时,/tmp/hosts它会回显到控制台,而不是/etc/hosts.

RUN bash -c 'cat /tmp/hosts | tee -a /etc/hosts'
Run Code Online (Sandbox Code Playgroud)

它在 Dockerfile 中看起来|>>不起作用。

docker

5
推荐指数
1
解决办法
3万
查看次数

Netstat 和 ss 没有看到连接

我正在尝试查找 Kubernetes 集群上运行的哪个应用程序正在使用特定端口与 RabbitMQ 集群进行通信。在 RabbitMQ 上,我看到连接来自 192.168.1.10:34226。192.168.1.10是Kubernetes节点之一。登录到 192.168.1.10 后,我检查是否通过 tcpdump 命令从该节点建立了连接tcpdump -i eth0 port 34226。我看到两个方向的交通。现在我正在尝试查找哪个进程正在建立此连接。首先我尝试了 netstat:

netstat -tapn | grep 34226

结果什么也没发现。然后我尝试了 ss 但仍然一无所获。连接已建立,通过 tcpdump 我可以看到发送到 RabbitMQ 的心跳数据包以及来自 RabbitMQ 的响应。但 netstat 和 ss 不报告已建立的连接。

更新1

我发现这与网络命名空间有关。我的问题与this问题类似,但我需要找到从34226端口建立连接的进程的PID。

netstat tcpdump network-namespace kubernetes

3
推荐指数
1
解决办法
5724
查看次数

标签 统计

docker ×2

kubernetes ×1

netstat ×1

network-namespace ×1

tcpdump ×1