Docker Run Centos Bash



I’m just getting started with Docker. I’ve thought for years that containerization is a great idea, but I haven’t actually done anything with containers yet. Time to get started.

Sudo docker run –it centos /bin/bash

The centos dockerfile has a default command bash. That means, when run in background (-d), the shell exits immediately.Update 2017. More recent versions of docker authorize to run a container both in detached mode and in foreground mode (-t, -i or -it). Testing Docker Volumes Run the Container Interactively # When dealing with the interactive processes like bash, use the -i and -t options to start the container. The -it options tells Docker to keep the standard input attached to the terminal and allocate a pseudo-tty: docker container run -it nginx /bin/bash. $ docker run -i -t centos root@4f0b435cdbd7 /# I’m in! What if I want to modify the container? Right now it is pretty bare-bones. For example, this doesn’t even have man installed: root@4f0b435cdbd7 /# man man bash: man: command not found root@4f0b435cdbd7 /# yum install man. root@4f0b435cdbd7 /# man man No manual entry for man. Alternatively, you can actively enter container sessions by running docker run -it ubuntu bash command and execute the further apt-get install nginx command. While the command is running, detach from the container using Ctrl-p + Ctrl-q keys and the container will continue running even if the Nginx installation process finishes. How can I setup Docker on a CentOS 7? How to install and use Docker CE on a CentOS Linux 7 server? Docker is free and open-source software. It automates the deployment of any application as a lightweight, portable, self-sufficient container that will run virtually anywhere. Typically you develop software on your laptop/desktop.

Docker Run Centos Bash

I ran through a couple tutorials on the Docker docs site and created a cloud.docker.com account to get some basic familiarity.

Docker run centos bash linux

I found the CentOS container repository on Docker Hub: https://hub.docker.com/_/centos/

Let’s try running it!

$ docker pull centos
$ docker run centos

RunDocker Run Centos Bash

Did it do anything? It looks like it did something. At least, it didn’t give me an error. What did it do? How do I access it?

$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

Nothing is actively running. That makes sense, because we’re not telling the containerized OS to do anything — it starts, it doesn’t have anything to do, and so it shuts down immediately. Instead we can tell it to run interactively and with a terminal by specifying a couple options:

-i, --interactive
-t, --tty
(“allocate a pseudo-TTY”, i.e. a terminal)
(see docker run --help for details)

$ docker run -i -t centos
[root@4f0b435cdbd7 /]#

I’m in!

What if I want to modify the container? Right now it is pretty bare-bones. For example, this doesn’t even have man installed:

[root@4f0b435cdbd7 /]# man man
bash: man: command not found

[root@4f0b435cdbd7 /]# yum install man
...
[root@4f0b435cdbd7 /]# man man
No manual entry for man

Quite the improvement! Now we need to save our change:

[root@4f0b435cdbd7 /]# exit

$ docker commit 4f0b435cdbd7 man-centos
$ docker run -i -t man-centos

[root@953c512d6707 /]# man man
No manual entry for man

Progress! Now we have a CentOS container where man is already installed. Exciting.

Docker Run Centos Bash

I can’t (that I know of) inspect the container and know whether or not man is installed without running it. That’s fine for many cases, but next I will attempt to figure out how specify via a Dockerfile that man is installed.