A List of Useful Docker Commands
Quick Tip
Here a list of useful Docker commands collected when working with containers.
Containers
- Create (run) containers
docker run --name contenedor --detach image_name
detach option asks Docker to run this container in the background.
docker run --name contenedor -d --publish porthost:portcontainer image_name
docker run -d -p 7706:3306 --name contenedordb image_name
publish option exposes container port to a host port for remote access.
- List running containers
docker ps
docker container ls
- List running and stopped containers
docker ps -a
docker container ls -a
- Handling containers
docker start contenedor
docker restart contenedor
docker stop contenedor
docker kill contenedor
- Start/stop multiple containers
docker start contenedor1 contenedor2
docker stop contenedor0 contenedor1 contenedor2
- Delete containers
docker container rm contenedor
Access Containers
- Accessing container as root
docker exec -it contenedor bash
- Accessing container as normal user
docker exec -it --user pato contenedordb bash
Running Commands from Outside the Container
- Running installed program
docker exec -it patomaxscale maxctrl list servers
- Running sql query
docker exec -it patomariadb mysql -e "select * from taller.tg1"
Copy Files From/To Container
- Copy from container to host directory
docker cp patomaster:/home/pato/masterfull.sql .
- Copy from host to container directory
docker cp masterfull.sql patoslave:/home/pato/masterfull.sql
Container Info
- Check container log
docker logs patomaxgalera | tail
This output is from the main service/program registered in the CMD parameter of the image used by the container.
- Check container port mapping:
docker port contenedor
Images
- Search and pull image from Docker Hub
docker search mariadb
docker pull mariadb
- List images
docker images
docker image ls
- Create an image from a current container
docker commit contenedor
docker tag image_id patomx/imagen
docker commit contenedor patomx/imagen
- Upload own image to Docker Hub
docker login
docker push patomx/imagen
- Build an image using Dockerfile
vi Dockerfile
FROM operating_system (ubuntu)
ENV environment_variables
RUN apt install -y package
RUN wget https://... && \
dpkg -i
COPY host_file container_file
EXPOSE ports
CMD service ... start & tail -F /var/log/__.log
docker build --tag patomx/patomaxscale .
- Delete images
docker image rm imagen
Volumes
- Create volumes
pato@patocontainer ~ $ docker volume create --name volnew
Volumes can also be created when creating a container with the command
docker run ... -v newvolume:path
- List volumes
docker volume ls
- Use local filesystem as volume
docker run -d --name contenedorl -v /home/pato/data:/var/lib/mysql patomx/imagen
docker run -d --name contenedor2 -v /home/pato/config:/etc/mysql -v patovolgm:/var/lib/mysql patomx/imagen
- Copy volume content to another volume
docker run --rm -i -t -v patovol1:/origen -v patovol2:/destino alpine sh -c "cp -avr /origen/* /destino"
- Using a container as a shared data volume
docker run --name contenedor2 --volumes-from contenedor1 imagen
- Delete volumes
docker volume rm volumen1
- Remove all volumes not used by a container
docker volume prune
Network
- Create network (type bridge)
docker network create --driver bridge pato-net
- List networks
docker network ls
- Delete networks
docker network rm pato-net
Global Docker Commands
Show detailed information on space usage
docker system df -v
Remove all unused containers, networks, images
docker system prune
Google Cloud Container-Optimized OS
When using virtual instance as a Docker host for deploying containers I use to add swap area to the Container-Optimized OS
- Create swap for the first time
sudo sysctl vm.disk_based_swap=1
sudo fallocate -l 512M /var/swapfile
sudo chmod 600 /var/swapfile
sudo mkswap /var/swapfile
sudo swapon /var/swapfile
- Recreate swap for rebuild host instances
sudo sysctl vm.disk_based_swap=1
sudo swapon /var/swapfile