sh 容器启动脚本在容器中挂载外部的应用并在容器启动的时候启动,参数传递使用环境变量#bash #docker
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sh 容器启动脚本在容器中挂载外部的应用并在容器启动的时候启动,参数传递使用环境变量#bash #docker相关的知识,希望对你有一定的参考价值。
nvidia-docker run -d --rm \
-e TZ=Asia/Shanghai \
-e AILAB_EXEC_SCRIPT="/etc/ailab-init/startup-vnc.sh#" \
-e USER_NAME=test \
-e LANG=zh_CN.UTF-8 \
-e RESOLUTION=1024x768x16 \
-v `pwd`/ailab-init:/etc/ailab-init \
--entrypoint bash \
-p 46080:8282 -p 45901:5900 \
-e VNC_PASSWORD=111111 \
test:v0.4 /etc/ailab-init/startup-env.sh
#!/bin/bash
debug()
{
if [ -n "$AILAB_DEBUG" ];then
echo "$@" >>/tmp/${PROG}.log
fi
}
add_user()
{
local opts=""
[ -n "$USER_HOME" ] && opts="$opts -md $USER_HOME"
[ -n "$USER_ID" ] && opts="$opts -u $USER_ID"
[ -n "$USER_SHELL" ] && opts="$opts -s $USER_SHELL"
[ -n "$GROUP_NAME" ] && opts="$opts -g $GROUP_NAME"
if ! grep -q $GROUP_NAME /etc/group ;then
groupadd -g $GROUP_ID $GROUP_NAME
fi
debug "add user: $USER_NAME"
useradd $opts $USER_NAME
debug "chpasswd: $USER_NAME"
echo $USER_NAME:$USER_PASSWD|chpasswd
debug "chpasswd: root"
echo root:$ROOT_PASSWD|chpasswd
mkdir -p /etc/sudoers.d
echo "$USER_NAME ALL=(ALL) NOPASSWD: ALL" >/etc/sudoers.d/$USER_NAME
}
clean_up()
{
unset ROOT_PASSWD
unset USER_NAME
unset USER_PASSWD
unset USER_HOME
unset USER_ID
unset USER_SHELL
unset GROUP_NAME
unset GROUP_ID
unset HOME_DIR
}
pre_exec()
{
add_user
}
exec_cmd()
{
#AILAB_EXEC_SCRIPT="date#ls -l"
OLD_IFS=$IFS
IFS='#' read -r -a exec_array <<< "$AILAB_EXEC_SCRIPT"
for i in "${exec_array[@]}";do
debug "execute custom process $i"
$i &
done
IFS=$OLD_IFS
debug "clean up enviroment variable"
clean_up
/usr/sbin/sshd -D
}
main()
{
pre_exec
exec_cmd
}
export AILAB_DEBUG="1"
PROG=$(basename $0)
export ROOT_PASSWD=${ROOT_PASSWD:-"p@ssw0rd"}
export USER_NAME=${USER_NAME:-"ailab"}
export USER_PASSWD=${USER_PASSWD:-"ailab"}
export HOME_DIR=${HOME_DIR:-"/home"}
export USER_HOME=${HOME_DIR}/$USER_NAME
export USER_ID=${USER_ID:-"1000"}
export USER_SHELL=${USER_SHELL:-"/bin/bash"}
export GROUP_NAME=${GROUP_NAME:-"student"}
export GROUP_ID=${GROUP_ID:-"1000"}
main "$@"
以上是关于sh 容器启动脚本在容器中挂载外部的应用并在容器启动的时候启动,参数传递使用环境变量#bash #docker的主要内容,如果未能解决你的问题,请参考以下文章
k8d的初始化容器initContainers
sh [HDF 3.0 Docker容器启动脚本]使用此脚本启动HDF 3.0 docker容器#docker #hdf #sandbox
Windows10 Docker Mysql容器启动
添加 Root 密码并在启动时在 MongoDB Docker 容器上创建应用程序用户
06-Docker-容器数据卷
Docker容器数据卷挂载使用