> For the complete documentation index, see [llms.txt](https://platform9.com/kb/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://platform9.com/kb/smcp/how-to/how-to-manually-push-docker-image-registry-from-du-host-to-du-vm.md).

# 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
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

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

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
