Introducción a Docker
Una simple introducción a Docker puede entenderse como un contenedor para la ejecución de aplicaciones. Sin embargo, la propia ventana acoplable y la máquina virtual todavía tienen diferencias obvias. Lo he resumido a grandes rasgos, que se puede resumir de la siguiente manera:
Docker en sí también tiene muchas ventajas, acerca de sus ventajas, que se pueden resumir en las siguientes:
Instalar Docker
A partir de marzo de 2017, Docker se dividió en dos versiones de rama sobre la base original: Docker CE y Docker EE.
Docker CE es la versión gratuita de la comunidad y Docker EE es la versión empresarial, que enfatiza la seguridad, pero requiere una tarifa.
Primero necesitamos eliminar la versión anterior de la ventana acoplable:
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
Entonces necesitamos instalar algunas herramientas del sistema necesarias:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
A continuación, debemos agregar la información de la fuente del software:
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
Actualizar caché de yum:
sudo yum makecache fast
Verificar el contenedor
Las operaciones anteriores son algunas operaciones de preparación. Si no hay ninguna anomalía durante los pasos, puede instalar Docker más tarde.
sudo yum -y install docker-ce
Una vez completada la instalación, inicie los pasos del servicio en segundo plano de la ventana acoplable:
sudo systemctl start docker
Cuando se descargue nuestra imagen de la ventana acoplable, habrá una imagen de helloworld para probar de forma predeterminada:
Prueba de funcionamiento hello-world
[root@runoob ~]# docker run hello-world
Dado que no hay una imagen de hello-world localmente, se descargará una imagen de hello-world y se ejecutará en el contenedor.
Acerca de la imagen de Docker y la introducción de contenedores
La esencia de un contenedor es un proceso: diferentes contenedores tienen su propio sistema de archivos raíz independiente, configuración de red y un espacio aislado. Una vez que el contenedor desaparece, los datos contenidos en él también se perderán. Toda la información de almacenamiento en el contenedor debe utilizar volúmenes de datos u otras formas. El ciclo de vida del volumen de datos es independiente del contenedor: el contenedor muere y el volumen de datos no morirá. Por lo tanto, después de que se usa el volumen de datos, los datos no se perderán después de que el contenedor se elimine o se vuelva a ejecutar.
La imagen de Docker es un sistema de archivos especial. Además de proporcionar los programas, bibliotecas, recursos, configuración y otros archivos requeridos por el tiempo de ejecución del contenedor, también contiene algunos parámetros de configuración preparados para el tiempo de ejecución (como volúmenes anónimos, variables de entorno, usuarios, etc.) ). La imagen no contiene datos dinámicos y su contenido no se modificará una vez que se haya creado.
docker instalar nginx
Después de la instalación inicial de Docker, comenzaremos a ingresar algunos enlaces de combate reales.
Primero, necesitamos extraer la imagen nginx relacionada en la ventana acoplable:
Al principio, el host no inició el contenedor de la ventana acoplable y es necesario iniciar el servicio de la ventana acoplable.
service docker start
Luego baja el espejo y empieza
docker run -d -p 80:80 --restart=always nginx:latest
Explicación del parámetro: -d inicio en segundo plano -p puerto 80 del host se asigna al puerto 80 del contenedor. Pruebe la página correspondiente, si tiene éxito, la siguiente figura:
A continuación, podemos mirar la etiqueta del espejo.
docker images
Este comando consulta solo el id de la imagen, pero no podemos ingresar al contenedor basado en el id de la imagen. Para ingresar al contenedor, se requiere el id del contenedor:
Entonces puede ver la identificación del contenedor con este comando:
docker ps
Luego ingrese al contenedor para modificar la información
. Existen muchos comandos para ingresar al contenedor, y se recomienda utilizar este tipo:
docker exec -it 999318c7d567 /bin/bash
Ingrese al contenedor seleccionando la etiqueta-id correspondiente. Después de ingresar al contenedor, encontrará que parece ser un nuevo sistema operativo Linux:
¿Cómo cerrar el contenedor Docker?
Es relativamente simple. No diré mucho aquí, lo puede entender por sí mismo.
docker kill 4591552a4185
Copia de archivo
Después de comprender el funcionamiento básico del contenedor de la ventana acoplable, probemos cómo cargar archivos en el contenedor de la ventana acoplable. Esto requiere el intercambio de archivos con el host.
Primero necesitamos obtener el nombre completo de la identificación del contenedor:
[root@localhost html]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0d4173ecf31f nginx:latest "nginx -g 'daemon of…" 9 minutes ago Up 9 minutes 0.0.0.0:80->80/tcp sleepy_gould
[root@localhost html]# docker inspect -f '{
{.Id}}' 0d4173ecf31f
0d4173ecf31f894e234ae9eb3d9eddd1b9d10b7af5c46608679fe11918af9644
Luego copie el archivo en el contenedor de la ventana acoplable:
[root@localhost html]# docker cp /opt/html/user_login.html 0d4173ecf31f894e234ae9eb3d9eddd1b9d10b7af5c46608679fe11918af9644:/root/user_login.html
[root@localhost html]#
La siguiente operación es relativamente simple, solo revise la página móvil:
root@0d4173ecf31f:/usr/share/nginx/html# ls
50x.html index.html user_login.html
root@0d4173ecf31f:/usr/share/nginx/html#
Los siguientes pasos son básicamente operaciones normales, ingrese nuestra configuración nginx:
root@0d4173ecf31f:/etc/nginx# vi nginx.conf
bash: vi: command not found
root@0d4173ecf31f:/etc/nginx#
Descubrí que no hay un comando vi, es necesario descargarlo e instalarlo
Cuando se usa un contenedor de ventana acoplable, a veces vi no está instalado en el interior, y el indicador dice: vi: comando no encontrado cuando escribe el comando vi, necesita instalar vi en este momento, pero cuando escribe el comando apt-get install vi, le indica:
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package vi
En este momento, debe escribir: apt-get update. La función de este comando es sincronizar los índices de las fuentes enumeradas en /etc/apt/sources.list y /etc/apt/sources.list.d, para que pueda obtener la última Paquete de software. Una vez completada la actualización, escriba el comando: apt-get install vi command.
Ahora que la ventana acoplable lo ha hecho y la duplicación de nginx está activada, puede modificar la configuración de nginx.
Instalar redis en la ventana acoplable
En primer lugar, las viejas reglas, tirar del espejo
[root@izwz9ic9ggky8kub9x1ptuz docker]# docker pull redis:4.0
Después de tirar del espejo, el contenido es el siguiente:
[root@izwz9ic9ggky8kub9x1ptuz docker]# docker pull redis:4.0
4.0: Pulling from library/redis
b8f262c62ec6: Pull complete
93789b5343a5: Pull complete
49cdbb315637: Pull complete
e244975d5eb1: Pull complete
25dca704d939: Pull complete
db11ecc9cf34: Pull complete
Digest: sha256:615b872e3af387206b62ffe66c1052f1653ed31b3afcfaa292a9244c92f2007a
Status: Downloaded newer image for redis:4.0
docker.io/library/redis:4.0
ok, la imagen básica está disponible, luego abra el contenedor directamente
Aquí hemos modificado el número de puerto de la máquina host a 8879, que es 6379 en el contenedor de mapeo.
[root@izwz9ic9ggky8kub9x1ptuz /]#
docker run -p 8879:6379
-v $PWD/data:/data
-v $PWD/conf/redis.conf:/etc/redis/redis.conf
--privileged=true
--name myredis
-d redis:4.0 redis-server /etc/redis/redis.conf
Explicación de parámetros
-
-p 8879: 8879: asigna el puerto 8879 del contenedor al puerto 6379 del host
-
-v $ PWD / data: / data: monta los datos en el directorio actual en el host al contenedor / data
-
redis-server —appendonly yes: ejecute el comando de inicio de redis-server en el contenedor y abra la configuración de persistencia de redis
Después del inicio, todo comenzó a funcionar normalmente.
Ingrese al contenedor y comience a verificar si redis es normal:
Se recomienda crear un archivo de configuración de redis en el host al iniciar redis y asignarlo al contenedor; de lo contrario, el archivo de configuración de redis correspondiente no se puede encontrar en el contenedor, lo cual es muy doloroso.
Instalar MySQL en Docker
El contenido de esta parte es relativamente simple, simplemente baje la imagen reflejada:
docker run --name 【容器名】 -e MYSQL_ROOT_PASSWORD=【mysql密码】 -d -i -p 3309:3306 mysql:5.7.24
Luego espera un rato, finalmente nuestro contenedor MySQL está instalado:
El consumo de recursos de memoria del contenedor.Desde
que compré un servidor pequeño, la configuración relacionada es la siguiente, por lo que al asignar recursos a cada contenedor en ejecución, debemos considerar el recurso ocupado por cada contenedor docker.
En la actualidad, se han creado un contenedor mysql, un contenedor redis y un contenedor nginx. Si agrega una aplicación java, necesita al menos 500 m de memoria para admitir visualmente el contenedor java.
Al usar el comando docker stats para ver la memoria del servidor actual, debido a que la cantidad de visitas los días de semana no es alta, puede asignar recursos de memoria más pequeños al mysql y redis actuales:
En este momento, puede usar el comando de actualización de la ventana acoplable para administrar la asignación de tamaño de memoria:
docker update -m 350m --memory-swap -1 mysqlserver
--memory-swap -1
El parámetro se refiere a no permitir que el contenedor intercambie memoria con el host. Si es necesario, se requieren ajustes adicionales. Después de
establecer el límite de memoria, el resultado es el siguiente:
Análisis de fallos de inicio del contenedor Docker combate real
Al configurar un nuevo contenedor acoplable, por ejemplo, para configurar ciertos atributos del archivo my.cnf para mysql, debe reiniciar el contenedor para que surta efecto. Pero a veces, debido a errores manuales, la configuración puede ser anormal y el reinicio del contenedor falla. ¿Qué debo hacer en este momento?
La forma más sencilla y grosera en este momento es armar primero el contenedor y luego reinstalarlo, pero esta operación es demasiado violenta, en caso de que haya otros datos importantes en el contenedor, no es aconsejable la operación directa.
De hecho, la ventana acoplable se instala esencialmente en la máquina host, por lo que los archivos de configuración correspondientes también pueden encontrar rastros en la máquina host. Aquí hay algunos remedios para mi error:
docker inspect [容器名称]
A través de este comando, puede ver la información de propiedad de configuración interna del contenedor:
En este momento, podemos ver una carpeta de directorio llamada MergedDir, ingresar al nivel superior de la carpeta,
cd /var/lib/docker/overlay2/f4ab9eff7a18f20f977595af38f5eb273127e0de8845a42fe71fa9b8850a988b
Luego revisamos la estructura del directorio, encontraremos una carpeta llamada diff
Con curiosidad, paso a paso en la carpeta, encontrará el archivo mysql que se configuró previamente en el contenedor docker, volverá a modificar manualmente la configuración original y el contenedor se reiniciará con éxito.