Kafka-connect docker 以 appuser 身份构建的图像 - 如何以 root 身份构建它?
Kafka-connect docker image built as appuser - how to build it as root?
我正在尝试在 Docker 中构建 Kafka-Connect 映像:
FROM confluentinc/cp-kafka-connect
RUN confluent-hub install --no-prompt wepay/kafka-connect-bigquery:1.6.1
RUN confluent-hub install --no-prompt confluentinc/connect-transforms:latest
RUN mkdir -p /usr/share/landoop-plugins
COPY kafka-connect-redis-1.2.2-2.1.0-all.jar /usr/share/landoop-plugins/
但它运行为 appuser
Step 4/4 : RUN id
---> Running in d2094f6336a7
uid=1000(appuser) gid=1000(appuser) groups=1000(appuser)
所以如果我想举个例子
RUN mkdir -p /usr/share/landoop-plugins
它因 root 权限而停止:
mkdir: cannot create directory '/usr/share/landoop-plugins': Permission denied
The command '/bin/sh -c mkdir -p /usr/share/landoop-plugins' returned a non-zero code: 1
我可以在 Docker 文件的开头添加 USER root
:
Step 3/15 : RUN id
---> Running in 6255e2e7ff81
uid=0(root) gid=0(root) groups=0(root)
但是如果我 运行 容器,我将被记录为 appuser
,这会导致权限问题:
[appuser@connect ~]$
.
实际上,在源图像中
confluentinc/cp-kafka-connect:6.0.0
有一层 USER appuser
所以我的问题是如何将我的图像构建为 root
然后以 root
登录并且不使用 appuser
用户。我试过了 USER root
没有帮助。
它是否与团体有某种联系?
groups
gignac sudo docker
我也试过docker build
和sudo docker build
当我需要为 Kafka Connect 创建自己的插件时,我会做类似的事情,但我并不是以 root 用户身份进行的。
简单地说,我把我的罐子放在我有权写的地方,然后配置插件环境设置
像这样:
FROM confluentinc/cp-kafka-connect:5.5.2
ENV CONNECT_PLUGIN_PATH='/usr/share/java,/usr/share/confluent-hub-components'
COPY converter/* /usr/share/java/kafka-serde-tools/
COPY format/* /usr/share/java/kafka-connect-storage-common/
这样不行吗?
为了安装包和故障排除,我们需要 root 用户。使用版本 5.5.3 可以实现不创建 APPUSER 并且默认加载 root 的技巧。
版本可以通过
验证
http://localhost:8083/connectors
其中提供版本详细信息。
我正在尝试在 Docker 中构建 Kafka-Connect 映像:
FROM confluentinc/cp-kafka-connect
RUN confluent-hub install --no-prompt wepay/kafka-connect-bigquery:1.6.1
RUN confluent-hub install --no-prompt confluentinc/connect-transforms:latest
RUN mkdir -p /usr/share/landoop-plugins
COPY kafka-connect-redis-1.2.2-2.1.0-all.jar /usr/share/landoop-plugins/
但它运行为 appuser
Step 4/4 : RUN id
---> Running in d2094f6336a7
uid=1000(appuser) gid=1000(appuser) groups=1000(appuser)
所以如果我想举个例子
RUN mkdir -p /usr/share/landoop-plugins
它因 root 权限而停止:
mkdir: cannot create directory '/usr/share/landoop-plugins': Permission denied
The command '/bin/sh -c mkdir -p /usr/share/landoop-plugins' returned a non-zero code: 1
我可以在 Docker 文件的开头添加 USER root
:
Step 3/15 : RUN id
---> Running in 6255e2e7ff81
uid=0(root) gid=0(root) groups=0(root)
但是如果我 运行 容器,我将被记录为 appuser
,这会导致权限问题:
[appuser@connect ~]$
.
实际上,在源图像中
confluentinc/cp-kafka-connect:6.0.0
有一层 USER appuser
所以我的问题是如何将我的图像构建为 root
然后以 root
登录并且不使用 appuser
用户。我试过了 USER root
没有帮助。
它是否与团体有某种联系?
groups
gignac sudo docker
我也试过docker build
和sudo docker build
当我需要为 Kafka Connect 创建自己的插件时,我会做类似的事情,但我并不是以 root 用户身份进行的。 简单地说,我把我的罐子放在我有权写的地方,然后配置插件环境设置
像这样:
FROM confluentinc/cp-kafka-connect:5.5.2
ENV CONNECT_PLUGIN_PATH='/usr/share/java,/usr/share/confluent-hub-components'
COPY converter/* /usr/share/java/kafka-serde-tools/
COPY format/* /usr/share/java/kafka-connect-storage-common/
这样不行吗?
为了安装包和故障排除,我们需要 root 用户。使用版本 5.5.3 可以实现不创建 APPUSER 并且默认加载 root 的技巧。 版本可以通过
验证http://localhost:8083/connectors
其中提供版本详细信息。