Saltar a contenido

Aqui va una lista de comandos basicos con ejemplos:

Comandos basicos Docker

  1. Listar Imagenes Locales
  2. Descargar una imagen
  3. Listar procesos Docker
  4. Listar los contenedores
  5. Inspeccionar toda la configuracion de un contenedor
  6. Renombrar contenedor
  7. Arrancando y parando contenedores
  8. Consultar puertos de un contenedor
  9. Ver logs de un contenedor
  10. Entrar en un contenedor a traves de shell
  11. Copiar o meter archivos dentro de un contenedor
  12. Borrando contenedores y volumenes
  13. Crear una network

Listar Imagenes Locales

docker images

Descargar una imagen

docker pull %repository/idImage%

Listar procesos Docker

docker ps -a (lista todos los procesos)
docker ps (lista los procesos arrancados)

Listar los contenedores

Para listar todos los contenedores que hay en el host

docker container ls --all

Inspeccionar toda la configuracion de un contenedor

Esto retorna info de la red, del volumen montado, etc…

docker inspect idContainer    

Renombrar contenedor

Renombrar un contenedor docker

docker rename idcontainer oracleFirstTest
ahora puedes hacer
docker run oracleFirstTest

Assignar nombre a contenedor que se va a crear en el arranque con docker run

docker run -d -p 8080:8080 -p 1521:1521 --name oracleSeconf sath89/oracle-xe-11g  (esto lo llamara oracleSeconf)
Comprobacion:
$ docker ps
CONTAINER ID        IMAGE                  COMMAND             CREATED             STATUS              PORTS                                            NAMES
7af7d458bbdc        sath89/oracle-xe-11g   "/entrypoint.sh "   49 seconds ago      Up 47 seconds       0.0.0.0:1521->1521/tcp, 0.0.0.0:8080->8080/tcp   oracleSeconf

Arrancando y parando contenedores

Arrancar un contenedor con una imagen:

docker run -options
@see https://docs.docker.com/engine/reference/commandline/exec/#options

-d hace que se ejecute en segundo plano como daemon -p expone por la interfaz de docker el puerto del contenedor puertoDocker:puertocontenedorInterno

En este ejemplo arrancamos una instancia oracle en modo daemon y podemos acceder a su puerto 1521 a traves de puerto externo del contendor 49161

docker run -d -p 49161:1521  wnameless/oracle-xe-11g

Si arrancamos sin -d, la shell se queda parada y podemos matar el proceso con Control+C cuando queramos.

docker run --rm -it -p 9999:8000 -v $PWD:/docs danipenaperez/mkdocs:latest
Si tenemos la necesidad de hacer algo y que corra en background arrancamos con -d y nos basamos en la idea es que cuando se arranca desde la imagen, se establezca un nombre para el container a crear usando la opcion –name=
docker run --rm -it -d --name danipenaperez_mkdocs -p 9999:8000 -v $PWD:/docs danipenaperez/mkdocs:latest

De esta forma podemos parar el contenedor

docker container ls -q --filter name=danipenaperez_mkdocs | docker container stop $(cat)

Especificar ruta del volume para el contenedor, de forma que 2 contenedores puede sharear la info en un mismo volumen compartido

docker run -d -p 8080:8080 -p 1521:1521 -v /my/local/shared/directory:/ContainerDirectory sath89/oracle-xe-11g

De manera sencilla Parar un contenedor

docker stop %idContainer%

Consultar puertos de un contenedor

Consultar los puertos que expone un contenedor

docker port idContainer

Ver logs de un contenedor

Ver los logs de un contenedor

docker logs -f 23d0bc5a0f52

Ver salida continua de los logs de un contenedor

docker logs fdf3c2349621 -f

Entrar en un contenedor a traves de shell

docker exec -it <container name> /bin/bash 
docker exec -it c8c5d402c49d /bin/bash
ENTRAR EN UN CONTENEDOR PARADO (QUE NO PUEDE ARRANCAR POR EJEMPLO) Para entrar en contenedor que no puede arrancar
docker commit mysql57 mysql57_broken && docker run -it mysql57_broken /bin/bash

VOLUMES

Copiar o meter archivos dentro de un contenedor

Copy files into/out container, not necesarry running container

docker cp foo.txt mycontainer:/foo.txt
docker cp mycontainer:/foo.txt foo.txt

En DockerCompose los volumenes se comparten en

Borrando contenedores y volumenes

La manera sencilla es asi

docker rm %idContainer%

Si el conenedor estuviera usando un volumen no se borraria, para especificar que se borre hay que Borrar container y los volumenes asociados

docker rm -v idContainer

Borrar un contenedor que esta corriendo (-force)

docker rm --force -v idContainer
Borrar todos los contenedores parados que estuvieran referenciados o no)
docker rm $(docker ps -a -q)

Para Operaciones Masivas:

docker-compose down [opcional]

#Borrando todos los contenedores
docker rm -f $(docker ps -a -q)  

#Borrando todos los volumenes
docker volume rm $(docker volume ls -q)

docker-compose up -d [opcional]

Extraer un archivo de dentro de un contenedor

docker cp <containerId>:/file/path/within/container ./

INCLUIR FOLDER EN IMAGE DOCKER (Dockerfile)

Para añadir un directorio dentro de una imagen, usar ADD (la )

FROM kong/kong-gateway:latest
USER root
# ADD directorio_maqina_local directorio_imagen
ADD kong-plugin-jwt-auth-rbac/ /usr/local/share/lua/5.1/kong/plugins/jwt-auth-rbac/

REDES DOCKER

Crear una network

>docker network create --driver=bridge atlassian-network
>docker network list
Arrancar instancia usando un determinado bridge de red y un name para la instancia:

docker run -d -p 33061:3306 --net=atlassian-network --name mysql57 -e MYSQL_
_PASSWORD=secret mysql:5.7 --character-set-server=utf8mb4

docker run --net=atlassian-network --name jira-software --detach --publish 8082:8080 cptactionhank/atlassian-jira-software:latest

DOCKER COMPOSE

VOLUMES

Para definir un volumen , lo debemos definir en la seccion volumes y luego referenciarlo en el service

version: '3'
services:
 minio:
  image: minio/minio:latest
  container_name: myminio
  ...
  volumes:
    - testbucketc:/tmp/testbucketc (Buscara testbucketc en la seccion volumes y como no esta lo creara en /var/lib/docker/volumes/testbucketc)
    - ./source/:/tmp/source (este en cambio referencia a un directorio relativo de la maquina host)
  ...
  ...
volumes:
  testbucketc:
    driver: local

Los directorios fisicos en la maquina host estaran en : /var/lib/docker/volumes/