Not able to connect to docker containers using SSH [closed]
I am new to Docker, I built the container from a Dockerfile, and I can see the container creating and running, but I am not able to connect to that container using ssh.
Here is my Dockerfile:
FROM ubuntu:12.04 RUN apt-get update RUN apt-get install -y apache2 & openssh-server ENV APACHE_RUN_USER www-data ENV APACHE_RUN_GROUP www-data ENV APACHE_LOG_DIR /var/log/apache2 EXPOSE 80 EXPOSE 22 ENTRYPOINT ["/usr/sbin/apache2"] CMD ["-D", "FOREGROUND"]
Then I ran this cmd:
docker build -t="apache2" . $ docker run -d apache2
When I do
docker ps, I can see the port is assigned, but I am not able to connect to that container using ssh.
$ docker ps
ID IMAGE COMMAND CREATED STATUS PORTS 5765535796f8 apache2:latest /usr/sbin/apache2 -D About a minute ago Up About a minute 49154->80,49155->22
3 Solutions collect form web for “Not able to connect to docker containers using SSH [closed]”
It looks like there’s a typo in your docker file. Line:
RUN apt-get install -y apache2 & openssh-server
RUN apt-get install -y apache2 openssh-server
If you change this as well as add the steps to setting the root password as shown in the “running an ssh service guide” are you able to ssh into your running container?
in addition to installing ssh, you need to run the sshd service (you are only running apache)
This can be accomplished by using something like
supervisord or targeting a
startup.sh script instead of
apache in the
FROM ubuntu:12.04 RUN apt-get update RUN apt-get install -y apache2 openssh-server ENV APACHE_RUN_USER www-data ENV APACHE_RUN_GROUP www-data ENV APACHE_LOG_DIR /var/log/apache2 EXPOSE 80 EXPOSE 22 ADD ./startup.sh /opt/startup.sh ENTRYPOINT ["/opt/startup.sh"]
#!/bin/bash sshd apache2 -D FOREGROUND
IMHO your looking for
docker attach 5765535796f8
docker attach 57 should work as well.
When creating your container make sure to name it, restart, set environment variables and path to persistent data, expose the ports needed:
docker run -d --restart=always --name=<my_container> -e TZ=<timezone> -e TERM=xterm -p <some_unused_port>:22 -v -p 80:80 -p 443:443 -v /path/to/persistent/data:/data maintainer/image_name
afterwards you can access the container like this:
docker exec -it <my_container> /bin/bash
re: running ssh in a container
Security wise that is not such a good idea.
Also letsencrypt is very handy – port 443 😉