gpt4 book ai didi

linux - docker-入口点.sh : Only exec "$@" not working

转载 作者:太空宇宙 更新时间:2023-11-04 09:10:03 27 4
gpt4 key购买 nike

这几天我一直在努力解决这个问题。

文件 1 : docker-entrypoint.sh

#!/bin/bash
set -e
source /home/${HADOOP_INSTALL_USERNAME}/.bashrc
kinit -kt /home/${HADOOP_INSTALL_USERNAME}/keytab/dept-test-hadoop.${HADOOP_INSTALL_ENV}.keytab dept-test-hadoop
mkdir /tmp/test222222
exec "$@"

docker 文件:

ENTRYPOINT ["/home/dept-test-hadoop/docker-entrypoint.sh"]

docker 运行命令:

docker run -it hadoop-hive:v1 /bin/mkdir /tmp/test1

挑战或我正在尝试的是执行作为命令行参数传递给 docker run 命令的命令。请注意这些命令需要 kerberos 身份验证

1) 我注意到了 /tmp/test222222 但我无法通过上面的 docker run 命令直接看到类似 /tmp/test1 的内容。我认为我的 exec "$@" 在 docker-entrypoint.sh 没有执行。但我可以确认脚本正在执行,因为我可以看到 /tmp/test222222

2) 有没有办法从环境变量中赋值?

入口点 ["/home/dept-test-hadoop/docker-entrypoint.sh"]

最佳答案

只要创建目录,您的容器就会退出。你的容器生命就是exec命令或docker-entrypoint的生命,所以你的容器在exec "$@"之后很快就会死亡。

如果您正在寻找一种从 env 创建目录的方法,那么您可以试试这个

#!/bin/bash
set -x
source /home/${HADOOP_INSTALL_USERNAME}/.bashrc
kinit -kt /home/${HADOOP_INSTALL_USERNAME}/keytab/dept-test-hadoop.${HADOOP_INSTALL_ENV}.keytab dept-test-hadoop
mkdir $MY_DIR
ls
exec "$@"

所以现在将 MY_DIR 传递给 env,但请记住这个漫长的过程。

docker run -it -e MY_DIR=abcd hadoop-hive:v1  "your_long_running_process_to_exec"

例如

docker run -it -e MY_DIR=abcd hadoop-hive:v1 "<hadoop command>"

如果你在 exec 中运行来自 ENV 的任何进程,那么你也可以尝试

#!/bin/sh
set -x
mkdir $MY_DIR
ls
exec ${START_PROCESS}

所以你可以在运行时通过

docker run -it -e MY_DIR=abcd -e START_PROCESS=my_process hadoop-hive:v1  

关于linux - docker-入口点.sh : Only exec "$@" not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58290268/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com