新建一个脚本文件
touch script.sh && chmod +x script.sh
脚本代码
#!/bin/bash
# 检查是否提供了容器ID或名称
if [ -z "$1" ]; then
echo "Usage: $0 <container_id_or_name>"
exit 1
fi
CONTAINER=$1
# 获取容器名
NAME=$(docker inspect --format='{{.Name}}' $CONTAINER | cut -c 2-)
# 获取镜像名
IMAGE=$(docker inspect --format='{{.Config.Image}}' $CONTAINER)
# 获取命令
CMD=$(docker inspect --format='{{.Config.Cmd}}' $CONTAINER | sed 's/[][]//g' | tr -d ',')
if [ -n "$CMD" ]; then
CMD="--entrypoint $CMD"
fi
# 获取端口映射
PORTS=$(docker inspect --format='{{range $p, $conf := .HostConfig.PortBindings}}-p {{(index $conf 0).HostPort}}:{{$p}} {{end}}' $CONTAINER)
# 获取卷映射
VOLUMES=$(docker inspect --format='{{range .Mounts}}-v {{.Source}}:{{.Destination}} {{end}}' $CONTAINER)
# 获取环境变量
ENVS=$(docker inspect --format='{{range .Config.Env}}-e {{.}} {{end}}' $CONTAINER)
# 获取重启策略
RESTART_POLICY=$(docker inspect --format='{{.HostConfig.RestartPolicy.Name}}' $CONTAINER)
if [ "$RESTART_POLICY" != "no" ]; then
RESTART="--restart $RESTART_POLICY"
fi
# 构建docker run命令
CMD="docker run --name $NAME $PORTS $VOLUMES $ENVS $RESTART $CMD -d $IMAGE"
# 输出命令
echo $CMD
执行
sh ./script.sh fed2b02d14bf2c6
已有 0 条评论