71 lines
2.2 KiB
Markdown
71 lines
2.2 KiB
Markdown
|
# Docker Registry Multi-Configuration Testing
|
||
|
|
||
|
This compose configuration is intended to setup a testing environment for Docker
|
||
|
using multiple registry configurations. These configurations include different
|
||
|
combinations of a v1 and v2 registry as well as TLS configurations.
|
||
|
|
||
|
### Limitations
|
||
|
|
||
|
Currently this setup is configured to use localhost as the hostname which
|
||
|
limits the ease of testing within Docker since localhost is always treated
|
||
|
as an insecure registry. To treat localhost as secure the Docker code must
|
||
|
be modified. Without localhost as secure, the test cases will not distinguish
|
||
|
between a TLS configuration with a CA and self-signed.
|
||
|
|
||
|
### Install Docker Compose
|
||
|
|
||
|
1. Open a new terminal on the host with your `distribution` source.
|
||
|
|
||
|
2. Get the `docker-compose` binary.
|
||
|
|
||
|
$ sudo wget https://github.com/docker/compose/releases/download/1.1.0/docker-compose-`uname -s`-`uname -m` -O /usr/local/bin/docker-compose
|
||
|
|
||
|
This command installs the binary in the `/usr/local/bin` directory.
|
||
|
|
||
|
3. Add executable permissions to the binary.
|
||
|
|
||
|
$ sudo chmod +x /usr/local/bin/docker-compose
|
||
|
|
||
|
## Usage
|
||
|
|
||
|
### Start compose setup
|
||
|
```
|
||
|
docker-compose up
|
||
|
```
|
||
|
|
||
|
### Install Certificates
|
||
|
The certificates must be installed in /etc/docker/cert.d in order to use TLS client auth and use the CA certificate.
|
||
|
```
|
||
|
sudo sh ./install_certs.sh
|
||
|
```
|
||
|
|
||
|
### Test with Docker
|
||
|
Tag an image as with any other private registry. Attempt to push the image.
|
||
|
|
||
|
```
|
||
|
docker pull hello-world
|
||
|
docker tag hello-world localhost:5440/hello-world
|
||
|
docker push localhost:5440/hello-world
|
||
|
|
||
|
docker tag hello-world localhost:5441/hello-world
|
||
|
docker push localhost:5441/hello-world
|
||
|
# Perform login using user `testuser` and password `passpassword`
|
||
|
```
|
||
|
|
||
|
## Configurations
|
||
|
|
||
|
Port | V2 | V1 | TLS | Authentication
|
||
|
--- | --- | --- | --- | ---
|
||
|
5000 | yes | yes | no | none
|
||
|
5001 | no | yes | no | none
|
||
|
5002 | yes | no | no | none
|
||
|
5440 | yes | yes | yes | none
|
||
|
5441 | yes | yes | yes | basic (testuser/passpassword)
|
||
|
5442 | yes | yes | yes | TLS client
|
||
|
5443 | yes | yes | yes | TLS client (no CA)
|
||
|
5444 | yes | yes | yes | TLS client + basic (testuser/passpassword)
|
||
|
5445 | yes | yes | yes (no CA) | none
|
||
|
5446 | yes | yes | yes (no CA) | basic (testuser/passpassword)
|
||
|
5447 | yes | yes | yes (no CA) | TLS client
|
||
|
5448 | yes | yes | yes (SSLv3) | none
|