1.proceso de creación del contenedor docker
2. La esencia de la operación de contenedores
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
创建容器基本选项:
--name:为容器命名
-i:交互式创建容器
-d:后台创建容器
-t:为容器分配伪终端
El significado de la existencia del contenedor Docker es ejecutar la aplicación en el contenedor y brindar servicios externos, por lo que el propósito de iniciar el contenedor es iniciar y ejecutar la aplicación en el contenedor. Una vez que la aplicación en el contenedor termine de ejecutarse, el contenedor terminará automáticamente. Por lo tanto, si no desea que el contenedor finalice inmediatamente después de iniciarse, debe evitar que la aplicación del contenedor finalice inmediatamente. Por lo general, hay dos formas de hacer que la aplicación esté en estado de interacción con el usuario o en estado de espera.
3. ejecución de la ventana acoplable
Crear y ejecutar un nuevo contenedor a partir de la imagen.
Formato:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
Crear una imagen centos7.9
[root@localhost ~]# docker run -it --name centos7 centos:7.9.2009
[root@4c392a1a06d7 /]#
#前台退出容器 ctrl+p+q
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4c392a1a06d7 centos:7.9.2009 "/bin/bash" 11 seconds ago Up 10 seconds centos7
La tecla de método abreviado para salir del contenedor en primer plano es ctrl+p+q El contenedor se está ejecutando en segundo plano
4.docker ejecutivo
Ejecutar comandos en un contenedor en ejecución
Formato:
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
opciones:
--detach,-d:分离模式:在后台执行命令
--detach-keys:覆盖分离容器的键序列
--env -e:设置环境变量
--env-file:读写一个环境变量文件
--interactive,-i:保持STDIN打开,即使没有连接
--privileged:赋予命令扩展权限
--tty,-t:分配一个伪终端
--user,-u;用户名或UID(格式:< name| UID >[:<group|gid>])
--workdir,-w:容器内的工作目录
Ingrese al contenedor centos7
[root@localhost ~]# docker exec -it -w /tmp centos7 /bin/bash
[root@4c392a1a06d7 tmp]# pwd
/tmp
adjuntar ventana acoplable
Adjunte flujos de error, salida y entrada estándar local a un contenedor en ejecución
Formato:
docker attach [OPTIONS] CONTAINER
¿Cuál es la diferencia entre Docker Exec y Docker Attach?
-
doke exec creará un nuevo proceso para acceder al proceso del contenedor, generalmente se usa junto con la opción -it, generalmente usa el comando exit para salir de i y finalizar el proceso actual
-
Docker Attach no creará un nuevo proceso, sino que ingresará al proceso original del contenedor. Puede usar exit o ctrl+p+q para salir del contenedor según la situación.
5. ventana acoplable ps
contenedor de lista
Formato:
docker ps [OPTIONS]
opciones:
-a, -all: muestra todos los contenedores (el valor predeterminado muestra en ejecución) -f: filtrar la salida según los criterios proporcionados --latest, -l: muestra el último contenedor creado (incluidos todos los estados) --no-trunc: No truncar la salida --quiet, -q: solo muestra la identificación del contenedor --size, -s: muestra el tamaño total del archivo
Nota: docker ps no admite la transferencia de copias de archivos entre contenedores
6. ventana acoplable superior
Mostrar el proceso en ejecución del contenedor.
Formato:
docker top CONTAINER [ps OPTIONS]
7. Gestión de contenedores docker
puesta en marcha
docker start [OPTIONS] CONTAINER [CONTAINER...]
detener
docker stop [OPTIONS] CONTAINER [CONTAINER...]
#强制停止
docker kill [OPTIONS] CONTAINER [CONTAINER...]
reiniciar
docker restart [OPTIONS] CONTAINER [CONTAINER...]
pausa
docker pause CONTAINER [CONTAINER...]
reanudar
docker unpause CONTAINER [CONTAINER...]
8. registros docker
Obtener registros de contenedores
Formato:
docker logs [OPTIONS] CONTAINER
opciones:
--detalles: muestra detalles adicionales proporcionados por el registro --seguir, -f: seguir la salida del registro --since: muestra los registros de la marca de tiempo (por ejemplo, 2013-01-02T13:23:37Z) o registros relativos (por ejemplo, 42 minutos de 42 minutos) --tail, -n: número de líneas a mostrar desde el final del registro -t: muestra la marca de tiempo del registro --hasta: Mostrar registros antes de la marca de tiempo (p. ej., 2013-01-02T13:23:37Z) o relativo (p. ej., 42 min durante 42 minutos)
Ver las primeras 3 líneas del contenido del registro antes de 5 segundos
[root@localhost ~]# docker logs --until 5s -n 3 nginx1
2023/07/12 10:04:58 [notice] 1#1: start worker process 32
2023/07/12 10:04:58 [notice] 1#1: start worker process 33
2023/07/12 10:04:58 [notice] 1#1: start worker process 34
9. ventana acoplable cp
Copie archivos/carpetas entre el contenedor y el sistema de archivos local
Formato:
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
opciones:
-a: modo de archivo (copia toda la información de uid/gid) --quiet, -q: suprime la salida de progreso durante la copia. Suprime automáticamente la salida de progreso si no hay ningún terminal conectado
10. docker rm
quitar uno o más contenedores
Formato:
docker rm [OPTIONS] CONTAINER [CONTAINER...]
opciones:
--force, -f : elimina a la fuerza el contenedor en ejecución (usa SIGKILL) --link, -l: eliminar el enlace especificado --volumes, -v: Eliminar volúmenes anónimos asociados con contenedores
11.compromiso de docker
Cree una nueva imagen basada en los cambios del contenedor
Formato:
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
opciones:
--autor, -a: autor (por ejemplo, John Hannibal Smith <[email protected]>) --cambiar, -c: aplicar las instrucciones de Dockerfile en la imagen creada --mensaje, -m: mensaje de compromiso --pause, -p : Pausar el contenedor durante la confirmación
Cree un espejo centos7, instale la herramienta net-tools y luego empaquetelo en un espejo
[root@localhost ~]# docker run -itd --name centos centos:7.9.2009
1d1725c19cbe9c6e119f055827a316dd351eb4adeae291a878a39418312daed5
[root@localhost ~]# docker exec -it centos /bin/bash
[root@1d1725c19cbe /]# yum -y install net-tools
para empacar
[root@localhost ~]# docker commit -a '[email protected]' centos centos7:net-tools
sha256:0db0f584d14de19f7b377fa385ea43e7abcb57223f4a51c690c5b1628e882f70
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos7 net-tools 0db0f584d14d 6 seconds ago 418MB
Luego, cree un contenedor basado en la imagen actual
12.docker exportar/importar
exportación de la ventana acoplable
Exporte el sistema de archivos del contenedor como un archivo tar
Formato:
docker export [OPTIONS] CONTAINER
opciones:
--salida, -o: escribe en el archivo en lugar de la salida estándar
Empaquetar el contenedor actual
[root@localhost ~]# docker export -o centos.tar centos
[root@localhost ~]# ls
centos.tar Dockerfile httpd-2.4.57.tar.gz image.tar my.cnf original-ks.cfg
importación de la ventana acoplable
Importe contenido de un tarball para crear una imagen del sistema de archivos
Formato:
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
opciones:
--cambiar, -c: aplicar las instrucciones de Dockerfile en la imagen creada --message, -m: Establecer mensaje de confirmación para imágenes importadas --plataforma: si el servidor admite varias plataformas, configure la plataforma
Restaurar el contenedor recién embalado
[root@localhost ~]# docker import centos.tar centos:test
sha256:6bc2adb97476b7b797a5a129c68afcba4ce05ab487812727c7049003f2a1049e
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos test 6bc2adb97476 4 seconds ago 394MB
13. La diferencia entre la exportación e importación de imágenes acoplables/contenedores
exportar y guardar
-
export actúa sobre el contenedor y save actúa sobre la imagen, pero los resultados de su exportación son todos archivos tar
-
export solo puede exportar un contenedor a la vez, y save puede exportar varias imágenes a la vez
-
export solo exporta la instantánea del sistema de archivos del contenedor actual, que perderá toda la información de metadatos e historial de la imagen original, mientras que save guarda el registro completo de la imagen original.
importar y cargar
-
importar paquetes de contenedores de importación y cargar paquetes de imágenes, pero al final todos se restaurarán para reflejar imágenes
-
La imagen restaurada por importación ya contiene la capa de imagen actual y la imagen restaurada por carga es exactamente la misma que la capa de la imagen original.
-
La imagen restaurada por importación es una imagen recién construida, que es diferente del ID de imagen de la imagen original. La imagen restaurada por carga es la misma imagen que la imagen original, es decir, el ID de imagen es el mismo.
-
La importación puede especificar <repositorio> y <etiqueta> para la imagen importada, y la imagen cargada por carga no puede especificar <repositorio> y <etiqueta>, que es lo mismo que la imagen original
14. sistema docker
Administrar acopladores
1.docker sistema df
Ver el uso del disco acoplable
Formato:
docker sistema df [OPCIONES]
Ver el uso del disco docker del sistema actual
[root@localhost ~]# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 9 2 1.504GB 1.435GB (95%)
Containers 2 1 213.9MB 213.9MB (100%)
Local Volumes 3 1 6.174MB 1.501MB (24%)
Build Cache 19 0 465.4MB 465.4MB
opciones:
--format: use una plantilla personalizada para formatear la salida: `table`: use
docker system events [OPTIONS]
Los encabezados de columna imprimen la salida en formato de tabla (predeterminado) `plantilla de tabla`: use la plantilla de Go dada para imprimir la salida en formato de tabla `json`: use la plantilla de Go dada para imprimir la salida. Para obtener más información sobre cómo dar formato a la salida mediante plantillas, consulte https://docs.docker.com/go/formatting/ --verbose, -v: muestra información detallada sobre el uso del espacio
2. eventos del sistema docker
Obtenga eventos en tiempo real del servidor
Formato:
docker system events [OPTIONS]
opciones:
--filter, -f : filtrar la salida según los criterios proporcionados --format : formatea la salida usando la plantilla de Go dada --since: muestra todos los eventos creados desde la marca de tiempo --hasta: transmite eventos hasta esta marca de tiempo
abrir dos terminales
Terminal 1
docker system events
Terminal 2
[root@localhost ~]# docker stop test
test
ver la terminal 1
[root@localhost ~]# docker system events
2023-07-15T17:04:37.334836848+08:00 container kill d1a032d521d4e4a02cc7ea497d6d83ac137d4d03e838f4db01e0fe903b2cc290 (image=progrium/consul, name=great_easley, signal=15)
2023-07-15T17:04:41.428854481+08:00 network disconnect 462ad2de000e7aae527224ae21c66e15aac0e68ed45f96b65528e22e272851fa (container=d1a032d521d4e4a02cc7ea497d6d83ac137d4d03e838f4db01e0fe903b2cc290, name=bridge, type=bridge)
2023-07-15T17:04:41.430294298+08:00 volume unmount 0e452a14a460fdc4cfa0b2644761923359a263fe9abeca5fd1952927231ca0a7 (container=d1a032d521d4e4a02cc7ea497d6d83ac137d4d03e838f4db01e0fe903b2cc290, driver=local)
2023-07-15T17:04:41.430357838+08:00 container stop d1a032d521d4e4a02cc7ea497d6d83ac137d4d03e838f4db01e0fe903b2cc290 (image=progrium/consul, name=great_easley)
información del sistema 3.docker
Mostrar información de todo el sistema
Formato:
docker system info [OPTIONS]
Igual que la información de la ventana acoplable
poda del sistema 4.docker
eliminar datos no utilizados
Formato:
docker system prune [OPTIONS]
opciones:
--all, -a: elimina todas las imágenes no utilizadas, no solo las que cuelgan --filter: proporciona un valor de filtro (por ejemplo, label=<key>=<value>) --force, -f: No pedir confirmación --volumes: eliminar volúmenes
Elimine todos los contenedores e imágenes no utilizados con nombres vacíos y etiquetas vacías y redes no utilizadas en el servidor docker actual
[root@localhost ~]# docker system prune
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all dangling images
- all dangling build cache
traducir: ¡Advertencia! Esto eliminará: - todos los contenedores detenidos — todas las redes no utilizadas por al menos un contenedor - Todas las imágenes colgantes - Todos los cachés de compilación colgantes ¿Estás seguro de que quieres continuar? [s/n] Estás seguro de que quieres continuar? [sí/no] sí Contenedores eliminados: 1d1725c19cbe9c6e119f055827a316dd351eb4adeae291a878a39418312daed5 d1a032d521d4e4a02cc7ea497d6d83ac137d4d03e838f4db01e0fe903b2cc290 Redes eliminadas: mynet1 mac_net1 Objetos de caché de compilación eliminados: kutjwzwfdu28eldqlwo07uax7 0p5xfeo29k8ojauchfzf97kp0 a9puvqnewb05luw84rnanr2lh y6mdonbx0pvs2trx7xd97738u kj09ara8y3v3b6f50xtzie6lv itk7ujtbdy4c2nirz68e2ivck 2a7d9sfcsnvl9owzau11l0jrq oe2ukyl2cpguwqjm0kddg5tcx 4fom9yi9x5i125uvb96d29ext tdwcwf0eze1lrvgherr4sxrs5 9hffla6qush85p7jhf89l56ek Espacio total recuperado: 679,3 MB
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos test 6bc2adb97476 25 hours ago 394MB
centos7 net-tools 0db0f584d14d 26 hours ago 418MB
busybox latest beae173ccac6 18 months ago 1.24MB
nginx latest 605c77e624dd 18 months ago 141MB
voltest latest 3af6982c965f 18 months ago 141MB
redis latest 7614ae9453d1 19 months ago 113MB
mysql 5.7 c20987f18b13 19 months ago 448MB
centos 7.9.2009 eeb6ee3f44bd 22 months ago 204MB
progrium/consul latest 09ea64205e55 8 years ago 69.4MB
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@localhost ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
462ad2de000e bridge bridge local
c598e7da9321 host host local
36391f761fe6 none null local
15.docker crear
crear un nuevo contenedor
Es similar a ejecutar, pero la única diferencia es que crear solo crea contenedores y no los ejecuta, pero docker run crea contenedores y los ejecuta.
Formato:
docker create [OPTIONS] IMAGE [COMMAND] [ARG...zz