Now, let’s open another terminal keeping this container session running and use the command below to list all the files. $ docker run -it -name=myubuntu ubuntu bash Run a Docker Container Let’s use the Docker run command to run a container session first. In the following example, we will list all the files inside a running container. If you want to specify the default working directory, you can use this option. You can keep standard input open even if you don’t attach it. You can use it to read from a file of environment variables.
It can be used to set the environment variables. If you want to override a key sequence in order to detach a container, you can use this option. You can use this option to execute a command in the background mode. Let’s check out a few options that you can use along with this command. You can also omit the container keyword from the above command and it will still output the same result. $ docker container exec CONTAINER COMMAND Let’s check out the syntax of the Docker container exec command.
This is so because sh -c “echo x & echo y” is treated as a single command. However, docker exec -it container sh -c “echo x & echo y” will definitely work. The command docker exec -it container “echo x & echo y” will not work. You cannot run a chained or quoted command using the Docker exec command. You can also set the directory where you want to execute the command using the -w option.Īlso, it’s important that the command that you mention is an executable command. The command that you want to execute will run in the default working directory of the container. Difference between Docker Run and Exec CommandsĪs already discussed, the Docker exec command lets you run commands inside a running Docker container.Execute Multiple Commands using Docker Exec.If you only need a container to execute the outlined task and have no use of it or its file system afterward, you can set it up to delete once it is done. Once a container executes its tasks, it stops, but the file system it consists of remains on the system. The entire docker container run command is: docker container run -v : Run a Docker Container and Remove it Once the Process is Complete If you want to have persistent data that is stored even after the container stops, you need to enable sharing storage volumes.įor mounting volumes use the -v attribute with the specified location of the directory where you want to save the data, followed by where that data will be located inside the container. As soon as the process is finished, the container stops and everything inside of it is removed. The host_ip element is optional and you don’t need to specify it when running the command.įor example, to map TCP port 80 in the container to port 8080 on the Docker host you would run: docker container run -p 8080:80 Run a Container and Mount Host Volumesĭocker containers do not save the data they produce. You have to add the -p option to the docker run command as well as the following information: -p :: To allow external connections to the container, you have to open (publish) specific ports. When you run a container, the only way to access the process is from inside of it. Run a Container and Publish Container Ports The command for running a container under a specific name is: docker container run -name įor instance, we can run the sample container and give it the name container_instance using the command: docker container run -name container_instance e98b6ec72f51 Using the -name attribute allows you to assign a container name. Since there is a slim chance you will be able to remember or recognize the containers by these generic names, consider setting the container name to something more memorable. When you use the basic run command, Docker automatically generates a container name with a string of randomly selected numbers and letters. Although Docker still supports docker run, it recommends getting use to the new syntax.
Accordingly, run is now a subcommand of docker container and to use it you must type docker container run. Note: With the release of Docker 1.13, Docker introduced a new CLI in which it regrouped commands according to the object they interact with.