简体   繁体   中英

ERROR Unable to push image 'library/web:latest' to registry 'docker.io'. Error: denied: requested access to the resource is denied - Kompose up

I have a simple docker-compose.yml file defined this way:

version: '3'
services:
  db:
    image: postgres:10.5-alpine
    ports:
      - 5432:5432
    volumes:
      - ./tmp/postgres_data:/var/lib/postgresql/data
  web:
    build:
      context: .
      dockerfile: Dockerfile
    command: /bin/bash -c "rm -f /tmp/server.pid && bundle exec rails server -b 0.0.0.0 -P /tmp/server.pid"
    ports:
      - 3000:3000
    depends_on:
      - db
    volumes:
      - .:/app 

I'm using [ Kompose ] ( https://kubernetes.io/docs/tasks/configure-pod-container/translate-compose-kubernetes/#kompose-up ) for converting my docker-compose.yml to Kubernetes

When I do kompose convert , everything looks fine.

This is the output:

 ✗ kompose convert  
    INFO Kubernetes file "db-service.yaml" created    
    INFO Kubernetes file "web-service.yaml" created   
    INFO Kubernetes file "db-deployment.yaml" created 
    INFO Kubernetes file "db-claim0-persistentvolumeclaim.yaml" created 
    INFO Kubernetes file "web-deployment.yaml" created 
    INFO Kubernetes file "web-claim0-persistentvolumeclaim.yaml" created 

My issue is when I do kompose up I get the following errors

✗ kompose up   
WARN Volume mount on the host "/Users/salo/Desktop/ibm-watson-ruby/tmp/postgres_data" isn't supported - ignoring path on the host 
INFO Build key detected. Attempting to build image 'web' 
INFO Building image 'web' from directory 'ibm-watson-ruby' 
INFO Image 'web' from directory 'ibm-watson-ruby' built successfully 
INFO Push image enabled. Attempting to push image 'web' 
INFO Pushing image 'library/web:latest' to registry 'docker.io' 
WARN Unable to retrieve .docker/config.json authentication details. Check that 'docker login' works successfully on the command line.: Failed to read authentication from dockercfg 
INFO Authentication credentials are not detected. Will try push without authentication. 
INFO Attempting authentication credentials 'docker.io 
ERRO Unable to push image 'library/web:latest' to registry 'docker.io'. Error: denied: requested access to the resource is denied 
FATA Error while deploying application: k.Transform failed: Unable to push Docker image for service web: unable to push docker image(s). Check that `docker login` works successfully on the command line 

As a note, I'm currently logged in to my Docker Hub account. I did docker login

Thanks in advance: :)

Kubernetes basically requires a Docker registry to be able to work; it cannot build local images. You mention you have a Docker Hub account, so you need to add a reference to that as the container's image: in the docker-compose.yml file.

version: '3'
services:
  web:
    build: .
    image: myname/web # <-- add this line
    ports:
      - 3000:3000
    depends_on:
      - db
    # command: is in the image
    # volumes: overwrite code in the image and don't work in k8s

When Kompose tries to push the image, it will use the image: name. You should be able to separately attempt to docker-compose push which will do the same thing.

Note that I deleted the volumes: that bind-mounts your application code into your container. This setup does not work in Kubernetes: it doesn't have access to your local system and you can't predict which node will actually be running your application. It's worth double-checking in plain Docker that your built image works the way you expect, without overwriting its code. (Debugging this in Docker will be easier than debugging it in Kubernetes.)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM