文章目录

    • docker虚悬镜像
    • Docker网络
      • 常用命令:
      • 网络模式
    • Docker-compose容器编排
      • Compose使用的三个步骤
      • Compose常用命令:
    • Docker轻量级可视化工具Portainer
    • Docker重量级容器监控之 CAdvisor+InfluxDB+Granfana

【云原生】Docker快速入门实操
【云原生】Docker镜像详解

docker虚悬镜像

仓库名、标签都是的镜像,俗称虚悬镜像dangling image

查看是否有虚悬镜像:docker image ls -f dangling=true
虚悬镜像已经失去存在价值,可以删除:docker image prune

Docker网络

Docker启动后,会默认创建3大网络模式。

常用命令:

查看网络:docker network ls
查看网络源数据:docker network inspect XXX网络名字
删除网络:docker network rm XXX网络名字

网络模式

docker容器内部的ip是有可能会发生改变的。

bridge模式:使用–network bridge指定,默认使用docker0。Docker 服务默认会创建一个 docker0 网桥(其上有一个 docker0 内部接口),该桥接网络的名称为docker0,它在内核层连通了其他的物理或虚拟网卡,这就将所有容器和本地主机都放到同一个物理网络。Docker 默认指定了 docker0 接口 的 IP 地址和子网掩码,让主机和容器之间可以通过网桥相互通信。

host模式:使用–network host指定。直接使用宿主机的 IP 地址与外界进行通信,不再需要额外进行NAT 转换。

none模式:使用–network none指定。在none模式下,并不为Docker容器进行任何网络配置。 也就是说,这个Docker容器没有网卡、IP、路由等信息,只有一个lo,需要我们自己为Docker容器添加网卡、配置IP等。

container模式:使用–network container:NAME或者容器ID指定。新建的容器和已经存在的一个容器共享一个网络ip配置而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。

自定义网络模式:默认使用的是桥接网络bridge。如果不自定义的话,两个之间按照IP地址ping是OK的,但是按照服务名ping结果会显示Name or service not known,要解决这个问题就可以采取自定义网络模式:

docker network create zagiee
新建容器加入上一步新建的自定义网络
docker run -d -p 8081:8080 –network zagiee –name tomcat81 billygoo/tomcat8-jdk8
docker run -d -p 8082:8080 –network zagiee –name tomcat82 billygoo/tomcat8-jdk8
然后互相ping测试
docker exec – it tomcat81 bash
ping tomcat82
docker exec – it tomcat82 bash
ping tomcat81
就可以ping通了

自定义网络本身就维护好了主机名和ip的对应关系(ip和域名都能通)。

Docker-compose容器编排

Compose 是 Docker 公司推出的一个工具软件,可以管理多个 Docker 容器组成一个应用,实现对Docker容器集群的快速编排。你需要定义一个 YAML 格式的配置文件docker-compose.yml,写好多个容器之间的调用关系。然后,只要一个命令,就能同时启动/关闭这些容器。

安装步骤:

curl -L “https://github.com/docker/compose/releases/download/1.29.2/docker-compose- ( u n a m e − s ) −(uname -s)-(unames)(uname -m)” -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose –version

Compose使用的三个步骤

1.编写Dockerfile定义各个微服务应用并构建出对应的镜像文件
2.使用 docker-compose.yml 定义一个完整业务单元,安排好整体应用中的各个容器服务。
3.最后,执行docker-compose up命令 来启动并运行整个应用程序,完成一键部署上线。

1.mvn package命令将微服务形成新的jar包 并上传到Linux服务器/mydocker目录下
2.编写Dockerfile
3.构建镜像:docker build -t zag_docker:1.6 .
4.1如果不用Compose可能就得分别多次执行docker run(存在的问题:先后顺序要求固定,先mysql+redis才能微服务访问成功;多个run命令…;容器间的启停或宕机,有可能导致IP地址对应的容器实例变化,映射出错, 要么生产IP写死(可以但是不推荐),要么通过服务调用),到这结束。
4.2使用Compose
5.编写docker-compose.yml文件
6.执行 docker-compose up 或者 执行 docker-compose up -d
7.关停:docker-compose stop,相关的直接全部停止。

Compose常用命令:

在docker-compose.yml文件的父级目录下运行

docker-compose -h # 查看帮助
docker-compose up # 启动所有docker-compose服务
docker-compose up -d # 启动所有docker-compose服务并后台运行
docker-compose down # 停止并删除容器、网络、卷、镜像

docker-compose exec yml里面的服务id # 进入容器实例内部 docker-compose exec docker-compose.yml文件中写的服务id /bin/bash
docker-compose ps # 展示当前docker-compose编排过的运行的所有容器
docker-compose top # 展示当前docker-compose编排过的容器进程

docker-compose logs yml里面的服务id # 查看容器输出日志
docker-compose config # 检查配置
docker-compose config -q # 检查配置,有问题才有输出
docker-compose restart # 重启服务
docker-compose start # 启动服务
docker-compose stop # 停止服务

Docker轻量级可视化工具Portainer

Portainer 是一款轻量级的应用,它提供了图形化界面,用于方便地管理Docker环境,包括单机环境和集群环境。
docker命令安装:

docker run -d -p 8000:8000 -p 9000:9000 –name portainer –restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

第一次登录需创建admin,访问地址:xxx.xxx.xxx.xxx:9000

Docker重量级容器监控之 CAdvisor+InfluxDB+Granfana

通过docker stats命令可以很方便的看到当前宿主机上所有容器的CPU,内存以及网络流量等数据,一般够用了。但是,docker stats统计结果只能是当前宿主机的全部容器,数据资料是实时的,没有地方存储、没有健康指标过线预警等功能

容器监控3剑客:CAdvisor监控收集+InfluxDB存储数据+Granfana展示图表




使用方法:
1.新建3件套组合的 docker-compose.yml
2.启动docker-compose文件:docker-compose up
3.查看三个服务容器是否启动:docker ps
4.浏览cAdvisor收集服务,http://ip:8080/;浏览influxdb存储服务,http://ip:8083/;浏览grafana展现服务,http://ip:3000