docker run -i command examples


Docker

docker run command

Docker Container is a running instance of an image. You can create, run, start, stop or delete the docker containers. The docker run command creates runnable containers from the images specified and it can also run the commands inside the docker container.

Now, in this article let us understand how to run the docker container using the Docker CLI. The basic syntax of the docker run command is as follows

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

Let us run a few docker containers and understand how docker run works. Let us get started.

$ docker run alpine

Upon running the command the output is as shown below -

Unable to find image 'alpine:latest' locally
latest: Pulling from library/alpine
213ec9aee27d: Pull complete 
Digest: sha256:bc41182d7ef5ffc53a40b044e725193bc10142a1243f395ee852a8d9730fc2ad
Status: Downloaded newer image for alpine:latest

The docker pulls the alpine image and downloads it on the host machine.

 

Example-1: Using docker run -i

The -i argument is used to keep STDIN open even if not attached. So you have an option to run some commands inside the container but non-interactively. For example:

~]# echo test | docker run -i alpine:3.6 cat
test

~]# echo test; echo hello | docker run -i alpine:3.6 cat
test
hello

 

Example-2: Using docker run command interactively

Previously, we saw that upon running the alpine container it immediately shut down the container. What if you want to keep the container running so that you could enter the container and run a few more commands?

To do this, docker provides an option that can be used with the docker run command. Let us take a look with ane example.

Let us run the ubuntu docker container with the below command.

$ docker run -i -t ubuntu /bin/bash

Output

Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
301a8b74f71f: Pull complete 
Digest: sha256:7cfe75438fc77c9d7235ae502bf229b15ca86647ac01c844b272b56326d56184
Status: Downloaded newer image for ubuntu:latest
root@97541b3ec2b5:/#

The docker run command will pull the docker image from the public docker registry in case the image is not present on the host. It creates a writable layer on top of the image specified and starts the container and executes /bin/bash.

The docker lets us run your container in an interactive mode. The option -i -t refers to running the docker container in an interactive mode and attaching it to the terminal by which you can execute any command and the output is shown on your terminal.

In the above command output, you can see that you have entered the container and to come out of the container you can type exit by which the container stops running. In order to access it, you can start again  using

$ docker start <container_name>

When the user runs the docker container using $ docker run the docker container process will have its own filesystem, and the network host fully isolated from the host. The user can specify a specific network or use the default one.

 

Example-3: Attach STDIN and.or STDERR with docker run -i

Additionally we can use -a argument to attach either STDIN or STDERR to our container or you can attach BOTH. If you do not specify -a then Docker will attach to both stdout and stderr . You can specify to which of the three standard streams (STDIN, STDOUT, STDERR) you’d like to connect instead, as in:

~]# docker run -a stdin -a stdout -i -t simuonalpine sh
/ #

 

Summary

Docker has been one of the best containerization tools and I hope this article helped you get a better overview of the docker components and understand how to run the docker container.

In case you have any doubts, please feel free to add your questions in the comment section below and I shall try to respond at the earliest.

Happy learning!!

References

https://docs.docker.com/engine/reference/commandline/run/
https://docs.docker.com/get-started/overview/

 

Deepak Prasad

Deepak Prasad

Deepak Prasad is the founder of GoLinuxCloud, bringing over a decade of expertise in Linux, Python, Go, Laravel, DevOps, Kubernetes, Git, Shell scripting, OpenShift, Networking, and Security. His extensive experience spans development, DevOps, networking, and security, ensuring robust and efficient solutions for diverse projects.

Certifications and Credentials:

  • Certified Kubernetes Application Developer (CKAD)
  • Go Developer Certification
  • Linux Foundation Certified System Administrator (LFCS)
  • Certified Ethical Hacker (CEH)
  • Python Institute PCAP (Certified Associate in Python Programming)
You can connect with him on his LinkedIn profile and join his Facebook and LinkedIn page.

Can't find what you're searching for? Let us assist you.

Enter your query below, and we'll provide instant results tailored to your needs.

If my articles on GoLinuxCloud has helped you, kindly consider buying me a coffee as a token of appreciation.

Buy GoLinuxCloud a Coffee

For any other feedbacks or questions you can send mail to admin@golinuxcloud.com

Thank You for your support!!

Leave a Comment