Traga Seu Próprio Contêiner
Você pode criar e usar um contêiner personalizado (Bring Your Own Container ou BYOC) ao criar um job e execuções de jobs.
O tamanho máximo de uma imagem de contêiner que você pode usar com jobs é de 25 GB. O tamanho da imagem do contêiner diminui o tempo de provisionamento do job por causa da extração do contêiner do Container Registry. Recomendamos que você use as menores imagens de contêiner possíveis.
Dockerfile e uma imagem. Você começa com um Dockerfile, que usa a imagem slim do Python. O Dockerfile foi projetado para que você possa criar builds locais e remotos. Você usa o build local ao testar localmente o código. Durante o desenvolvimento local, você não precisa criar uma nova imagem para cada alteração de código. Não armazene arquivos no diretório
/home/datascience. Quando o contêiner é provisionado e executado como uma execução de job, ele é substituído quando está nesse diretório.Use a opção remota para executar o Dockerfile quando achar que o código está completo e quiser executá-lo como job, como neste exemplo de Dockerfile:
ARG type
FROM python:3.8-slim AS base
ENV DATASCIENCE_USER datascience
ENV DATASCIENCE_UID 1000
ENV HOME /home/$DATASCIENCE_USER
RUN python -m pip install \
        parse \
        oci
FROM base AS run-type-local
# nothing to see here
FROM base AS run-type-remote
COPY job_logs.py .
CMD ["python", "job_logs.py"]
FROM run-type-${type} AS finalVeja a seguir um exemplo de arquivo job_logs.py:
import oci
import datetime
import os
import time
import sys
import uuid
from oci.loggingingestion import LoggingClient
from oci.loggingingestion.models import PutLogsDetails, LogEntryBatch, LogEntry
OCI_RESOURCE_PRINCIPAL_VERSION = "OCI_RESOURCE_PRINCIPAL_VERSION"
JOB_RUN_OCID_KEY = "JOB_RUN_OCID"
# switch
class Job:
    def __init__(self):
        rp_version = os.environ.get(OCI_RESOURCE_PRINCIPAL_VERSION, "UNDEFINED")
        if not rp_version or rp_version == "UNDEFINED":
            # RUN LOCAL TEST
            self.signer = oci.config.from_file("~/.oci/config", "BIGDATA")
        else:
            # RUN AS JOB
            self.signer = oci.auth.signers.get_resource_principals_signer()
job = Job()
print(
    "Start logging for job run: {}".format(
        os.environ.get(JOB_RUN_OCID_KEY, "LOCAL")
    )
)
print("Current timestamp in UTC: {}".format(str(datetime.datetime.utcnow())))
print("Delay 5s")
time.sleep(5)
print("... another stdout")
print("Print all environment variables and values")
for item, value in os.environ.items():
    print("{}: {}".format(item, value))
print("Docker Job Done.")Para poder enviar e extrair imagens de/ para o Oracle Cloud Infrastructure Registry (também conhecido como Registro de Contêiner), você deve ter um token de autorização do Oracle Cloud Infrastructure. Você só vê a string do token de autenticação quando a cria, portanto, copie o token de autenticação para um local seguro imediatamente.