Enviando Imagens Usando a CLI do Docker

Descubra como enviar imagens para o Container Registry usando a CLI do Docker.

Você usa a CLI do Docker para enviar imagens para o Oracle Cloud Infrastructure Registry (também conhecido como Container Registry).

Para enviar uma imagem, primeiro use o comando docker tag para criar uma cópia da imagem de origem local como uma nova imagem (a nova imagem é, na verdade, apenas uma referência para a imagem de origem existente). Como um nome para a nova imagem, especifique o caminho totalmente qualificado para o local de destino no Container Registry para o qual deseja enviar a imagem, incluindo o nome de um repositório.

Por exemplo, suponha que você tenha uma imagem local chamada acme-web-app:latest (o nome da imagem que compreende o nome do repositório acme-web-app e a tag de imagem latest). Digamos que você queira enviar essa imagem para o Container Registry em um repositório chamado project01/acme-web-app com um identificador de versão v2.0.test, na região Ashburn da tenancy acme-dev. Ao usar o comando docker tag, você nomeia a nova imagem com o caminho totalmente qualificado para seu destino, no formato <registry-domain>/<tenancy-namespace>/<repo-name>:<version>. Nesse caso, você nomeia a nova imagem ocir.us-ashburn-1.oci.oraclecloud.com/ansh81vru1zp/project01/acme-web-app:v2.0.test. Depois disso, quando você usar o comando docker push, o nome da imagem garantirá que ela seja enviada ao destino correto.

Suas permissões controlam as imagens que você pode enviar ao Container Registry (consulte Políticas para Controlar o Acesso ao Repositório). Você pode enviar imagens para repositórios que criou (consulte Criando um Repositório). Você também pode enviar imagens para os repositórios que os grupos aos quais você pertence receberam acesso das políticas de identidade. Se você pertencer ao grupo Administradores, poderá enviar imagens para qualquer repositório na tenancy.

Observe que as instruções deste tópico pressupõem que o repositório para o qual você deseja enviar imagens já existe. Esse geralmente será o caso, mas nem sempre precisa ser assim (consulte Criando um Repositório).

Observação

Container Registry é um registro compatível com a Open Container Initiative. Como resultado, você pode armazenar qualquer artefato que esteja em conformidade com as especificações da Open Container Initiative, como imagens do Docker, listas de manifestos (às vezes conhecidas como imagens de várias arquiteturas) e gráficos Helm. As instruções deste tópico pressupõem que você esteja armazenando imagens do Docker e usando a CLI do Docker.

Para enviar imagens ao Container Registry usando a CLI do Docker:

  1. Se você já tiver um token de autenticação, vá para a próxima etapa. Caso contrário:

    1. No canto superior direito da Console, abra o menu Perfil Ícone do menu Perfil e selecione Configurações do usuário (ou Meu Perfil ou o nome da sua conta) para exibir os detalhes.

    2. Na página Tokens de Autenticação, selecione Gerar Token.

    3. Digite uma descrição amigável para o token de autenticação. Evite digitar informações confidenciais.

    4. Selecione Gerar Token. O novo token de autenticação é exibido.

    5. Copie o token de autenticação imediatamente para um local seguro de onde poderá recuperá-lo posteriormente, porque você não o verá novamente na Console.

    6. Feche a caixa de diálogo Gerar Token.

  2. Em uma janela de terminal na máquina cliente que executa o Docker, faça log-in no Container Registry digitando docker login <registry-domain>, em que <registry-domain> inclui uma chave de região ou um identificador de região para a região do Container Registry que você está usando. Por exemplo, docker login ocir.us-ashburn-1.oci.oraclecloud.com. Consulte Disponibilidade por Região.

  3. Quando solicitado a informar um nome de usuário, informe seu nome de usuário no formato <tenancy-namespace>/<username>, em que <tenancy-namespace> corresponde à string de namespace do serviço Object Storage gerada automaticamente de sua tenancy (conforme mostrado na página Informações da Tenancy). Por exemplo, ansh81vru1zp/jdoe@acme.com.

    Se a sua tenancy for federada com oOracle Identity Cloud Service, use o formato <tenancy-namespace>/<domain-name>/<username>. Para usuários federados, o <domain-name>/<username> é exibido no menu Perfil Ícone do menu Perfil na Console. Por exemplo, se a string de namespace da sua tenancy for ansh81vru1zp e sua tenancy for federada com o Oracle Identity Cloud Service, e seu nome de usuário for jdoe@acme.com, digite ansh81vru1zp/oracleidentitycloudservice/jdoe@acme.com

  4. Quando for solicitada uma senha, informe o token de autenticação copiado anteriormente.

  5. Na máquina cliente, localize a imagem que você deseja enviar:

    1. Em uma janela de terminal na máquina cliente, digite docker images para listar as imagens disponíveis.

      Por exemplo:

          
      $ docker images
      REPOSITORY        TAG              IMAGE ID      CREATED       SIZE
      acme-web-app      latest           8e0506e14874  2 hours ago   162.6 MB
      acme-web-app      v1.0             7d9495d03763  2 hours ago   162.6 MB
      <none>            <none>           6ebd328f833d  5 hours ago   162.6 MB
      hello-world       latest           80b84820d442  5 weeks ago   890 B
      					
    2. Encontre a imagem local na máquina cliente que você deseja enviar para o Container Registry.

      Na saída do comando docker images, procure a imagem específica que você deseja enviar. Você precisará identificar exclusivamente essa imagem posteriormente de uma das seguintes formas:

      • Usando seu id.

      • Usando seu nome de imagem (seu nome de repositório e tag de imagem separados por dois-pontos).

      Por exemplo, na máquina cliente, você pode ter uma imagem acme-web-app. Na saída do comando docker images, procure a imagem acme-web-app específica que você deseja enviar. Você pode identificar exclusivamente essa imagem específica de uma das seguintes formas:

      • Usando seu id (por exemplo, 8e0506e14874).

      • Usando seu nome de imagem (seu nome de repositório e tag de imagem separados por dois-pontos, por exemplo, acme-web-app:latest).

    3. Use o comando docker tag para criar uma cópia da imagem original como uma nova imagem (a nova imagem é, na verdade, apenas uma referência para a imagem original existente). Como um nome (ou tag) para a nova imagem, especifique o caminho totalmente qualificado para o local de destino no Container Registry para onde deseja enviar a imagem, digitando:

      docker tag <image-identifier> <target-tag>

      em que:

      • <image-identifier> identifica exclusivamente a imagem original, usando o id da imagem (por exemplo, 8e0506e14874) ou o nome da imagem (seu nome do repositório original e a tag da imagem separados por dois-pontos, por exemplo, acme-web-app:latest).

      • <target-tag> é o caminho totalmente qualificado para o local de destino no Container Registry no qual você deseja enviar a imagem, no formato <registry-domain>/<tenancy-namespace>/<repo-name>:<version> em que:

        • <registry-domain> inclui a chave de região ou o identificador de região para a região do Container Registry que você está usando. Por exemplo, ocir.us-ashburn-1.oci.oraclecloud.com. Consulte domínio de registro.

        • <tenancy-namespace> corresponde à string de namespace do serviço Object Storage gerada automaticamente da tenancy que possui o repositório para o qual você deseja enviar a imagem (conforme mostrado na página Informações da Tenancy). Por exemplo, o namespace da tenancy acme-dev pode ser ansh81vru1zp. Observe que, para algumas tenancies mais antigas, a string do namespace pode ser igual ao nome da tenancy em todas as letras minúsculas (por exemplo, acme-dev). Observe também que seu usuário deve ter acesso à tenancy.

        • <repo-name> corresponde ao nome do repositório de destino para o qual você deseja enviar a imagem (por exemplo, project01/acme-web-app). Observe que geralmente você especificará um repositório que já existe, mas que nem sempre precisa ser o caso (consulte Criando um Repositório).

        • <version> é um identificador de versão que você deseja fornecer à imagem no Container Registry (por exemplo, v2.0.test).

      Por exemplo, ao combinar os exemplos anteriores, você pode informar:

      docker tag 8e0506e14874 ocir.us-ashburn-1.oci.oraclecloud.com/ansh81vru1zp/project01/acme-web-app:v2.0.test
  6. Confirme se a imagem do Docker foi marcada corretamente na máquina cliente informando docker images e verificando se a lista de imagens inclui uma imagem com a tag especificada.

    Por exemplo:

    
    $ docker images
    REPOSITORY                                                                TAG                   IMAGE ID      CREATED       SIZE
    ocir.us-ashburn-1.oci.oraclecloud.com/ansh81vru1zp/project01/acme-web-app v2.0.test             8e0506e14874  1 minute ago  162.6 MB
    acme-web-app                                                              latest                8e0506e14874  2 hours ago   162.6 MB
    acme-web-app                                                              v1.0                  7d9495d03763  2 hours ago   162.6 MB
    <none>                                                                    <none>                6ebd328f833d  5 hours ago   162.6 MB
    hello-world                                                               latest                80b84820d442  5 weeks ago   890 B
    					
  7. Envie a imagem do Docker da máquina cliente para o Container Registry informando:

    docker push <target-tag>

    em que <target-tag> está no formato <registry-domain>/<tenancy-namespace>/<repo-name>:<version>, em que:

    • <registry-domain> inclui a chave de região ou o identificador de região para a região do Container Registry que você está usando. Por exemplo, ocir.us-ashburn-1.oci.oraclecloud.com. Consulte domínio de registro.

    • <tenancy-namespace> corresponde à string de namespace do serviço Object Storage gerada automaticamente da tenancy que possui o repositório para o qual você deseja enviar a imagem (conforme mostrado na página Informações da Tenancy). Por exemplo, o namespace da tenancy acme-dev pode ser ansh81vru1zp. Observe que, para algumas tenancies mais antigas, a string do namespace pode ser igual ao nome da tenancy em todas as letras minúsculas (por exemplo, acme-dev). Observe também que seu usuário deve ter acesso à tenancy.

    • <repo-name> corresponde ao nome do repositório de destino para o qual você deseja enviar a imagem (por exemplo, project01/acme-web-app). Observe que geralmente você especificará um repositório que já existe, mas que nem sempre precisa ser o caso (consulte Criando um Repositório).

    • <version> é o identificador de versão que você deseja fornecer à imagem no Container Registry (por exemplo, v2.0.test).

    Por exemplo:

    docker push ocir.us-ashburn-1.oci.oraclecloud.com/ansh81vru1zp/project01/acme-web-app:v2.0.test