Capítulo de operación y mantenimiento Tortura del alma de Docker 2-2

Siga la cuenta pública de WeChat Java Book Club para obtener más artículos buenos

En la sección anterior, analizamos la imagen del componente principal de Docker. En esta sección, torturaremos el contenedor sobre la capa de la imagen. En la siguiente figura, podemos ver que el contenedor se genera en función de la capa de imagen. La relación entre imagen y contenedor puede entenderse por analogía con la relación entre clase y objeto. En el mundo de la ventana acoplable, la imagen es de solo lectura, mientras que el contenedor se puede leer y escribir.

[Error en la transferencia de la imagen del enlace externo. El sitio de origen puede tener un mecanismo anti-hotlinking. Se recomienda guardar la imagen y subirla directamente (img-F4upvkEa-1585221146076) (E: \ architect \ markdown \ gallery \ docker-container.png)]

Ya hemos introducido cómo crear un contenedor en la ventana acoplable, primero consulte el artículo de la deidad. Por ejemplo, el comando tomcat es el siguiente

docker run -d --name my-tomcat -p 9090:8080 tomcat

Imagen inversa del contenedor

Tortura del alma 1: Como sabemos que el contenedor se crea en base a la imagen, ¿podemos obtener la imagen a través del contenedor a la inversa?

Echemos un vistazo a un ejemplo para practicar una ola.

#1.拉取centos镜像
docker pull centos 
#2.根据centos镜像创建出centos container
docker run -d -it --name my-centos centos
#3.进入my-centos容器中
docker exec -it my-centos bash 
#4.输入vim命令,显示
bash: vim: command not found
#5.我们要做的是 对该container进行修改,也就是安装一下vim命令,然后将其生成一个新的centos #6.在centos的container中安装vim 
yum install -y vim
#7.退出容器(exit或者Ctrl+d),将其生成一个新的centos,名称为"vim-centos-image"
docker commit my-centos vim-centos-image
#8.查看镜像列表,并且基于"vim-centos-image"创建新的容器
docker run -d -it --name my-vim-centos vim-centos-image
#9.进入到my-vim-centos容器中
docker exec -it my-vim-centos bash
#10.检查vim命令是否存在
vim

Después de las operaciones anteriores, encontramos que la imagen que creamos en la dirección inversa del contenedor y luego generamos un nuevo contenedor heredó las características del contenedor original. Sin embargo, este método no se recomienda. Debido a que nuestra operación normal es usar un archivo Docker para generar una imagen, si hacemos esto, no podemos conocer el proceso de creación de la imagen. La forma más recomendada es la imagen personalizada en la sección anterior.

Comandos comunes para contenedor

Hemos utilizado varios comandos para operar contenedores arriba, aquí hay un resumen:

#1.根据镜像创建容器
docker run -d --name -p 9090:8080 my-tomcat tomcat
#2.查看运行中的container
docker ps
#3.查看所有的container[包含退出的]
docker ps -a 
#4.删除container
docker rm containerid 
#5.删除所有container
docker rm -f $(docker ps -a)
#6.进入到一个container中
docker exec -it container bash
#7.根据container生成image
docker commit my-centos vim-centos-image
#8.查看某个container的日志
docker logs container
#9.查看容器资源使用情况
docker stats
#10.查看容器详情信息
docker inspect container
#11.停止/启动容器
docker stop/start container

Suplemento: eliminar comandos de imagen y contenedor

#1.杀死所有正在运行的容器
docker kill $(docker ps -a -q)
#2.删除所有已经停止的容器
docker rm $(docker ps -a -q)
#3.删除所有未打 dangling 标签的镜
docker rmi $(docker images -q -f dangling=true)
#4.删除所有镜像
docker rmi $(docker images -q)
#5.强制删除 无法删除的镜像
docker rmi -f <IMAGE_ID>
docker rmi -f $(docker images -q)
 ~/.bash_aliases
	#1.杀死所有正在运行的容器.
	alias dockerkill='docker kill $(docker ps -a -q)'
 	#2.删除所有已经停止的容器.
	alias dockercleanc='docker rm $(docker ps -a -q)'
	#3.删除所有未打标签的镜像.
	alias dockercleani='docker rmi $(docker images -q -f dangling=true)'
 	#4.删除所有已经停止的容器和未打标签的镜像.
	alias dockerclean='dockercleanc || true && dockercleani'

Supervisión de recursos de contenedores

Como sugiere el nombre, como contenedor, debe tener su propio "tamaño", y solo un uso razonable de los recursos del contenedor puede hacer que funcione mejor.

Arriba, entendemos los comandos de operación básicos de Container, podemos ejecutar las estadísticas de la ventana acoplable para ver la información de estado del contenedor acoplable en detalle

[Error en la transferencia de la imagen del enlace externo. El sitio de origen puede tener un mecanismo anti-hotlinking. Se recomienda guardar la imagen y subirla directamente (img-rR0EM63R-1585221120686) (E: \ architect \ markdown \ gallery \ Container-resource.png)]

Podemos ver que la asignación de memoria predeterminada usa la memoria máxima del host, lo que hará que nuestros recursos sean incontrolables.

En cuanto a las limitaciones de recursos, podemos abordarlas principalmente de dos formas:

  • Limite de memoria

    #--memory memory limit
    docker run -d --memory 100M --name tomcat1 tomcat
    
  • límite de cpu

    #--cpu-shares cpu权重
    docker run -d --memory 100M --cpu-shares 10 --name tomcat02 tomcat
    

[Error en la transferencia de la imagen del enlace externo. El sitio de origen puede tener un mecanismo anti-hotlink. Se recomienda guardar la imagen y subirla directamente (img-ecT1Ba7E-1585221120687) (E: \ architect \ markdown \ gallery \ container-sourceLimit.png)]

En la imagen de arriba, podemos ver que la configuración se ha realizado correctamente. El tamaño específico se puede ajustar de forma flexible según la situación real.

La línea de comandos está bien para que podamos jugar y ver, pero en el entorno de producción, cuando hay una gran cantidad de contenedores, se estira. En este momento, tenemos que usar nuestra poderosa herramienta de monitoreo de contenedores.

Telescopio

dirección de github: https://github.com/weaveworks/scope

Esta herramienta es poderosa y simple de construir, pero puede haber un pequeño obstáculo, pero es fácil de resolver.

#1.配置weavescope环境
sudo curl -L git.io/scope -o /usr/local/bin/scope
sudo chmod a+x /usr/local/bin/scope
scope launch 192.168.110.164
#2.页面访问http://192.168.110.164:4040/,此时可能会出现页面无法访问的问题.我们要检查下4040端口是否启用。
	#2.1 查看端口状态
	firewall-cmd --query-port=4040/tcp
	#2.2 添加端口
	firewall-cmd --add-port=4040/tcp --permanent
	#2.3 端口重载
	firewall-cmd --reload

Introducción detallada al tejido:

Puede consultar el sitio web oficial: https://www.weave.works/docs/

También puede consultar este artículo: https://www.jianshu.com/p/1155b97bfdd8

Soporte técnico de contenedores

Arriba mencionamos algunos puntos importantes del contenedor, así que resumamos

Container es una tecnología de virtualización ligera que no necesita simular hardware para crear máquinas virtuales. Docker es un formato de contenedor personalizado encapsulado basado en el espacio de nombres del kernel de Linux, CGroups, UnionFileSystem y otras tecnologías para proporcionar un conjunto de entorno operativo virtual.

Espacio de nombres: utilizado para el aislamiento, como pid [proceso], net [red], mnt [punto de montaje], etc.

CGroups: los grupos de controladores se utilizan para limitar los recursos, como la memoria y la CPU

Sistemas de archivos de unión: utilizados para capas de contenedores e imágenes

Si desea explorar más, consulte mi próximo artículo Análisis de red de Docker de operación y mantenimiento, así que permanezca atento ~

Supongo que te gusta

Origin blog.csdn.net/aiwaston/article/details/105125798
Recomendado
Clasificación