I am using buildpack to build a docker container, and I want to publish it to a remote container registry.
I am using this command:
pack build myapp --builder heroku/buildpacks:20 --publish
However, this yields the following error:
ERROR: failed to : ensure registry read access to myapp
ERROR: failed to build: executing lifecycle: failed with status code: 1
How can I specify the remote registry URL and credentials? I tried running docker login before running my command but received the same error. The documentation only says the following:
--publish Publish to registry
It follows the same principles as docker tag and docker push.
You need to docker login to your target registry first. pack will also use this to authenticate with your target registry.
You need to use the format <registry-host>:<port>/<project>/<image>:<tag> for the value of your image name. This is the same as with docker push and this is how both utilities know where to send the image.
https://docs.docker.com/engine/reference/commandline/push/#push-a-new-image-to-a-registry
For example:
pack build docker.io/user/myapp:v1.0 --builder heroku/buildpacks:20 --publish
Related
I am trying to run docker container in ecs using docker compose.
I have build the image and created the context as well using
docker compose create myecs
But when i run the command docker compose up am getting the following error
UnrecognizedClientException: The security token included in the request is invalid.
status code: 400, request id: 0bb44cc9-4de3-4ac0-a6d5-685069dab0ee
aws configure output:
I have created Azure Container Registry
I am able to push an image from local to Azure container Registry.
I can pull or run any docker commands it always gives me the error saying
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
I am new to Azure, please is something i need to install or enable for docker
when I ran docker--version it is showing the version perfectly
I got this error because used 'Azure Cloud Shell' that doesn't support running the docker daemon.
To fix it need to run CMD or Power Shell and execute commands:
# az login
az acr login -n your_registry_name.azurecr.io
docker pull your_registry_name.azurecr.io/company_name/service_image:version
For building and pushing image to Azure, you should user 'acr' command instead of 'docker'.
Follow these steps to build and push docker image to Azure Container Registry -
Open Azure Cloud Shell
Get necessary files
git clone https://github.com/tsrana/spring-boot-db2.git ,
cd spring-boot-db2
Create a Resource Group
az group create --name Docker_RG --location eastus
Create Container Registry
az acr create --resource-group Docker_RG --name tsrContainerRegistry --sku Basic
Build image and push to registry
az acr build --image tsr/hello-worldspring-boot-db2:v1 --registry tsrContainerRegistry --file Dockerfile
I'm trying to deploy a docker image from docker hub on openshift.
I crated an image with a simple spring boot rest application:
https://hub.docker.com/r/ernst1970/my-rest
After logging into openshift an choosing the correct project I do
oc new-app ernst1970/my-rest
And I get
W0509 13:17:28.781435 16244 dockerimagelookup.go:220] Docker registry lookup failed: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Clien
t.Timeout exceeded while awaiting headers)
error: Errors occurred while determining argument types:
ernst1970/my-rest as a local directory pointing to a Git repository: GetFileAttributesEx ernst1970/my-rest: The system cannot find the path specified.
Errors occurred during resource creation:
error: no match for "ernst1970/my-rest"
The 'oc new-app' command will match arguments to the following types:
1. Images tagged into image streams in the current project or the 'openshift' project
- if you don't specify a tag, we'll add ':latest'
2. Images in the Docker Hub, on remote registries, or on the local Docker engine
3. Templates in the current project or the 'openshift' project
4. Git repository URLs or local paths that point to Git repositories
--allow-missing-images can be used to point to an image that does not exist yet.
See 'oc new-app -h' for examples.
I also tried with
oc new-app mariadb
But got the same error message.
I thought this might be a proxy problem. So I added the proxy to my .profile:
export http_proxy=http://ue73011:secret#dev-proxy.wzu.io:3128
export https_proxy=http://ue73011:secret#dev-proxy.wzu.io:3128
Unfortunately this did not change anything.
Any ideas why this is not working?
your docker daemon needs the proxy so it can reach the DockerHub. You can specify proxy server by providing it as an environment variable for the docker daemon.
Take a look at the official Docker documentation: https://docs.docker.com/config/daemon/systemd/
sudo mkdir -p /etc/systemd/system/docker.service.d
Add a file /etc/systemd/system/docker.service.d/http-proxy.conf which should contain following
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80/" "NO_PROXY=localhost,127.0.0.1,docker-registry.example.com,.corp"
Reload your changes and restart docker daemon
sudo systemctl daemon-reload
sudo systemctl restart docker
Verify by doing a simple "docker pull ... "
I am following the instructions for the custom-vision service on raspberry-pi on IOT edge.
I have reached step 3, where in VS Code I am executing Build and Push to IOT Edge Solution and this is triggering the following command:
docker build --rm -f "/Users/myname/Dropbox/Dev/azure/custom-vision/Custom-vision-service-iot-edge-raspberry-pi/modules/CameraCapture/arm32v7.Dockerfile" -t registry.hub.docker.com/v1/repositories/myname/iot-hub-1/cameracapture:0.2.7-arm32v7 "/Users/myname/Dropbox/Dev/azure/custom-vision/Custom-vision-service-iot-edge-raspberry-pi/modules/CameraCapture"
&& docker push registry.hub.docker.com/v1/repositories/myname/iot-hub-1/cameracapture:0.2.7-arm32v7
&& docker build --rm -f "/Users/myname/Dropbox/Dev/azure/custom-vision/Custom-vision-service-iot-edge-raspberry-pi/modules/ImageClassifierService/arm32v7.Dockerfile" -t registry.hub.docker.com/v1/repositories/myname/iot-hub-1/imageclassifierservice:0.2.4-arm32v7 "/Users/myname/Dropbox/Dev/azure/custom-vision/Custom-vision-service-iot-edge-raspberry-pi/modules/ImageClassifierService"
&& docker push registry.hub.docker.com/v1/repositories/myname/iot-hub-1/imageclassifierservice:0.2.4-arm32v7
Which is failing with 404 - page not found.
I also tried using cloud.docker.com/repository/registry-1.docker.io/myname/iot-hub-1 but this gave me a different error:
invalid argument
"cloud.docker.com/repository/docker/myname/iot-hub-1:latest/cameracapture:0.2.7-arm32v7"
for "-t, --tag" flag: invalid reference format
Can anyone assist with the correct URL path, or some the additional steps i need to uploading the containers to my docker hub repository?
I couldn't find the correct URL for dockerhub, but Azure Container Registry was able to resolve my problem.
Details of the URL are here: Raspberry PI / IOTEdge failing to pull from Azure Container Registry
You need docker login first. Then build image docker build -t <docker_hub_username>/<app_name>:<tag> and then just push docker push <docker_hub_username>/<app_name>:<tag>. You don't need to specify any specific URL for Docker Hub.
Use this:
docker push <hub-user>/<repo-name>:<tag>
i.e
docker push username/reponame:latest
From the docker quickstart terminal on Windows 7 64-bit, I'm following the instructions to install this docker container. I run the command,
docker run http://wiki.openstreetmap.org/wiki/nominatim
and I get this error:
c:\program files\docker toolbox\docker.exe: invald reference format.
I can't find any information about this error related to this container.
You need to pull the image first , then run the container. according to your docker command, you are trying to access a website, it is not a docker container image. so that's why it is giving you the invalid reference format.
The image name that you have specified to pull and run is wrong. The image name should be mediagis/nominatim.
Your docker run command should be
docker run mediagis/nominatim
It is not necessary to pull the image first and run it. By default docker run first tries to find such image in your machine if not then it tries to download from docker repository.
If you specify URL format it directly downloads from private repo if such image is not found in your machine.
Brief Explanation:
Docker takes whatever that is in form of url as an image and the reason for this is sometimes you may want to run image from your private repository. So here http://wiki.openstreetmap.org/wiki/nominatim is considered as an image called wiki/nominatim from a private repo called wiki.openstreetmap.org by docker and the format of private repo and image is wrong . It should be <domain.com>/image:tag where tag is optional. You are not supposed to provide protocol (http://). See this for reference Hence the error is thrown as invalid reference format.
If you would have given as docker run wiki.openstreetmap.org/wiki/nominatim it would have tried to download image called wiki/nominatim from wiki.openstreetmap.org private repo with latest tag. Since no such repo and image exists it reports Error response from daemon: error parsing HTTP 404 response body as the url throws 404: Not Found when docker daemon tries connecting to it.
References:
Pull an image from Docker Hub
Pull from a different registry
docker run
Docker run reference
Note: Unless you specify tag name which is optional docker always downloads latest tag from repo.
docker run http://wiki.openstreetmap.org/wiki/nominatim
does non make any sense syntactically ...
In any case the correct command to get the latest image is:
sudo docker pull mediagis/nominatim:3.1
Notice that each version has its own installation instructions (versions prior to 3.1 were structurally different), so please do refer to the appropriate section:
https://hub.docker.com/r/mediagis/nominatim/tags/
However I do agree with you that
docker run --restart=always -p 6432:5432 -p 7070:8080 -d -v /home/me/nominatimdata/postgresdata:/var/lib/postgresql/9.5/main nominatim sh /app/start.sh
Should be
docker run --restart=always -p 6432:5432 -p 7070:8080 -d -v /home/me/nominatimdata/postgresdata:/var/lib/postgresql/9.5/main mediagis/nominatim sh /app/start.sh
instead. The installation instructions need updating there.