kubernetes Spring Cloud 微服务架构— (4)Kubernetes spring cloud 微服务-容器基本操作

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 第 4 章 容器基本操作

4.0 查看 Docker 命令行帮助

#查看帮助的方法

Docker 操作命令分为: 管理命令与直接命令参数

1)     管理命令为区分每个项目的命令, 比如说镜像操作, 就是以docker image 开头

2)     直接命令参数就是在docker 命令之后直接的命令, 比如说删除镜像 docker rmi  

3)     管理命令相对于直接命令参数,更加严谨。

[root@node-2 ~]# docker --help

4.1 常用基本操作列表

image.png

image.png

4.2 常用容器操作命令详解

4.2.0 查看容器日志

#启动容器, -P 生成随机映射端口 
[root@localhost ~]# docker run --name   t1 -d -P nginx 
#查看日志 
[root@localhost ~]#   docker logs -f t1
#获取到端口 
[root@localhost ~]# docker ps -a 
#访问容器 
[root@localhost ~]# curl http://localhost:32770 
#显示日志 
[root@localhost ~]# docker logs -f t1 
172.17.0.1 - - [20/Mar/2020:03:59:44 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.29.0" "-"

4.2.1 创建容器

语法:docker container run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG...]

-i 交互模式

-t 终端

-it 为分配一个交互式终端

-d 放在后台 (nohup command &

-p 端口映射

-v 源地址(宿主机):目标地址(容器) (本地的宿主机的目录挂载到容器目录)

-h 指定容器主机名

--name 指定容器的名字

--restart=always 每次重启服务,容器跟着重启

 

#创建容器, 并且挂载本地目录到容器目录

#把宿主机的/test目录挂载到容器的/mnt目录(新开终端)

#宿主机建立目录


/

[root@docker ~]# mkdir /test 
#启动新容器, 指定主机名为 test, 容器名为 t11, 在终端打开-it 
[root@localhost ~]# docker run -it --name t11 -h test -v /test:/mnt centos /bin/bash 
#宿主机建立文件 
[root@localhost test]# touch /test/1.txt 
#容器查看文件 
[root@1444e17a8998 mnt]# ls /mnt/1.txt  
/mnt/1.txt

#创建一台新容器,并进入镜像系统

[root@docker ~]# docker container run -it centos /bin/bash 
[root@f30520fafcbf /]#


/

Docker 容器内的第一个进程必须一直处于前台运行的状态(必须挂起),否则这个容器,就会处于退出状态(-d 后台运行)。

当执行 docker run 时,Docker会启动一个新进程,同时给这个进程分配其独占的文件系统。

注:使用run选项会打开另外一个会话窗口,进入容器,ID不同,并不是同一个容器,相当于在系统当中又开启一个新容器,但是镜像是使用相同的镜像。

 

4.2.2 容器启动、停止

语法:docker container start [OPTIONS] CONTAINER [CONTAINER...] 完整信息,请查看:docker container start --help 启动一个  container。 
#列出所有容器,包括运行与停止的容器, 获取到容器  id 
[root@docker ~]# docker ps -a   
#根据容器 id 启动容器 
[root@docker ~]# docker start   c06fc46a1176     c06fc46a1176 
[root@docker ~]# docker ps # 列出正在运行的容器

4.2.3 进入docker 容器

4.2.3.1 exec

语法:docker container exec [OPTIONS] CONTAINER [CONTAINER...] 完整信息,请查看:docker exec–help # exec 会分配一个新的终端(pts) 
docker container exec -it 容器id 或容器名字 /bin/bash 
#执行进入必须要带参数和COMMAND(如:/bin/bash)
#进入容器可以用容器运行的 id, 也可以用容器名称, 其目的都是唯一定位到容器 
[root@localhost ~]# docker container exec -it t11 /bin/bash (父镜像)


/

4.2.3.2 attach


/

语法:docker container attach CONTAINER 
#如果 Docker 容器是使用/bin/bash 命令启动的,则可以使用 attach 
[root@localhost temp]# docker attach t11

#exec attach 区别

EXEC: 在一个正在运行的容器中执行命令,exec是针对已运行的容器实例进行操作,在已运行的容器中执行命令,不创建和启动新的容器,退出shell不会导致容器停止运行。

 

Attach: 将本机的标准输入(键盘)、标准输出(屏幕)、错误输出(屏幕)附加到一个运行的容器,也就是说本机的输入直接输到容器中,容器的输出会直接显示在本机的屏幕上,如果退出容器的shell,容器会停止运行。

 

4.2.4 重启服务,容器自启动当Docker重启时,容器能自动启动

命令行添加参数docker run --restart=always 
[root@master ~]# docker run -d --restart=always nginx 
[root@master ~]# service docker restart


/
#查看状态

[root@master ~]# docker ps | grep nginx 
5b9a13d0aedb        nginx  "nginx -g 'daemon of…"  About a minute ago   Up 48 seconds       80/tcp              fervent_lehmann

 

4.2.5 容器其他操作


/

 

# 关闭所有正在运行的容器
[root@master ~]#  docker kill $(docker ps -q)
# 移除所有停止的容器 
[root@master ~]# docker rm $(docker ps -a -q) 
[root@demo ~]# docker container prune 
# 根据状态移除 
[root@master ~]# docker rm $(docker ps -q -f 'status=exited' -n 3) 
[root@master ~]# docker rm $(docker ps -q -f 'status=exited') 
# 根据标签移除 
[root@master ~]# docker rm $(docker ps -a | grep nginx | awk '{print $1}') 

4.3 容器资源限制

#查看容器资源情况

[root@master ~]# docker stats 67d1b66c71ce

4.3.1 #CPU 资源限制

 

#根据CPU核心去绑定 
# 容器可占用的 CPU 核编号,0-3 表示占用四个核,0,1 表示占用两个核 
[root@master ~]# docker run --name nginx-cpu-t1 --cpuset-cpus=0-1 -d -P  nginx 
[root@master ~]# docker run --name nginx-cpu-t2 --cpuset-cpus=0 -d -P  nginx

 

4.3.2 #内存限制

[root@master ~]# docker run --name nginx-memoy-t3  -d --cpuset-cpus=0 -m 300M -P nginx

 

4.3.3 #容器空间限制

#限制单个容器使用的磁盘空间(非全局)

root@master ~]# docker run -it --storage-opt size=12m alpine:latest /bin/df -h | grep overlay
Dokcer 中使用overlay2.size 
(注意存储驱动overlay),限制每个容器可以占用的磁盘空间,并且需要xfs(CentOS 7默认的文件)文件系统支持,xfs挂载时使用pquota参数, 在实际的生产中,建议用独立的磁盘作为docker的存储盘. 
#限制单个容器使用的磁盘空间(全局) 
#增加一块硬盘格式化为xfs 
#https://github.com/moby/moby/issues/40667 
[root@demo ~]# mkdir /data 
[root@demo jdk]# docker info | grep "Storage Driver"                  
 Storage Driver: overlay2 
[root@demo ~]#  docker info | grep "Backing" 
  Backing Filesystem: <unknown> 
[root@demo ~]# fdisk /dev/sdb 
[root@master ~]# mkfs.xfs /dev/sdb1 
[root@demo ~]# ll /dev/disk/by-uuid/* 
#正常情况 
[root@demo yum.repos.d]# docker info 
Server Version: 19.03.6 
 Storage Driver: overlay2 
 Backing Filesystem: xfs 
#设置/etc/fstab 
UUID=c620987d-9e05-441d-b67b-c6015c51975a /data xfs rw,pquota 0 0 
Mount -a 
#查看挂载 
[root@master ~]# cat /proc/mounts  | grep sdb 
/dev/sdb1 /data xfs rw,relatime,attr2,inode64,prjquota 0 0 
#配置docker 
[root@master ~]# mkdir -p /data/docker  
[root@master ~]# vi /etc/docker/daemon.json 
{ 
  "registry-mirrors": ["https://plqjafsr.mirror.aliyuncs.com"], 
   "data-root": "/data/docker", 
    "storage-driver": "overlay2", 
    "storage-opts": [ 
     "overlay2.override_kernel_check=true", 
      "overlay2.size=1G" 
    ] 
} 
#重启docker 
[root@master ~]# service docker restart 
Redirecting to /bin/systemctl restart docker.service 
#查看docker 
[root@master ~]# docker info | grep 'Docker Root Dir' 
WARNING: API is accessible on http://0.0.0.0:2375 without encryption. 
         Access to the remote API is equivalent to root access on the host. Refer         to the 'Docker daemon attack surface' section in the documentation for          more  information:    https://docs.docker.com/engine/security/security/#docker-daemon-attacksurface
 Docker Root Dir: /data/docker 
#启动容器测试 
[root@master ~]# docker run -it centos /bin/bash 
[root@f6b9617d3736 /]# dd if=/dev/zero of=/test.txt bs=130M count=10 dd: error writing '/ test.txt': No space left on device 
#启动新容器,写入文件 
[root@master ~]# docker run -it centos /bin/bash 
[root@4dd62c6ef62e /]# dd if=/dev/zero of=/test1.txt bs=230M count=1 
1+0 records in 
1+0 records out


相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
2月前
|
人工智能 Kubernetes 数据可视化
Kubernetes下的分布式采集系统设计与实战:趋势监测失效引发的架构进化
本文回顾了一次关键词监测任务在容器集群中失效的全过程,分析了中转IP复用、调度节奏和异常处理等隐性风险,并提出通过解耦架构、动态IP分发和行为模拟优化采集策略,最终实现稳定高效的数据抓取与分析。
Kubernetes下的分布式采集系统设计与实战:趋势监测失效引发的架构进化
|
15天前
|
Kubernetes Devops API
从零到面试高手:每个 DevOps 专业人士都必须知道的 20 个 Kubernetes 架构问答
Kubernetes 是当前 DevOps、云原生和 SRE 领域的关键技能。本文总结了 20 个高频面试问题,涵盖架构组件、工作原理及核心概念,助你轻松掌握 Kubernetes 基础,提升面试与实战能力。
126 2
|
边缘计算 Kubernetes 物联网
Kubernetes 赋能边缘计算:架构解析、挑战突破与实践方案
在物联网和工业互联网快速发展的背景下,边缘计算凭借就近处理数据的优势,成为解决云计算延迟高、带宽成本高的关键技术。而 Kubernetes 凭借统一管理、容器化适配和强大生态扩展性,正逐步成为边缘计算的核心编排平台。本文系统解析 Kubernetes 适配边缘环境的架构分层、核心挑战与新兴解决方案,为企业落地边缘项目提供实践参考。
47 0
|
3月前
|
负载均衡 Java API
基于 Spring Cloud 的微服务架构分析
Spring Cloud 是一个基于 Spring Boot 的微服务框架,提供全套分布式系统解决方案。它整合了 Netflix、Zookeeper 等成熟技术,通过简化配置和开发流程,支持服务发现(Eureka)、负载均衡(Ribbon)、断路器(Hystrix)、API网关(Zuul)、配置管理(Config)等功能。此外,Spring Cloud 还兼容 Nacos、Consul、Etcd 等注册中心,满足不同场景需求。其核心组件如 Feign 和 Stream,进一步增强了服务调用与消息处理能力,为开发者提供了一站式微服务开发工具包。
483 0
|
7月前
|
Kubernetes 监控 Serverless
基于阿里云Serverless Kubernetes(ASK)的无服务器架构设计与实践
无服务器架构(Serverless Architecture)在云原生技术中备受关注,开发者只需专注于业务逻辑,无需管理服务器。阿里云Serverless Kubernetes(ASK)是基于Kubernetes的托管服务,提供极致弹性和按需付费能力。本文深入探讨如何使用ASK设计和实现无服务器架构,涵盖事件驱动、自动扩展、无状态设计、监控与日志及成本优化等方面,并通过图片处理服务案例展示具体实践,帮助构建高效可靠的无服务器应用。
|
7月前
|
监控 Kubernetes Cloud Native
基于阿里云容器服务Kubernetes版(ACK)的微服务架构设计与实践
本文介绍了如何基于阿里云容器服务Kubernetes版(ACK)设计和实现微服务架构。首先概述了微服务架构的优势与挑战,如模块化、可扩展性及技术多样性。接着详细描述了ACK的核心功能,包括集群管理、应用管理、网络与安全、监控与日志等。在设计基于ACK的微服务架构时,需考虑服务拆分、通信、发现与负载均衡、配置管理、监控与日志以及CI/CD等方面。通过一个电商应用案例,展示了用户服务、商品服务、订单服务和支付服务的具体部署步骤。最后总结了ACK为微服务架构提供的强大支持,帮助应对各种挑战,构建高效可靠的云原生应用。
|
8月前
|
搜索推荐 NoSQL Java
微服务架构设计与实践:用Spring Cloud实现抖音的推荐系统
本文基于Spring Cloud实现了一个简化的抖音推荐系统,涵盖用户行为管理、视频资源管理、个性化推荐和实时数据处理四大核心功能。通过Eureka进行服务注册与发现,使用Feign实现服务间调用,并借助Redis缓存用户画像,Kafka传递用户行为数据。文章详细介绍了项目搭建、服务创建及配置过程,包括用户服务、视频服务、推荐服务和数据处理服务的开发步骤。最后,通过业务测试验证了系统的功能,并引入Resilience4j实现服务降级,确保系统在部分服务故障时仍能正常运行。此示例旨在帮助读者理解微服务架构的设计思路与实践方法。
410 17
|
8月前
|
人工智能 安全 Java
微服务引擎 MSE:打造通用的企业级微服务架构
微服务引擎MSE致力于打造通用的企业级微服务架构,涵盖四大核心内容:微服务技术趋势与挑战、MSE应对方案、拥抱开源及最佳实践。MSE通过流量入口、内部流量管理、服务治理等模块,提供高可用、跨语言支持和性能优化。此外,MSE坚持开放,推动云原生与AI融合,助力企业实现无缝迁移和高效运维。
306 1
|
8月前
|
监控 JavaScript 数据可视化
建筑施工一体化信息管理平台源码,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
智慧工地云平台是专为建筑施工领域打造的一体化信息管理平台,利用大数据、云计算、物联网等技术,实现施工区域各系统数据汇总与可视化管理。平台涵盖人员、设备、物料、环境等关键因素的实时监控与数据分析,提供远程指挥、决策支持等功能,提升工作效率,促进产业信息化发展。系统由PC端、APP移动端及项目、监管、数据屏三大平台组成,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
307 7
|
7月前
|
传感器 监控 安全
智慧工地云平台的技术架构解析:微服务+Spring Cloud如何支撑海量数据?
慧工地解决方案依托AI、物联网和BIM技术,实现对施工现场的全方位、立体化管理。通过规范施工、减少安全隐患、节省人力、降低运营成本,提升工地管理的安全性、效率和精益度。该方案适用于大型建筑、基础设施、房地产开发等场景,具备微服务架构、大数据与AI分析、物联网设备联网、多端协同等创新点,推动建筑行业向数字化、智能化转型。未来将融合5G、区块链等技术,助力智慧城市建设。
337 0

相关产品

  • 容器服务Kubernetes版
  • 推荐镜像

    更多