X
    Categories: devops

How to run docker container

In this article we will be discussing different ways to run docker container. I would recommend you to go through this installation steps before moving ahead.

1. Run docker container and run a command within it.

root@ubuntu:~# docker run -it ubuntu
latest: Pulling from library/ubuntu
6b98dfc16071: Pull complete
4001a1209541: Pull complete
6319fc68c576: Pull complete
b24603670dc3: Pull complete
97f170c87c6f: Pull complete
Digest: sha256:5f4bdc3467537cbbe563e80db2c3ec95d548a9145d64453b06939c4592d67b6d
Status: Downloaded newer image for ubuntu:latest
root@5bfa20a5e6b6:/# id
uid=0(root) gid=0(root) groups=0(root)
root@5bfa20a5e6b6:/# hostname
5bfa20a5e6b6
root@5bfa20a5e6b6:/#
root@5bfa20a5e6b6:/# w
 14:20:20 up 23 min,  0 users,  load average: 0.20, 0.05, 0.02
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root@5bfa20a5e6b6:/#

In the above example docker pulls the latest Ubuntu image and run’s as container. Here we are using option “-it” which are mean for interactive and termincal/pesudo TTY, because of which are are able to run “/bin/bash” command on the container. Kindly note that, once you logged out of the container it gets automatically stopped, see the below results from docker ps -a command.

root@ubuntu:~# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
5bfa20a5e6b6        ubuntu              "/bin/bash"         5 minutes ago       Exited (0) 4 seconds ago                       loving_mcnulty
root@ubuntu:~#

In docker with “docker ps” command you can able to list only container|s which are in running state, so in order to list all container including stopped container we need to use “docker ps -a” option.

2. Run docker container with name:

In the above example you can see the some random name given to the container “loving_mcnulty”. In case you want to give name of your choice follow below command:

root@ubuntu:~# docker run -it --name myubuntu ubuntu

3. Run docker container with publishing port:

In case you are starting container which depends on any specific port then you need to publish containers port to the host. Lets say you want to run apache (htttpd) container which listens on port 80 and you want to publish it with port 80 of host. Then use below command:

root@ubuntu:~# docker run -d --name webserver -p 80:80 httpd
9543303da7af36f318836cdbd80f68535af03a7bb621a536ee84b19fedce1bdd


root@ubuntu:~# docker ps
CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS              PORTS                NAMES
9543303da7af        httpd               "httpd-foreground"   12 seconds ago      Up 11 seconds       0.0.0.0:80->80/tcp   webserver
root@ubuntu:~#

In the above command we have used “-d” option which makes the container to run in detached mode which makes the container remains to run in the background.

4. Run docker container with remove on exit:

In case you want to remove the container while exiting the container use “–rm” flag:

# docker run --rm --name myserver ubuntu

5. Run docker container with mount point from host:

In case you want to local host mount point or directory on the container use option “-v”.

root@ubuntu:~# mkdir /opt/app
root@ubuntu:~# docker run --name web -d -v /opt/app:/app httpd

In the second command we mounted local /opt/app directory to /app on the container.

In case you want to login to container use “docker exec” command with following options:

root@ubuntu:~# docker exec -it web /bin/bash
root@7530561dfe4f:/usr/local/apache2# df -h
Filesystem      Size  Used Avail Use% Mounted on
overlay         7.7G  1.5G  6.3G  20% /
tmpfs            64M     0   64M   0% /dev
tmpfs           496M     0  496M   0% /sys/fs/cgroup
/dev/xvda1      7.7G  1.5G  6.3G  20% /app
shm              64M     0   64M   0% /dev/shm
tmpfs           496M     0  496M   0% /proc/scsi
tmpfs           496M     0  496M   0% /sys/firmware
root@7530561dfe4f:/usr/local/apache2# cd /app

Here in this output you can see /app mount point mounted from local /opt/app directory.

Related Post