4
votes

"gcloud auth configure-docker" sur l'instance de VM GCP avec Ubuntu n'est pas configuré correctement?

J'ai créé une instance de VM sur GCP à l'aide d'Ubuntu 18.10. Lorsque je SSH la VM sans aucune modification et que j'essaye:

Cloud SDK on PATH: [False]
Kubectl on PATH: [False]
WARNING: There are old versions of the Google Cloud Platform tools on your system PATH.
  /usr/bin/snap

J'ai un avertissement:

sudo gcloud alpha auth configure-docker

Si j'essaye de m'authentifier avec:

sudo apt-get update && sudo apt-get install google-cloud-sdk

Je vois:

WARNING: `docker-credential-gcloud` not in system PATH.

Il semble qu'une version assez récente de gcloud soit installée:

sudo gcloud auth configure-docker

Il ne semble pas que je sois autorisé à mettre à jour gcloud sur une telle instance.

Ensuite, j'ai installé Docker et extrait une image de docker.

sudo docker tag tensorflow/serving gcr.io/xxx/tf-serving
sudo docker push gcr.io/xxx/tf-serving
Unauthorized: You don't have the needed permissions to perform this operation, and you may have invalid credentials. To authenticate your request
st, follow the steps in https://cloud.google.com/container-registry/docs/advanced-authentication

Cela fonctionne très bien. Le problème est que je ne peux pas pousser l'image sur GCP Container Registry:

sudo snap install docker
sudo docker pull tensorflow/serving

et dans le lien, il est expliqué que je dois exécuter:

sudo gcloud version

Google Cloud SDK 230.0.0
alpha 2019.01.11
beta 2019.01.11
bq 2.0.39
core 2019.01.11
gsutil 4.35
kubectl 2019.01.11

Comment résoudre le problème? Le problème est déjà présent lorsque je SSH la VM?

WARNING: `docker-credential-gcloud` not in system PATH.
gcloud's Docker credential helper can be configured but it will not work until this is corrected.
WARNING: `docker` not in the system PATH.
`docker` and `docker-credential-gcloud` need to be in same PATH in order to work correctly together.
gcloud's Docker credential helper can be configured but it will not work until this is corrected.
The following settings will be added to your Docker config file 

Je peux pousser l'image sur DockerHub sans aucun problème.

J'ai essayé de réinstaller google- cloud-sdk:

sudo gcloud auth configure-docker

Mais maintenant je dois utiliser:

System PATH: [/snap/google-cloud-sdk/66/usr/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/game
s:/snap/bin]
Python PATH: [/snap/google-cloud-sdk/66/lib/third_party:/snap/google-cloud-sdk/66/lib:/snap/google-cloud-sdk/66/usr/lib/python2.7/:/snap
/google-cloud-sdk/66/usr/lib/python2.7/plat-x86_64-linux-gnu:/snap/google-cloud-sdk/66/usr/lib/python2.7/lib-tk:/snap/google-cloud-sdk/6
6/usr/lib/python2.7/lib-old:/snap/google-cloud-sdk/66/usr/lib/python2.7/lib-dynload]
Cloud SDK on PATH: [False]
Kubectl on PATH: [False]
WARNING: There are old versions of the Google Cloud Platform tools on your system PATH.
  /usr/bin/snap

et la fin je ne peux toujours pas pousser l'image .

Cela semble être lié à un problème de chemin:

gcloud info

Une idée? J'ai suivi la documentation GCP étape par étape. Je regarde également GCP IAM pour accorder un accès à mon bucket.

Je suis nouveau sur GCP et Cloud, il me manque probablement quelque chose d'évident. Au fait, je dois créer une image Docker en utilisant un script shell, donc je dois utiliser ce type de VM car sur l'autre VM pour laquelle beaucoup de choses sont déjà pré-installées sont montées avec le drapeau "noexec". p>


0 commentaires

3 Réponses :


0
votes

le problème peut être l'installation de snap ; supprimez simplement / snap / google-cloud-sdk du système. ou vérifiez quel gcloud pour voir lequel est même utilisé. la version apt ne semble pas avoir ces packages de docker disponibles - et aussi, le $ PATH ne répertorie que cette version de snap .

ordinaire, les composants peuvent être mis à jour avec:

curl https://sdk.cloud.google.com | bash

ou répertoriés:

gcloud components install docker-credential-gcr 

ou installés: p >

gcloud components list

suggère d'installer simplement la version autonome avec:

gcloud components update

après avoir supprimé le snap code > et la version apt , à partir du système de fichiers et de $PATH.


4 commentaires

gcloud semble être là: quel gcloud "/ snap / bin / gcloud" sudo ls -la / snap / bin / gcloud "lrwxrwxrwx 1 root root 23 février 2 14:32 / snap / bin / gcloud -> google-cloud-sdk .gcloud "Je ne peux pas mettre à jour ou installer des composants:" ERREUR: (gcloud.components.install) Vous ne pouvez pas effectuer cette action car cette installation du SDK Cloud est gérée par un gestionnaire de packages externe. "


sudo apt-get remove google-cloud-sdk && sudo snap remove google-cloud-sdk devrait supprimer les deux, puis la version autonome peut être fraîchement installée - et l'ajout de composants devrait fonctionner. la version autonome est en effet moins problématique; a également eu des problèmes avec la version du gestionnaire de packages sur CentOS - car il essaie toujours de se mettre à jour, alors qu'il n'est pas autorisé de le faire - ainsi que, que seuls les composants packagés peuvent être installés.


Je vais réessayer à partir de zéro. J'ai réussi à installer la version manuellement et je vois gcloud utiliser la nouvelle version: SDK Google Cloud [232.0.0] J'ai toujours l'avertissement avec le chemin et je ne peux toujours pas pousser l'image. Je vais réessayer et utiliser vos options ci-dessus pour supprimer google-cloud-sdk, peut-être que je n'ai pas nettoyé le chemin correctement. Merci


avec vos recettes, j'ai réussi à avoir une installation propre de gcloud. Plus d'avertissement avec "gcloud auth configure-docker" mais toujours le même problème pour pousser l'image dans le référentiel de conteneurs GCP. Quelle API ou quel droit d'accès sont nécessaires pour mon bucket?



2
votes

Voici ce qui fonctionne actuellement (merci à Google pour l'aide)

Configuration:

  • Choisissez Ubuntu 18.10 (GNU / Linux 4.18.0-1005-gcp x86_64)
    ajouter un disque de 20 Go + autoriser http et http
    définir l'accès pour chaque API -> Stockage: lecture / écriture
  • sudo snap supprimer google-cloud-sdk
  • curl https://sdk.cloud.google.com | bash
  • se reconnecter à la VM
  • installer le docker https://docs.docker.com/install/ linux / docker-ce / ubuntu /
    sudo apt-get supprimer docker docker-engine docker.io containerd runc
    sudo apt-get mise à jour
    sudo apt-get install \
    apt-transport-https \
    certificats ca \
    curl \
    agent-gnupg \
    propriétés-logiciels-communes
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key ajouter -
    sudo add-apt-repository \
    "deb [arch = amd64] https://download.docker.com/linux/ubuntu \
    $ (lsb_release -cs) \
    stable "
    sudo apt-get mise à jour
    sudo apt-get install docker-ce docker-ce-cli containerd.io
    sudo docker exécute hello-world # test
  • sudo usermod -a -G docker LOGIN
  • se reconnecter à la VM
  • gcloud auth configure-docker

Test de docker pull / push sur GCP

  • docker pull tensorflow / portion
  • tag docker tensorflow / servant gcr.io/BUCKET_NAME/tf-serving
  • docker push gcr.io/BUCKET_NAME/tf-serving
    (si vous ne donnez pas l'accès en écriture lors de la création de la VM: utilisez "gcloud auth login")

maintenant cela fonctionne


3 commentaires

Eh bien, pas une solution stable. N'a pas fonctionné sur la même VM après avoir construit la base de données! Après quelques essais et "gcloud init", cela fonctionne à nouveau. Pas une solution valable, désolé!


Le problème est que "gcloud auth print-access-token" n'est valide que pendant une courte période. C'est pourquoi cette solution n'est pas valable.


ok, maintenant j'ai une solution qui fonctionne. J'ai mis à jour la solution ci-dessus.



5
votes

Le package Snap contient docker-credential-gcloud dans / snap / google-cloud-sdk / current / bin / . Vous pouvez créer un lien symbolique vers / usr / local / bin en utilisant:

error: cannot perform the following tasks:
- Setup manual alias "docker-credential-gcloud" => "docker-credential-gcloud" for snap "google-cloud-sdk" (cannot enable alias "docker-credential-gcloud" for "google-cloud-sdk", target application "docker-credential-gcloud" does not exist)

Après cela, pousser les images Docker vers Google Container Registry (gcr.io) fonctionne correctement.

J'ai également essayé sudo snap alias google-cloud-sdk.docker-credential-gcloud docker-credential-gcloud pour créer un lien symbolique similaire à celui de gcloud code> lui-même. Mais cela a échoué avec l'erreur suivante:

sudo ln -s /snap/google-cloud-sdk/current/bin/docker-credential-gcloud /usr/local/bin


0 commentaires