English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Uso de contenedor Docker

Cliente Docker

El cliente Docker es muy simple, podemos ingresar directamente el comando docker para ver todas las opciones de comandos del cliente Docker.

w3codebox@w3codebox:~# docker

Se puede utilizar el comando docker command --help Para obtener una comprensión más profunda del uso del comando Docker específico.

Por ejemplo, para ver docker stats Uso específico del comando:

w3codebox@w3codebox:~# docker stats --help

Uso del contenedor

Obtener imagen

Si no tenemos la imagen ubuntu localmente, podemos usar el comando docker pull para cargar la imagen ubuntu:

$ docker pull ubuntu

Iniciar contenedor

Las siguientes instrucciones utilizan la imagen ubuntu para iniciar un contenedor, los parámetros son para ingresar al contenedor en modo de línea de comandos:

$ docker run -it ubuntu /bin/bash

Explicación de los parámetros:

  • -i: operación interactiva.

  • -t: terminal.

  • ubuntu: imagen ubuntu.

  • /bin/bash:El comando que se coloca después del nombre de la imagen es el comando, aquí queremos tener una Shell interactiva, por lo que usamos /bin/bash。

Para salir del terminal, ingrese exit:

root@ed09e4490c57:/# exit

Iniciar un contenedor que se ha detenido

Para ver todos los comandos de contenedor, siga las instrucciones a continuación:

$ docker ps -a

Haga clic en la imagen para verla a gran escala:

Para iniciar un contenedor que se ha detenido, use el comando docker start:

$ docker start b750bbbcfd88

Ejecutar en segundo plano

En la mayoría de los casos, esperamos que el servicio de docker se ejecute en segundo plano, podemos hacerlo pasando -d especifica el modo de ejecución del contenedor.

$ docker run -itd --name ubuntu-test ubuntu /bin/bash

Haga clic en la imagen para verla a gran escala:

Nota:Añadido -El parámetro d por defecto no ingresará al contenedor, para ingresar al contenedor se necesita usar la instrucción docker exec(esto se explicará más adelante)。

Detener un contenedor

El comando para detener un contenedor es el siguiente:

$ docker stop <ID del contenedor>

Los contenedores que se han detenido pueden ser reiniciados con el comando docker restart:

$ docker restart <ID del contenedor>

Ingresar al contenedor

Al usar -d Cuando se especifica el parámetro, el contenedor entrará en segundo plano después de que se inicie. En este momento, si desea ingresar al contenedor, puede hacerlo mediante las siguientes instrucciones:

  • docker attach

  • docker exec:Recomienda a todos que utilicen el comando docker exec, ya que este comando sale del terminal del contenedor sin detener el contenedor.

Comando attach

A continuación, se muestra un ejemplo de cómo usar el comando docker attach.

$ docker attach 1e560fca3906

Atención: Si sale de este contenedor, se detendrá el contenedor.

Comando exec

A continuación, se muestra un ejemplo de cómo usar el comando docker exec.

docker exec -it 243c32535da7 /bin/bash

Atención: Si sale de este contenedor, el contenedor no se detendrá, por eso se recomienda a todos usar docker exec razón.

Más detalles sobre los parámetros se pueden obtener usando docker exec --Ver el comando help para obtener más detalles.

Exportar e importar contenedor

Exportar contenedor

Si se desea exportar un contenedor local, se puede usar docker export Comando.

$ docker export 1e560fca3906 > ubuntu.tar

Exportar contenedor 1e560fca3906 Exportar instantánea a archivo local  ubuntu.tar。

De esta manera se exporta la instantánea del contenedor a un archivo local.

Importar instantánea de contenedor

Se puede usar docker import para importar de nuevo desde el archivo de instantánea del contenedor como imagen, el siguiente ejemplo importa el archivo de instantánea ubuntu.tar a la imagen test./ubuntu:v1:

$ cat docker/ubuntu.tar | docker import - test/ubuntu:v1

Además, también se puede importar especificando una URL o un directorio, por ejemplo:

$ docker import http://example.com/exampleimage.tgz example/imagerepo

Eliminar contenedor

Uso para eliminar contenedor docker rm Comando:

$ docker rm -f 1e560fca3906

Las siguientes órdenes pueden limpiar todos los contenedores en estado de terminación.

$ docker container prune

Ejecutar una aplicación web

El contenedor que ejecutamos anteriormente no tiene alguna utilidad especial.

Ahora intentemos construir una aplicación web utilizando docker.

Vamos a ejecutar una aplicación Python Flask en un contenedor docker para ejecutar una aplicación web.

w3codebox@w3codebox:~# docker pull training/webapp  # Cargar la imagen
w3codebox@w3codebox:~# docker run -d -P training/webapp python app.py

Descripción de los parámetros:

  • -d:Hacer que el contenedor se ejecute en segundo plano.

  • -P:Mapear aleatoriamente los puertos de red utilizados internamente por el contenedor a nuestro host.

Verificar el contenedor de aplicación WEB

usar docker ps para ver los contenedores en ejecución:

w3codebox@w3codebox:~# docker ps
Usar docker ps para ver los contenedores en ejecución:                 
d3d5e39ed9d3        training/ID DE CONTENEDOR ... IMAGEN ... COMANDO ... PUERTOS32769->5000/tcp

webapp "python app.py" ... 0.0.0.0:

Aquí hay más información sobre puertos.
0.0.0.0:32769->5000/tcp

PUERTOS 5Docker ha abierto 32769 puerto 000 (puerto predeterminado de Python Flask) mapeado al puerto del anfitrión

ahora.

También podemos acceder a la aplicación WEB a través del navegador -p parámetro para configurar un puerto diferente:

w3codebox@w3codebox:~$ docker run -d -p 5000:5000 training/webapp python app.py

docker psVer los contenedores en ejecución

w3codebox@w3codebox:~# docker ps
IDENTIFICADOR DE CONTENEDOR  IMAGEN  PUERTOS  NOMBRES
bf08b7f2cd89        training/webapp     ...        0.0.0.0:5000->5000/tcp           wizardly_chandrasekhar
d3d5e39ed9d3        training/webapp     ...        0.0.0.0:32769->5000/tcp xenodochial_hoov

interno del contenedor 5puerto 000 mapeado a la máquina local 5puerto 000.

la forma abreviada de los puertos de red

a través de docker ps el comando puede ver el mapeo de puertos del contenedordocker también proporciona otra forma abreviada docker port,usando docker port puede ver el mapeo de un puerto específico (ID o nombre) del contenedor al puerto del anfitrión.

El ID del contenedor de la aplicación WEB que creamos es bf08b7f2cd89  El nombre es wizardly_chandrasekhar.

Puedo usar docker port bf08b7f2cd89  o docker port wizardly_chandrasekhar para ver la situación de mapeo de puertos del contenedor.

w3codebox@w3codebox:~$ docker port bf08b7f2cd89
5000/tcp -> 0.0.0.0:5000
w3codebox@w3codebox:~$ docker port wizardly_chandrasekhar
5000/tcp -> 0.0.0.0:5000

Ver el registro de la aplicación WEB

docker logs [ID o nombre] puede ver la salida estándar del contenedor.

w3codebox@w3codebox:~$ docker logs -f bf08b7f2cd89
 * Ejecutándose en http://0.0.0.0:5000/ (Presione CTRL+C para salir)
192.168.239.1 - - [09/May/2016 16:30:37] "GET / HTTP/1.1" 200 -
192.168.239.1 - - [09/May/2016 16:30:37] "GET /favicon.ico HTTP/1.1" 404 -

-f: permite docker logs como usar tail -f de la misma manera para exportar la salida estándar del contenedor.

Desde arriba, podemos ver que la aplicación utiliza 5000 puerto y poder ver el registro de acceso de la aplicación.

Ver los procesos del contenedor de aplicación WEB

También podemos usar docker top para ver los procesos que se ejecutan dentro del contenedor.

w3codebox@w3codebox:~$ docker top wizardly_chandrasekhar
UID     PID         PPID          ...       TIEMPO                CMD
root    23245       23228         ...       00:00:00            python app.py

para verificar la aplicación WEB

Usar docker inspect Para ver la información subyacente de Docker. Devolverá un archivo JSON que registra la configuración y el estado del contenedor de Docker.

w3codebox@w3codebox:~$ docker inspect wizardly_chandrasekhar
[
    {
        "ID": "bf08b7f2cd897b5964943134aa6d373e355c286db9b9885b1f60b6e8f82b2b85,
        "Creado": "2018-09-17T01:41:26.174228707Z",
        "Ruta": "python",
        "Argumentos": [
            "app.py"
        ],
        "Estado": {
            
            
            
            
            
            "Muerto": false,
            "PID": 23245
            "CódigoDeSalida": 0,
            "Error": "",
            "IniciadoEn": "2018-09-17T01:41:26.494185806Z",
            "FinalizadoEn": "0001-01-01T00:00:00Z"
        }
......

Detener el contenedor de aplicación WEB

w3codebox@w3codebox:~$ docker stop wizardly_chandrasekhar   
wizardly_chandrasekhar

Reiniciar el contenedor de aplicación WEB

Los contenedores que ya están parados, podemos usar el comando docker start para arrancarlos.

w3codebox@w3codebox:~$ docker start wizardly_chandrasekhar
wizardly_chandrasekhar

docker ps -l Consultar el contenedor creado por última vez:

# docker ps -l 
IDENTIFICADOR DE CONTENEDOR  IMAGEN  PUERTOS  NOMBRES
bf08b7f2cd89        training/webapp     ...        0.0.0.0:5000->5000/tcp           wizardly_chandrasekhar

Para contenedores en ejecución, podemos usar el comando docker restart para reiniciar.

Remover contenedor de aplicación WEB

Podemos usar el comando docker rm para eliminar contenedores no necesarios

w3codebox@w3codebox:~$ docker rm wizardly_chandrasekhar  
wizardly_chandrasekhar

Al eliminar el contenedor, el contenedor debe estar en estado de detención, de lo contrario se producirá el siguiente error

w3codebox@w3codebox:~$ docker rm wizardly_chandrasekhar
Respuesta de error de respuesta del demonio: No puedes eliminar un contenedor en ejecución bf08b7f2cd897b5964943134aa6d373e355c286db9b9885b1f60b6e8f82b2b85Detener el contenedor antes de intentar la eliminación o eliminar forzado