Existing docker image not being detected for docker container creation - docker

Currently has following docker images locally:
(tts_test) root#e2e-100-17:~/Documents/tritonTTSdeployment# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
customtritonimagetts latest a34706205a9a 5 minutes ago 17.7GB
tritonserver latest 19817c37bb25 12 minutes ago 8.81GB
registry.k8s.io/kube-apiserver v1.26.1 deb04688c4a3 11 days ago 134MB
registry.k8s.io/kube-scheduler v1.26.1 655493523f60 11 days ago 56.3MB
registry.k8s.io/kube-controller-manager v1.26.1 e9c08e11b07f 11 days ago 124MB
registry.k8s.io/kube-proxy v1.26.1 46a6bb3c77ce 11 days ago 65.6MB
registry.k8s.io/etcd 3.5.6-0 fce326961ae2 2 months ago 299MB
nvcr.io/nvidia/tritonserver 22.10-py3-min 8bc805049606 3 months ago 6.72GB
nvcr.io/nvidia/tritonserver 22.10-py3 486d7ee640ad 3 months ago 13.5GB
registry.k8s.io/pause 3.9 e6f181688397 3 months ago 744kB
registry.k8s.io/coredns/coredns v1.9.3 5185b96f0bec 8 months ago 48.8MB
registry.k8s.io/pause 3.6 6270bb605e12 17 months ago 683kB
gcr.io/k8s-minikube/storage-provisioner v5 6e38f40d628d 22 months ago 31.5MB
Command to create container:
docker run -t customtritonimagetts
Still after trying to run the following command to create docker container, it's not creating the docker container and throwing following error:
Unable to find image 'customtritonimagetts:latest' locally
docker: Error response from daemon: pull access denied for customtritonimagetts, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
See 'docker run --help'.
earlier i was trying to configure Minikube and might have caused some issues with docker images creation and image registry. What can be possible issues!
[NOTE: there was slight typo error which i corrected and the issue still persist]

Make sure the repository is public, this error means that the docker image you are trying to pull is private.Only logged users with permissions may pull the image.
Try the troubleshooting steps:
1- docker logout
2- docker login --username=YOURUSERNAME Enter password when asked
3- docker pull repositoryName"/"imageName[:tag]
if "tag" is not included the default value will be "latest". Then check the images by docker images command to check if it's been pulled. After pulling it you can make the repository private again.

Related

Unable to remove python and ubuntu docker images

I am new to using dockers,so i found these python and ubuntu images when executing docker images and i am unable to remove it using docker rmi {image_id}.
Error response from daemon: conflict: unable to delete ba6acccedd29 (cannot be forced) - image has dependent child images
It was using up significant space,hence i was a bit concerned.
REPOSITORY TAG IMAGE ID CREATED SIZE
docker_jupyter latest 90708b9040df 28 hours ago 1.94GB
ubuntu 20.04 ba6acccedd29 7 days ago 72.8MB
testapi latest 82e970c819ff 6 weeks ago 1.33GB
python 3.9 a5210955ee89 6 weeks ago 911MB
python latest a5210955ee89 6 weeks ago 911MB
you have to delete the other images that depend on them first
I think "test_api" and "jupyter" images depends on python so u need to delete them first

Docker Image Deleted

I made a goof while trying to rename an image by following the steps on this page that say to create a tag then delete the original
Docker how to change repository name or rename image?
Now when I list the images it doesn't show up anymore. However, when I list the containers the image still shows up.
PS C:\Users\Grail> docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 157be28c0fe3 7 days ago 668MB
fedora latest a368cbcfa678 2 months ago 183MB
PS C:\Users\Grail> docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS
1ea5ffd50852 157be28c0fe3 "/bin/bash" 7 hours ago Exited (0) 7 hours ago
fb81990e756c 0d120b6ccaa8 "/bin/bash" 10 hours ago Exited (0) 24 minutes ago
081641b3e600 a368cbcfa678 "/bin/bash" 11 hours ago Exited (0) 31 minutes ago
Not only that, the image (0d120b6ccaa8) still shows up in my Docker Dashboard (running on Windows) and I can start/stop it without any problems.
Clearly the image still exists. Can I restore it such that I can see it when I list the images?
Can it be restored from the container?
If it's in a weird state/unrecoverable, how do I actually delete it so it's not taking up space?
Update:
Thanks to #prashanna I went down a path where I exported the container and imported to get the image:
docker export -o mycontainer.tar fb81990e756c
docker import mycontainer.tar
**docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]**
is for creating a new image from a container, meaning when you update or add new config or install new software, thus creating a new template images.
ref:docker commit

How can we see cached images in kubernetes?

I am using kops as kubernetes deployment.
I noticed that whenever an image with same tag number is entered in deployment file the system takes the previous image if imagepullpolicy is not set to always
Is there any way in which I can see all the cached images of a container in kubernetes environment ?
Like suppose I have an image test:56 currently running in a deployment and test:1 to test:55 were used previously, so does kubernetes cache those images ? and if yes where can those be found ?
Comments on your environment:
I noticed that whenever an image with same tag number is entered in deployment file the system takes the previous image if imagepullpolicy is not set to always
A pre-pulled image can be used to preload certain images for speed or as an alternative to authenticating to a private registry, optimizing performance.
The docker will always cache all images that were used locally.
Since you are using EKS, keep in mind that if you have node health management (meaning a node will be replaced if it fails) the new node won't have the images cached from the old one so it's always a good idea to store your images on a Registry like your Cloud Provider Registry or a local registry.
Let's address your first question:
Is there any way in which I can see all the cached images of a container in kubernetes environment ?
Yes, you must use docker images to list the images stored in your environment.
Second question:
Like suppose I have an image test:56 currently running in a deployment and test:1 to test:55 were used previously, so does Kubernetes cache those images ? and if yes where can those be found ?
I prepared an example for you:
I deployed several pods based on the official busybox image:
$ kubectl run busy284 --generator=run-pod/v1 --image=busybox:1.28.4
pod/busy284 created
$ kubectl run busy293 --generator=run-pod/v1 --image=busybox:1.29.3
pod/busy284 created
$ kubectl run busy284 --generator=run-pod/v1 --image=busybox:1.28
pod/busy28 created
$ kubectl run busy284 --generator=run-pod/v1 --image=busybox:1.29
pod/busy29 created
$ kubectl run busy284 --generator=run-pod/v1 --image=busybox:1.30
pod/busy284 created
$ kubectl run busybox --generator=run-pod/v1 --image=busybox
pod/busybox created
Now let's check the images stored in docker images
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
k8s.gcr.io/kube-proxy v1.17.3 ae853e93800d 5 weeks ago 116MB
k8s.gcr.io/kube-controller-manager v1.17.3 b0f1517c1f4b 5 weeks ago 161MB
k8s.gcr.io/kube-apiserver v1.17.3 90d27391b780 5 weeks ago 171MB
k8s.gcr.io/kube-scheduler v1.17.3 d109c0821a2b 5 weeks ago 94.4MB
kubernetesui/dashboard v2.0.0-beta8 eb51a3597525 3 months ago 90.8MB
k8s.gcr.io/coredns 1.6.5 70f311871ae1 4 months ago 41.6MB
k8s.gcr.io/etcd 3.4.3-0 303ce5db0e90 4 months ago 288MB
kubernetesui/metrics-scraper v1.0.2 3b08661dc379 4 months ago 40.1MB
busybox latest 83aa35aa1c79 10 days ago 1.22MB
busybox 1.30 64f5d945efcc 10 months ago 1.2MB
busybox 1.29 758ec7f3a1ee 15 months ago 1.15MB
busybox 1.29.3 758ec7f3a1ee 15 months ago 1.15MB
busybox 1.28 8c811b4aec35 22 months ago 1.15MB
busybox 1.28.4 8c811b4aec35 22 months ago 1.15MB
You can see all the pushed images listed.
It's good to clean old resources from your system using the command docker system prune to free space on your server from time to time.
If you have any doubt, let me know in the comments.

Kitematic not showing any Images/Containers

I have pulled three images from docker hub using docker.I have listed those three images below
suju#suju-VirtualBox:~$ sudo docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest 71b5c7e10f9b 11 days ago 477MB
hello-world latest fce289e99eb9 4 weeks ago 1.84kB
java latest d23bdf5b1b1b 2 years ago 643MB
And i installed kitematic 0.17.6 for purpose of Managing Docker container
but when i open kitematic, it doent show any container, its just shows a white window without any options except exit

How to link container with a new image?

I am new to Docker and tried to check how to make changes in a docker container and commit them to reflect in the results. I have AWX running on Docker-CE and had created made changes in awx_web container to update the UI logo as mentioned in the Ansible Tower documentation:
docker cp custom_console_logo.png aea2551951d5:/var/lib/awx/public/static/assets
and created the local_settings.json in /var/lib/awx/public/static/ one of the running awx_web container using the following and then using the bash command to create and save file:
docker exec -it aea2551951d5 bash
Post this, i have commited the changes so that the changes are reflected permanently in the image file and in UI using:
docker commit aea2551951d5 ansible/awx_web
I have verified the changes in the container files and it appears to be fine however, the changes are not getting reflected when i verified them on browser. It appears like the existing container is pointing to the old image file:
CONTAINER ID IMAGE
aea2551951d5 b7c261b76010
I am not sure what was missed. Could anyone suggest if i have missed anything and how do i fix this?
Following are the containers:
[root#localhost~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
80ab6bf562a9 ansible/awx_task:latest "/tini -- /bin/sh -c…" 13 days ago Up 3 days 8052/tcp awx_task
aea2551951d5 b7c261b76010 "/tini -- /bin/sh -c…" 13 days ago Up 3 hours 0.0.0.0:80->8052/tcp awx_web
e789a4a82a9e memcached:alpine "docker-entrypoint.s…" 13 days ago Up 3 days 11211/tcp memcached
a8c74584255c ansible/awx_rabbitmq:3.7.4 "docker-entrypoint.s…" 13 days ago Up 3 days 4369/tcp, 5671-5672/tcp, 15671-15672/tcp, 25672/tcp rabbitmq
25f6f6ca7766 postgres:9.6 "docker-entrypoint.s…" 13 days ago Up 3 days 5432/tcp postgres
Following are the Images:
[root#localhost~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
ansible/awx_web latest 1accc59cbdee 2 hours ago 1.06GB
b7c261b76010 latest 998ec3e77fd8 3 hours ago 1.06GB
postgres 9.6 106bdfb062df 6 weeks ago 235MB
ansible/awx_task latest 535bb2b8e1f3 6 weeks ago 1.07GB
ansible/awx_web <none> b7c261b76010 6 weeks ago 1.04GB
hello-world latest 2cb0d9787c4d 2 months ago 1.85kB
memcached alpine b40e8fa7e3e5 2 months ago 8.69MB
ansible/awx_rabbitmq 3.7.4 e08fe791079e 5 months ago 85.6MB
[root#clab2726vw0001 ~]#
Environment Information:
Docker Version: 18.06.0-ce, build 0ffa825
AWX Version: 1.0.6.41
Ansible Version: 2.6.1
RHEL Version: Red Hat Enterprise Linux Server release 7.5 (Maipo)
Containers are the running instances of images and the container id is unique for the particular image.
We cannot use the same 12 digit container id as a reference for the other images. When we use "commit" it create a new fresh container for the new image.
This new container will contain all the changes needed.
You can try with naming the container.
Give a name to container (using docker rename command) .
Make your changes in container.
Commit it.
Give same name to new container generated for the new image.
Rename old container with some other name.
Now you have the same container name (as you were using before) but with new Image.

Resources