# How To Manually Push Docker Image Registry?

## Problem

Node in NotReady state, Nodeletd Phases output failing, with missing images.

{% tabs %}
{% tab title="Nodelet phases" %}

```javascript
{"L":"INFO","T":"2023-12-01T07:01:51.885Z","C":"command/command.go:120","M":"[2023-12-01 07:01:51] docker: Error response from daemon: manifest for localhost:5100/kube-proxy:v1.20.11 not found: manifest unknown: manifest unknown."}
```

{% endtab %}
{% endtabs %}

## Environment

* Platform9 Edge Cloud (PEC) - Airctl v-5.3.0-2075501

## Solution

Manually push the Docker registry from DU Host to the DU VM.

Procedure to manually push the images:

Verify if the DU host has the required docker registry tar available at `/opt/pf9/airctl/imgs/docker-imgs-{airctl-version}.tar.gz`.

{% tabs %}
{% tab title="Tar on DU Host" %}

```javascript
# la /opt/pf9/airctl/imgs/docker-imgs-v-5.3.0-2075501.tar.gz
```

{% endtab %}
{% endtabs %}

Once tar is available for the required Airctl version, proceed with the below steps to push the Docker registry from the DU host to DU VM.

1. Execute the push-images command as shown below:

{% tabs %}
{% tab title="On DU Host" %}

```javascript
# /opt/pf9/airctl/airctl --config /opt/pf9/airctl/conf/airctl-config.yaml advanced-du push-images --img-tar /opt/pf9/airctl/imgs/docker-imgs-v-5.3.0-2075501.tar.gz --verbose
```

{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="On success" %}

```javascript
Pushing images 100% |████████████████████████████████████████|  [12m42s:0s]2023-06-23T08:01:18.873Z info  finish progressbar: success
2023-06-23T08:01:18.874Z info success
 success
2023-06-23T08:01:18.960Z info closing tunnel
registry push done
```

{% endtab %}
{% endtabs %}

2. Verify if the images are available now.

{% tabs %}
{% tab title="DU VM - Docker path" %}

```javascript
[root@airctl-1-2683490-924.pf9.localnet ~(admin)]# cd /opt/pf9/images/data/docker/registry/v2/
[root@airctl-1-2683490-924.pf9.localnet v2(admin)]# ll
total 4
drwxr-xr-x  3 root root   20 Jun 23 07:48 blobs
drwxr-xr-x 32 root root 4096 Jun 23 08:01 repositories
[root@airctl-1-2683490-924.pf9.localnet v2(admin)]# du -sch *
4.0G	blobs
4.5M	repositories
4.0G	total
```

{% endtab %}
{% endtabs %}

```
  OR
```

{% tabs %}
{% tab title="Curl request" %}

```javascript
[root@airctl-1-2683490-924.pf9.localnet v2(admin)]# curl http://localhost:5100/v2/_catalog | jq
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1438  100  1438    0     0  43255      0 --:--:-- --:--:-- --:--:-- 43575
{
  "repositories": [
    "addon-resizer",
    "autoscaling/addon-resizer",
    "busybox",
    "calico/cni",
    .
    . 
     // multiple images should list here
    .
    "prometheus-operator/prometheus-operator",
    "python"
  ]
}
```

{% endtab %}
{% endtabs %}

3. Once confirmed with the above output, docker images are successfully extracted to the DU VM.
4. Restart the Nodeletd stack as mentioned in <https://platform9.com/kb/kubernetes/how-to-restart-pmk-stack->


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://platform9.com/kb/smcp/how-to/how-to-manually-push-docker-image-registry-from-du-host-to-du-vm.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
