A CentOS container that runs openssh server.
You can use this container to quickly startup a "machine" and test things, or it can be used as an SSH server, maybe a stepstone.
This container will generate new keys (host and user) at startup if none are loaded by attaching a volume.
It's quite easy to start a container:
docker run -P robertdebock/docker-centos-openssh
For Podman, please use:
podman run --cap-add AUDIT_WRITE -P robertdebock/docker-centos-openssh
(The --cap-add AUDIT_WRITE
is added to overcome an issue.)
A private key will be displayed, copy-pasts-save it, set the permissions to 0600.
Find out what port Docker has connected to the container:
docker port docker-centos-openssh
And connect to the container:
ssh -p ${port} -i ${savedkey} root@${ip}
The ${ip} depends on where the container is running.
Simply save your key in a folder like "dot-ssh" and map the volumes:
docker run -P -v $(pwd)/./ssh:/root/.ssh/ robertdebock/docker-centos-openssh
You may setup a testlab, for example for Ansible or Rundeck, using Docker-compose, like so:
version: '3'
services:
server:
image: robertdebock/docker-centos-openssh
volumes:
- /path/to/dot-ssh:/root/.ssh/
links:
- client1
- client2
- client3
ports:
- "2222:22"
client1:
image: robertdebock/docker-centos-openssh
volumes:
- /path/to/dot-ssh:/root/.ssh/
client2:
image: robertdebock/docker-centos-openssh
volumes:
- /path/to/dot-ssh:/root/.ssh/
client3:
image: robertdebock/docker-centos-openssh
volumes:
- /path/to/dot-ssh:/root/.ssh/
- Travis CI is used to build, run and test the image.
- Docker Hub is used to deploy the image to.
Building on Travis CI and publishing to Docker Hub happens in parallel. On Travis CI, few project are used:
- Bats for testing.
- Docker Lint for finding weird errors.
A bit weird about this setup is that when the build fails, an image is still published.