Olá,
Essa mensagem acontece tanto no g++ como gcc porque no momento da execução do script o chroot (diretório /bocajail) não está "sincronizado" com o /usr/bin, pois é independe do diretório do SisOp. Basta ver que no docker há instalação do Java e, portanto, terá dentro do /bocajail/usr/bin, por isso o Java funciona.
Ou você abre manualmente o docker em execução e faz um copy/mount dos diretórios para o bocajail ou baixe o docker e o altere para instalar/copiar/montar o gcc/g++.
Para maratonas somente na linguagem C, eu subo o docker e rodo o script abaixo:
# 1. Cria as pastas de destino no jail
mkdir -p /bocajail/usr/bin
mkdir -p /bocajail/usr/include
mkdir -p /bocajail/usr/lib
mkdir -p /bocajail/lib
mkdir -p /bocajail/lib64
# 2. Faz o bind mount de TUDO o que o GCC precisa
mount --bind /usr/bin /bocajail/usr/bin
mount --bind /usr/include /bocajail/usr/include
mount --bind /usr/lib /bocajail/usr/lib
mount --bind /lib /bocajail/lib
mount --bind /lib64 /bocajail/lib64
Avante