A container can be made using the tool Docker to run apps. A fully contained virtual computer is a Docker container. Three different ways to docker SSH containers and commands are explained in this guide. Enabling SSH on Ubuntu allows remote access to the system via a secure encrypted connection, also to securely manage and control your Ubuntu server from another location.

For installing and maintaining applications. Docker has taken over the containerization industry as the de facto standard. Secure Shell (SSH) access to running containers is one of Docker’s significant features. We will go into the subject of SSH access to Docker containers. Here, you will discover how to connect to an active container and perform commands inside of it. Besides this, changing the SSH Linux port other than 22 is a reason that is to improve protection and avoid unnecessary invasions.

Understanding Docker and SSH:

  • Please give a brief explanation of SSH and its importance in secure remote access.
  • Introduce Docker and its advantages for managing and deploying applications.
  • Stress the importance of SSH access to Docker containers for administrative and debugging purposes.

SSH into an Active Docker Container:

  • As noted in the previous response, describe the procedures for gaining SSH access to a Docker container that is currently executing.
  • Knowing the container ID or name for SSH access should be emphasized.
  • Give an example command that will list active containers and show which one is the target container.

Option 1: Run Commands in a Docker Container Using Docker exec

The docker exec command executes a specified run command inside the docker container that is already operating. Through the creation of a bash shell (a shell where you can type commands), you can use it to SSH into a Docker container.

To run a command in a container using docker exec, use the following basic syntax:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker exec [options] [container] [command]
docker exec [options] [container] [command]
docker exec [options] [container] [command]

If you haven’t already, start by downloading a Docker image. You could, for instance, load Nginx:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo docker pull nginx
sudo docker pull nginx
sudo docker pull nginx

docker pull image in command line

Then run the image,

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo docker run ––name nginx–test –d nginx
sudo docker run ––name nginx–test –d nginx
sudo docker run ––name nginx–test –d nginx

docker run image command line

To confirm, list all active containers:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo docker ps
sudo docker ps
sudo docker ps

Your loaded nginx-test image should now be visible.

command to display list of all docker running containers

Type the following to gain access to and execute commands within that Docker container:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo docker exec –it nginx-test /bin/bash
sudo docker exec –it nginx-test /bin/bash
sudo docker exec –it nginx-test /bin/bash

You are now signed into the nginx-test container. Any instructions you type will therefore be executed in that container. The -t option enables a terminal typing interface, and the -i option selects interactive.

run commands on specific docker image
Option 2: Connect to a Running Container by Using the Docker Attach Command

Using the docker attach command, you can connect a container to a local input, output, and error stream. It starts up by default in a bash shell. Enter the following information to connect to a running container:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo docker attach container_Name
sudo docker attach container_Name
sudo docker attach container_Name

The system will connect to the nginx-test container in the example below:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo docker attach nginx-test
sudo docker attach nginx-test
sudo docker attach nginx-test

connect to docker image with docker attach

You will be working within the container once the command has been carried out. The virtual Docker environment will be affected by any commands you issue.

Option 3: Connect to a Docker Container via SSH.

A Docker container can be accessed using SSH (Secure Shell). SSH is typically used to connect remotely to a server across a network. Connecting to a virtual Docker container on your PC uses the same technology.

Step 1: System SSH Enable

Install and activate the SSH service first:

Switching on SSH in Ubuntu 18.04:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo apt-get install ssh
sudo systemctl ssh start
sudo systemctl ssh enable
service ssh status
sudo apt-get install ssh sudo systemctl ssh start sudo systemctl ssh enable service ssh status
sudo apt-get install ssh
sudo systemctl ssh start
sudo systemctl ssh enable
service ssh status

On CentOS 7, activate SSH:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
yum –y install openssh-server openssh-clients
service sshd start
service sshd enable
service sshd status
yum –y install openssh-server openssh-clients service sshd start service sshd enable service sshd status
yum –y install openssh-server openssh-clients
service sshd start
service sshd enable
service sshd status

Step 2: Get the Container’s IP address.

Using the docker inspect command, filter the returned information to obtain the container’s IP address.

Use the following command for contemporary Docker engines:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo docker inspect -f "{{ .NetworkSettings.IPAddress }}" container_name
sudo docker inspect -f "{{ .NetworkSettings.IPAddress }}" container_name
sudo docker inspect -f "{{ .NetworkSettings.IPAddress }}" container_name

Run: for older Docker engines.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name

docker command to get ip address of docker container

Step 3: SSH Into a Container for Docker

To verify that the IP address is active, ping it.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
ping –c 3 172.17.0.2
ping –c 3 172.17.0.2
ping –c 3 172.17.0.2

ping ip address to verify ssh into docker container

To connect to the image, use the SSH tool:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
ssh root@172.17.0.2
ssh root@172.17.0.2
ssh root@172.17.0.2

The system should request the root user password for that container. Connection rejected indicates that the container is most likely not SSH provided. You are now connected through SSH and can issue commands inside the container if the prompt changes.

Wrapping Up the SSH into a Running Docker Container and Run Commands

List the main ideas covered in the blog post in brief. To manage and debug Docker containers, emphasize the value of secure SSH access. Encourage readers to learn about and use SSH. Access to improve their abilities to manage Docker containers. To know How to Delete Docker Images, Containers, and Volumes read it. To securely transfer files in different directories using a secure shell rsync over SSH protocol is used.

A conventional SSH connection is not advised because Docker containers are portable and light. Either docker exec or docker attaches are suggested ways to execute commands inside a Docker container. You might connect to a virtual machine through Docker. Use the docker-machine SSH command if you’re deploying many distant virtual machines. The first two command techniques are suggested for most users.

Frequently Asked Questions (FAQ)

1. What is SSH?

A secure shell is a network protocol used to securely access remote computers. SSH provides a secure channel for data transmission.

2. How do I Create a Shell session within a Docker Container?

Use the following command:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker exec -it <container_id>
docker exec -it <container_id>
docker exec -it <container_id>

With the help of the above command, one can create an interactive shell session within a docker container.