mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
97 lines
3.5 KiB
ReStructuredText
97 lines
3.5 KiB
ReStructuredText
:title: Running an SSH service
|
|
:description: A screencast of installing and running an sshd service
|
|
:keywords: docker, example, package installation, networking
|
|
|
|
.. _running_ssh_service:
|
|
|
|
SSH Daemon Service
|
|
==================
|
|
|
|
.. include:: example_header.inc
|
|
|
|
|
|
**Video:**
|
|
|
|
I've create a little screencast to show how to create a sshd service
|
|
and connect to it. It is something like 11 minutes and not entirely
|
|
smooth, but gives you a good idea.
|
|
|
|
.. note::
|
|
This screencast was created before ``docker`` version 0.5.2, so the
|
|
daemon is unprotected and available via a TCP port. When you run
|
|
through the same steps in a newer version of ``docker``, you will
|
|
need to add ``sudo`` in front of each ``docker`` command in order
|
|
to reach the daemon over its protected Unix socket.
|
|
|
|
.. raw:: html
|
|
|
|
<div style="margin-top:10px;">
|
|
<iframe width="800" height="400" src="http://ascii.io/a/2637/raw" frameborder="0"></iframe>
|
|
</div>
|
|
|
|
You can also get this sshd container by using
|
|
::
|
|
|
|
sudo docker pull dhrp/sshd
|
|
|
|
|
|
The password is 'screencast'
|
|
|
|
**Video's Transcription:**
|
|
|
|
.. code-block:: bash
|
|
|
|
# Hello! We are going to try and install openssh on a container and run it as a service
|
|
# let's pull ubuntu to get a base ubuntu image.
|
|
$ docker pull ubuntu
|
|
# I had it so it was quick
|
|
# now let's connect using -i for interactive and with -t for terminal
|
|
# we execute /bin/bash to get a prompt.
|
|
$ docker run -i -t ubuntu /bin/bash
|
|
# yes! we are in!
|
|
# now lets install openssh
|
|
$ apt-get update
|
|
$ apt-get install openssh-server
|
|
# ok. lets see if we can run it.
|
|
$ which sshd
|
|
# we need to create privilege separation directory
|
|
$ mkdir /var/run/sshd
|
|
$ /usr/sbin/sshd
|
|
$ exit
|
|
# now let's commit it
|
|
# which container was it?
|
|
$ docker ps -a |more
|
|
$ docker commit a30a3a2f2b130749995f5902f079dc6ad31ea0621fac595128ec59c6da07feea dhrp/sshd
|
|
# I gave the name dhrp/sshd for the container
|
|
# now we can run it again
|
|
$ docker run -d dhrp/sshd /usr/sbin/sshd -D # D for daemon mode
|
|
# is it running?
|
|
$ docker ps
|
|
# yes!
|
|
# let's stop it
|
|
$ docker stop 0ebf7cec294755399d063f4b1627980d4cbff7d999f0bc82b59c300f8536a562
|
|
$ docker ps
|
|
# and reconnect, but now open a port to it
|
|
$ docker run -d -p 22 dhrp/sshd /usr/sbin/sshd -D
|
|
$ docker port b2b407cf22cf8e7fa3736fa8852713571074536b1d31def3fdfcd9fa4fd8c8c5 22
|
|
# it has now given us a port to connect to
|
|
# we have to connect using a public ip of our host
|
|
$ hostname
|
|
# *ifconfig* is deprecated, better use *ip addr show* now
|
|
$ ifconfig
|
|
$ ssh root@192.168.33.10 -p 49153
|
|
# Ah! forgot to set root passwd
|
|
$ docker commit b2b407cf22cf8e7fa3736fa8852713571074536b1d31def3fdfcd9fa4fd8c8c5 dhrp/sshd
|
|
$ docker ps -a
|
|
$ docker run -i -t dhrp/sshd /bin/bash
|
|
$ passwd
|
|
$ exit
|
|
$ docker commit 9e863f0ca0af31c8b951048ba87641d67c382d08d655c2e4879c51410e0fedc1 dhrp/sshd
|
|
$ docker run -d -p 22 dhrp/sshd /usr/sbin/sshd -D
|
|
$ docker port a0aaa9558c90cf5c7782648df904a82365ebacce523e4acc085ac1213bfe2206 22
|
|
# *ifconfig* is deprecated, better use *ip addr show* now
|
|
$ ifconfig
|
|
$ ssh root@192.168.33.10 -p 49154
|
|
# Thanks for watching, Thatcher thatcher@dotcloud.com
|
|
|
|
|