docker学习笔记总结(代码片段)

IT_Holmes IT_Holmes     2022-12-03     662

关键词:

文章目录

1. docker network简介


常见的几个网卡配置:ens33、log、virbr0。

启动docker服务后,会发现一个docker0的虚拟网桥:


# 查看docker网络命令
docker network ls 

docker默认创建三大网络模式:

docker network的命令如下:

docker network create 名称:创建一个docker网络。

docker network rm 网络名: 删除一个docker网络。

docker network inspect 网络名:查看网络的详细信息。


docker net网络的作用:

2. docker network 网络模式


4种网络模式:

每个模式对应的命令参数:

3. docker底层容器ip 和 容器映射变化


分别启动两个ubuntu系统并且通过docker inspect来查看ip地址,如果停止后再启动这些IP会被重新分配,也就是会变化!!

总结:docker容器内部的ip是有可能发生变化的!因此,才需要网络服务,通过服务来进行调用。

4. docker network

4.1 bridge模式



Docker默认指定了docker0接口的IP地址和子网掩码,让主机和容器之间可以通过网桥相互通信。

整体架构图如下:

  • 记住veth,veth pair等等关键字。

通过命令:docker run -d -p 8083:8080 --name tomcat83 billygoo/tomcat8-jdk8 可以多测试几个不用指定 --network 默认就是bridge模式。

bridge模式总结:

在宿主机、容器中执行ip addr命令,可以查看宿主机的veth和容器的eth0之间的匹配。

就是通过这种veth和eth0两两匹配的架构,实现宿主机与容器之间的网络通信。大多数都是使用bridge模式的通信。

4.2 host模式


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

命令:docker run -d --network host --name tomcat83 billygoo/tomcat8-jdk8

如果执行命令添加了-p指定端口号,会出现一个警告:


docker inspect 容器名 | tail -n 20

host模式启动的容器,端口号会以主机端口号为主,也就是访问的时候直接访问宿主机的就可以了。

4.3 none模式


none模式:

docker run -d --network none --name tomcat83 billygoo/tomcat8-jdk8

很少用。

4.4 container模式


container模式:新创建的容器不会创建自己的网卡和配置自己的IP,而是和一个指定的容器共享IP、端口范围等。

命令效果如下:

注意:

Alpine操作系统介绍 以及 演示:

docker run -it --name alpine1 alpine /bin/sh
docker run -it --network container:alpine1 --name alpine2 alpine /bin/sh

# 演示通过 ip addr来查看

如果alpine1停用了,那么alpine2也就没有了网络了。

4.5 自定义网络 模式



但是,这两个ip是动态的,如果停了又开,ip就有可能是另外一个了。


而自定义网络就方便多了,直接通过服务名去读取。

第一步:创建自定义网络。

# 创建一个网络模式
docker network create itholmes_network


第二步:创建容器的时候添加参数 --network 自定义网络名称 。

docker run -d -p 8081:8080 --network itholmes_network --name tomcat801 billygoo/tomcat8-jdk8
docker run -d -p 8082:8080 --network itholmes_network --name tomcat802 billygoo/tomcat8-jdk8

第三步:进入容器里面,直接ping 容器名。 如果ping成功就可以了。

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

5. docker-compose 容器编排 简介


Docker-Compose是Docker官方的开源项目。负责实现对Docker容器集群的快速编排。

Docker-Compose中通过docker-compose.yml文件,统一来管理一些容器实例。

docker-compose.yml的作用就是写好多个容器之间的调用关系。

6. compose的下载安装


官方文档:https://docs.docker.com/compose/compose-file/compose-file-v3/

官方安装:https://docs.docker.com/compose/install/

compose要严格按照官方指定的版本来,compose版本基本上都是用3版本以上的。

compose的curl方式 安装步骤 :

curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose
docker-compose --version

curl方式安装后,卸载:

sudo rm /usr/local/bin/docker-compose

7. compose的 几个核心概念


**一个文件:docker-compose.yml **

两要素:服务(service) 和 工程(project)。

  • 服务:一个个应用容器实例。
  • 工程:由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yml文件中定义。

一个工程 对于 多个服务。

Compose使用的三个步骤:

Compose常用命令:

8. compose编排服务 步骤


第一步:编写docker-compose.yml文件。

version: '3.1'
 
volumes:
  grafana_data: 
 
services:
 influxdb:
  image: tutum/influxdb:0.9
  restart: always
  environment:
    - PRE_CREATE_DB=cadvisor
  ports:
    - "8083:8083"
    - "8086:8086"
  volumes:
    - ./data/influxdb:/data
 
 cadvisor:
  image: google/cadvisor
  links:
    - influxdb:influxsrv
  command: -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxsrv:8086
  restart: always
  ports:
    - "8080:8080"
  volumes:
    - /:/rootfs:ro
    - /var/run:/var/run:rw
    - /sys:/sys:ro
    - /var/lib/docker/:/var/lib/docker:ro
 
 grafana:
  user: "104"
  image: grafana/grafana
  user: "104"
  restart: always
  links:
    - influxdb:influxsrv
  ports:
    - "3000:3000"
  volumes:
    - grafana_data:/var/lib/grafana
  environment:
    - HTTP_USER=admin
    - HTTP_PASS=admin
    - INFLUXDB_HOST=influxsrv
    - INFLUXDB_PORT=8086
    - INFLUXDB_NAME=cadvisor
    - INFLUXDB_USER=root
    - INFLUXDB_PASS=root

第二步:将项目中的ip换成对应的服务名!重新打包上传服务器。

第三步:编写Dockerfile文件。

# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER zzyy
# VOLUME 指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为zzyy_docker.jar
ADD docker_boot-0.0.1-SNAPSHOT.jar zzyy_docker.jar
# 运行jar包
RUN bash -c 'touch /zzyy_docker.jar'
ENTRYPOINT ["java","-jar","/zzyy_docker.jar"]
#暴露6001端口作为微服务
EXPOSE 6001

第四步:在对应的目录下,执行命令docker build -t itholmes_docker:1.6 开始构建容器。

第五步: 使用编排命令进行一键部署。

# 检查docker-compose.yml配置编排是否正确,没有显示就是正确的。
docker-compose config -q
# 编排启动
docker-compose up -d

这样整体的容器编排就完成了。

9. Portainer可视化工具 安装 和 使用


容器越来越多后,可以通过类似于网站可视化工具来管理,也是有监控的效果。

就可以通过Docker轻量级可视化工具Portainer来实现。

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

Portainer官方:https://www.portainer.io/


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
# --restart=always是如果整个docker服务重启了,该容器也会重启,随时在线的一个效果。

第一次登录需要创建admin,访问地址:IP:9000。

之后要选择监视本地还是远程的,这个根据情况自己选择。注意:本地指的是portainer的本地。

portainer中可以操作各种各样的命令,查看inspect配置、连接控制台、日志等等。也可以对镜像、容器进行操作,也可能直接创建相关内容。

10. CIG容器重量级监控系统

10.1 docker stats 命令


# stats命令是查看整个docker的使用情况
docker stats 

10.2 CIG的 介绍


CIG就是以下三个的首字母。

第一步:CAdvisor进行监控收集。

第二步:InfluxDB负责存储数据。

第三步:Granfana来进行展示图表。



Cadvisor介绍:

InfluxDB介绍:

Granfana介绍:

10.3 CIG的 安装与启用


第一步:创建一个指定的目录,方便管理CIG这三个容器。


第二步:在指定目录下,构建docker-compose.yml文件。

version: '3.1'
 
volumes:
  grafana_data: 
 
services:
 influxdb:
  image: tutum/influxdb:0.9
  restart: always
  environment:
    - PRE_CREATE_DB=cadvisor
  ports:
    - "8083:8083"
    - "8086:8086"
  volumes:
    - ./data/influxdb:/data
 
 cadvisor:
  image: google/cadvisor
  links:
    - influxdb:influxsrv
  command: -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxsrv:8086
  restart: always
  ports:
    - "8080:8080"
  volumes:
    - /:/rootfs:ro
    - /var/run:/var/run:rw
    - /sys:/sys:ro
    - /var/lib/docker/:/var/lib/docker:ro
 
 grafana:
  user: "104"
  image: grafana/grafana
  user: "104"
  restart: always
  links:
    - influxdb:influxsrv
  ports:
    - "3000:3000"
  volumes:
    - grafana_data:/var/lib/grafana
  environment:
    - HTTP_USER=admin
    - HTTP_PASS=admin
    - INFLUXDB_HOST=influxsrv
    - INFLUXDB_PORT=8086
    - INFLUXDB_NAME=cadvisor
    - INFLUXDB_USER=root
    - INFLUXDB_PASS=root

不要忘记,docker-compose cnofig -q 检查一下配置是否正确。

第三步:docker-compose up 或者 docker-compose up -d 启动容器编排。

这样CIG服务就搭建起来了。

第四步:登录测试。


10.4 CIG添加panel


配置Grafana:

第一步:登录,默认账户密码是admin/admin。

第二步:添加对应的数据库,看技术选型。




第三步:添加panel

之后选择添加panel。

第四步:编辑panel,指定监听容器和监听什么。

# 通过该命令查看一些情况
docker stats


第五步:完成了CIG的部署。

docker学习笔记总结(代码片段)

文章目录1.dockernetwork简介2.dockernetwork网络模式3.docker底层容器ip和容器映射变化4.dockernetwork4.1bridge模式4.2host模式4.3none模式4.4container模式4.5自定义网络模式5.docker-compose容器编排简介6.compose的下载安装7.compose的几个核心概念8.compose... 查看详情

docker学习笔记总结(代码片段)

文章目录1.dockernetwork简介2.dockernetwork网络模式3.docker底层容器ip和容器映射变化4.dockernetwork4.1bridge模式4.2host模式4.3none模式4.4container模式4.5自定义网络模式5.docker-compose容器编排简介6.compose的下载安装7.compose的几个核心概念8.compose... 查看详情

docker学习笔记总结(代码片段)

文章目录1.docker搭建三主三从的redis集群2.redis集群之主从容错切换迁移(基于redis集群)3.redis集群之主从扩容(基于redis集群)4.redis集群之主从缩容(基于redis集群)5.DockerFile介绍6.DockerFile构建过程解析7.DockerFile保留字简介8.DockerFile保留... 查看详情

docker学习笔记总结(代码片段)

文章目录1.docker搭建三主三从的redis集群2.redis集群之主从容错切换迁移(基于redis集群)3.redis集群之主从扩容(基于redis集群)4.redis集群之主从缩容(基于redis集群)5.DockerFile介绍6.DockerFile构建过程解析7.DockerFile保留字简介8.DockerFile保留... 查看详情

docker学习笔记总结(代码片段)

文章目录1.卸载docker服务步骤(实用!!)2.docker私有库3.容器数据卷的使用4.容器卷和主机互通互联5.容器卷ro和rw读写规则6.卷的继承和共享7.docker安装tomcat8.docker安装mysql8.1运行mysql容器8.2dockermysql容器卷配置(非常重要)8.3docke... 查看详情

docker学习总结(代码片段)

Docker学习总结一、Docker简介二、Docker安装2.1安装步骤2.2卸载Docker2.3配置阿里云镜像加速三、Docker常用命令3.1帮助命令3.2镜像命令3.3容器命令3.4其他常用命令四、Dockerfile4.1DockerFile简介4.2DockerFile体系结构(保留字指令)4.3案例4.3.1Base... 查看详情

docker进阶学习(代码片段)

...、面试笔试题目录虚拟机和容器虚拟机和容器的区别认识Docker什么是DockerDocker的优点Docker的应用场景Docker核心Docker镜像Docker容器Docker仓库扩展问题Docker为什么快?安装D 查看详情

docker学习笔记(代码片段)

Docker概述类似集装箱隔离,jar—容器(mysql,redis)----发布到仓库-----从仓库下载Docker历史2010年dotcloud公司成立2013Docker开源2014年4月9日,Docker1.0发布在此之前都是用的虚拟机基于go语言开发Docker安装#卸载旧版本yumremo... 查看详情

docker学习总结(74)——dockerswarm全面总结(代码片段)

一、前言Swarm是Docker公司推出的用来管理docker集群的平台,几乎全部用GO语言来完成的开发的,代码开源在https://github.com/docker/swarm;DockerSwarm和DockerCompose一样,都是Docker官方容器编排项目,但不同的是,Dock... 查看详情

十分钟了解docker(我的docker学习笔记)(代码片段)

Docker学习笔记碎碎念背景知识Docker是什么Docker有什么用Docker原理Docker实践InstallDockerEngineonUbuntu常用命令操作实践镜像相关容器相关Docker作业练习学习参考资料碎碎念最近再学云原生技术与应用,之前没接触过,所以打算... 查看详情

docker学习笔记-安装(代码片段)

Docker学习笔记基础概念/名词解释准备工作安装启动Docker服务Docker常用命令卸载参考资料基础概念/名词解释名词说明image镜像docker封装好的一个模板,里面是一个可运行的服务,以及运行此服务所需要的依赖环境。container... 查看详情

docker学习笔记-安装(代码片段)

Docker学习笔记基础概念/名词解释准备工作安装启动Docker服务Docker常用命令卸载参考资料基础概念/名词解释名词说明image镜像docker封装好的一个模板,里面是一个可运行的服务,以及运行此服务所需要的依赖环境。container... 查看详情

docker学习总结二(代码片段)

1.docker三大核心概念,镜像、容器和仓库。2.安装dockerubuntu中安装安装apt-transport-https包支持的HTTPS协议源$sudoapt-getinstall-yapt-transport-https添加源的gpg密钥$sudoapt-keyadv--keyserverhkp://p80.pool.sks-keyservers-net:80--recv-keys58 查看详情

小白学习docker基础篇(代码片段)

系列文章:-小白学Docker之基础篇-小白学Docker之Compose-小白学Docker之SwarmPS:以下是个人作为新手小白学习docker的笔记总结1.docker是什么百科上的解释是这样的:Docker是一个开源的应用容器引擎,让开发者可以打包他... 查看详情

docker学习笔记——docker管理容器(代码片段)

文章目录Docker管理容器1.容器&镜像&仓库&daemon&client之间的关系2.启动容器3.dockerdaemon管理4.docker命令行5.docker命令行实现容器管理搜索镜像(dockerhub)获取镜像(pull)打包传输镜像启动容器解决docker中的CtenOS8镜像无法使用yum... 查看详情

docker学习笔记——docker管理容器(代码片段)

文章目录Docker管理容器1.容器&镜像&仓库&daemon&client之间的关系2.启动容器3.dockerdaemon管理4.docker命令行5.docker命令行实现容器管理搜索镜像(dockerhub)获取镜像(pull)打包传输镜像启动容器解决docker中的CtenOS8镜像无法使用yum... 查看详情

docker学习总结(60)——docker-compose基础知识回顾总结(代码片段)

一、Docker-Compose的基本介绍Docker-Compose是Docker官方开源的项目,负责实现对Docker容器的快速编排,它是由python编写的。#说下Docker-Compose里的两个基本概念#服务(service):一个应用容器,也就是docker容器,#项目(project):由一组关联的容器组... 查看详情

docker学习总结(60)——docker-compose基础知识回顾总结(代码片段)

一、Docker-Compose的基本介绍Docker-Compose是Docker官方开源的项目,负责实现对Docker容器的快速编排,它是由python编写的。#说下Docker-Compose里的两个基本概念#服务(service):一个应用容器,也就是docker容器,#项目(project):由一组关联的容器组... 查看详情