Operação e manutenção Capítulo Docker Soul Torture 2-2

Siga a conta pública do Java Book Club do WeChat para obter mais artigos bons

Na seção anterior, analisamos a imagem do componente principal do Docker. Nesta seção, torturaremos o contêiner acima da camada da imagem. Na figura abaixo, podemos ver que o container é gerado com base na camada Image. A relação entre imagem e container pode ser entendida por analogia com a relação entre classe e objeto. No mundo docker, a imagem é somente leitura, enquanto o contêiner é legível e gravável.

[Falha na transferência da imagem do link externo. O site de origem pode ter um mecanismo anti-hotlinking. Recomenda-se salvar a imagem e carregá-la diretamente (img-F4upvkEa-1585221146076) (E: \ architect \ markdown \ gallery \ docker-container.png)]

Já apresentamos como criar um contêiner no docker primeira vista da divindade. Por exemplo, o comando para criar o tomcat é o seguinte

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

Imagem reversa do contêiner

Tortura de alma 1: Como sabemos que o contêiner é criado com base na imagem, podemos fazer a imagem passar pelo contêiner inversamente?

Vamos dar uma olhada em um exemplo para praticar uma onda

#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

Após as operações acima, descobrimos que a imagem que criamos na direção reversa do contêiner e, em seguida, geramos um novo contêiner herdou as características do contêiner original. No entanto, este método não é recomendado. Como nossa operação normal é usar o arquivo Docker para gerar a imagem, se fizermos isso, não poderemos saber o processo de criação da imagem. A forma mais recomendada é a imagem personalizada na seção anterior

Comandos comuns para container

Usamos vários comandos para operar contêineres acima, aqui está um resumo:

#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: comandos delete image e container

#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'

Monitoramento de recursos do contêiner

Como o nome sugere, como contêiner, ele deve ter seu próprio "tamanho", e apenas um uso razoável dos recursos do contêiner pode fazer com que ele tenha um melhor desempenho.

Acima, aprendemos sobre os comandos básicos de operação do Container, podemos executar docker stats para ver as informações de status do docker container em detalhes

[Falha na transferência da imagem do link externo. O site de origem pode ter um mecanismo anti-hotlinking. Recomenda-se salvar a imagem e carregá-la diretamente (img-rR0EM63R-1585221120686) (E: \ architect \ markdown \ gallery \ Container-resource.png)]

Podemos ver que a alocação de memória padrão usa a memória máxima do host, o que tornará nossos recursos incontroláveis.

Em relação às restrições de recursos, podemos lidar principalmente com isso de duas maneiras:

  • Limite de memória

    #--memory memory limit
    docker run -d --memory 100M --name tomcat1 tomcat
    
  • limite de CPU

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

[Falha na transferência da imagem do link externo. O site de origem pode ter um mecanismo anti-hotlink. É recomendável salvar a imagem e carregá-la diretamente (img-ecT1Ba7E-1585221120687) (E: \ architect \ markdown \ gallery \ container-sourceLimit.png)]

Na imagem acima, podemos ver que a configuração foi bem-sucedida. O tamanho específico pode ser ajustado com flexibilidade de acordo com a situação real.

A linha de comando é boa para nós brincarmos e vermos, mas no ambiente de produção, quando há um grande número de contêineres, ela é esticada. No momento, temos que usar nossa poderosa ferramenta de monitoramento de contêineres

Weavescope

endereço do github: https://github.com/weaveworks/scope

Esta ferramenta é poderosa e simples de construir, mas pode haver um pequeno obstáculo, mas é 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

Introdução detalhada à tecelagem:

Você pode consultar o site oficial: https://www.weave.works/docs/

Você também pode ler este artigo: https://www.jianshu.com/p/1155b97bfdd8

Suporte técnico para contêineres

Acima mencionamos alguns pontos importantes do contêiner, então vamos resumir

Container é uma tecnologia de virtualização leve que não precisa simular hardware para criar máquinas virtuais. Docker é um formato de contêiner personalizado encapsulado com base no namespace do Linux Kernel, CGroups, UnionFileSystem e outras tecnologias para fornecer um conjunto de ambiente operacional virtual.

Namespace: usado para isolamento, como pid [processo], net [rede], mnt [ponto de montagem], etc.

CGroups: grupos de controladores são usados ​​para limitar recursos, como memória e CPU

Sistemas de arquivos de união: usados ​​para camadas de imagem e contêiner

Se você quiser explorar mais, consulte meu próximo artigo Operação e manutenção Análise de rede do Docker, fique atento ~

Acho que você gosta

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