# Configure Image Registry for CRI-containerd
This document describes the methods to configure the image registry for `cri-containerd`.

In `cri-containerd`, `docker.io` is the default image registry. You can also set up other image registries similar to docker. `cri-containerd` provides two ways to set up the image registry.

<!-- TODO: will remove the document for standalone mode, ref `containerd/containerd#2120` -->

## Configure Image Registry with `--registry` Option

Start `cri-containerd` with `--registry` option like:
```bash
$ cri-containerd \
    --registry=test.secure-registry.io=https://HostIP1:Port1 \
    --registry=test.insecure-registry.io=http://HostIP2:Port2
```

If you want configure a insecure registry, you need set the endpoint with `http://` prefix. If you want to configure a secure registry, you need set the endpoint with `https://` prefix.

This method is only suitable for standalone mode.


## Configure Image Registry with Config File in Standalone Mode
In standalone mode, `cri-containerd` also specifies registris using the configuration file located in `/etc/cri-containerd/config.toml`. You can set registries in the configuration file as follows:
```toml
[registry.mirrors]
  [registry.mirrors."docker.io"]
    endpoint = ["https://registry-1.docker.io"]
  [registry.mirrors."test.secure-registry.io"]
    endpoint = ["https://HostIP1:Port1"]
  [registry.mirrors."test.insecure-registry.io"]
    endpoint = ["http://HostIP2:Port2"]
```

In the same way, the default configuration also can be generated by `cri-containerd default-config > /etc/cri-containerd/config.toml`. 

The endpoint is a list that can contain multiple image registry URLs splited by commas.

After modify the config file, you need restart the `cri-containerd` service.

## Configure Image Registry with Config File in CRI Plugin Mode
Today, `cri-containerd` can also be used as a native plugin of `containerd`. In this mode, you should set registries in `/etc/containerd/config.toml` as follows:
```toml
[plugins.cri.registry.mirrors]
  [plugins.cri.registry.mirrors."docker.io"]
    endpoint = ["https://registry-1.docker.io"]
  [plugins.cri.registry.mirrors."test.secure-registry.io"]
    endpoint = ["https://HostIP1:Port1"]
  [plugins.cri.registry.mirrors."test.insecure-registry.io"]
    endpoint = ["http://HostIP2:Port2"]
```

The default configuration can be generated by `containerd config default > /etc/containerd/config.toml`.

The endpoint is a list that can contain multiple image registry URLs splited by commas.

After modify the config file, you need restart the `containerd` service.
