docker核心技术原理和应用

本课程经过对Docker核心技术的讲解以及利用Docker搭建单主机ELK系统实战项目的演示,使你掌握Docker的各个核心组件、功能及其原理,掌握Docker的特性,并能够熟悉应用Docker。node

6 Docker网络

1.Docker网络管理阶段课程简介

2.了解Docker的网络管理

Docker有五种网络驱动模式
bridge network 模式(网桥):默认的网络模式。相似虚拟机的nat模式
host network 模式(主机):容器与宿主机之间的网络无隔离,即容器直接使用宿主机网络
None network 模式:容器禁用全部网络。
Overlay network 模式(覆盖网络): 利用VXLAN实现的bridge模式
Macvlan network 模式:容器具有Mac地址,使其显示为网络上的物理设备
好比swarm集群,使用overlay的模式redis

3.Docker网络管理之网络查看

4.Docker网络管理之网络建立

5.Docker网络管理之网络删除

6.Docker网络管理之网络详细信息查看

7.Docker网络管理之网络使用

8.Docker网络管理之网络链接与断开

bridge能够链接,而且链接多个
host不能断开和链接
null能够断开和链接
Macvlan 容器一样能够链接多个,也能够与bridge混合
Overlay网络不能断开和链接docker

9.Docker网络模式之网络模式简介

10.Docker网络模式之bridge网络原理

image.png

11.Docker网络模式之定制bridge网络

image.png
image.png
建立好一个bridge后,他的网关等于宿主机的一个veth pair虚拟网络设备
image.png
好比建立一个my-bridge的 bridge的网络
再次建立一个容器设置网络为my-briage
image.pngshell

12.Docker网络模式之bridge网络的端口映射

image.png

docker run -id -p 外部端口ip(可无):端口(可无):容器端口

13.Docker网络模式之host网络模式原理

image.png

#经过host的模式建立一个redis的容器
docker run -id --network host redis
#经过host的模式建立一个centos的容器
docker run -id --network host centos:7

14.Docker网络模式之Container网络模式原理

image.png
表示和其余容器经过相似host的方式链接
image.png
经过建立新的按照container网络模式的容器,由于redis的端口冲突因此没法启动bootstrap

15.Docker网络模式之none网络介绍

image.png

16.Docker网络模式之overlay网络简介

17.Docker网议栈工做流程了解

18.Docker网络模式之overlay网络模式实现原理

image.png

19.Docker网络模式之overlay网络的应用场景

image.png
image.png

20.Docker网络模式之macvlan网络模式原理

image.png

21.Docker网络管理阶段总结

image.png

9 Docker核心技术之Dockerfile

1.Dockerfile课程介绍

2.了解Dockerfile

3.Dockerfile的撰写示范

4.利用Dockerfile构建镜像

5.Dockerfile构建过程的特征

在同一步骤下若是内容没有更改的话,则不从新执行ubuntu

6.Docekrfile构建的镜像的特征

dockerfile每一行的命令本地都会构建一个镜像,一层一层的引用
image.pngcentos

7.Dockerfile的命令与镜像层级的关系介绍

image.png
image.png

8.Dockerfile配置说明

FROM: 指定基础镜像
RUN: 构建镜像过程当中须要执行的命令。能够有多条。docker build
CMD:添加启动容器时须要执行的命令。多条只有最后一条生效。能够在启动容器时被覆盖和修改。
ENTRYPOINT:同CMD,但这个必定会被执行,不会被覆盖修改。
:为镜像添加对应的数据。
MLABELAINTAINER:代表镜像的做者。将被遗弃,被LABEL代替。
EXPOSE:设置对外暴露的端口。
ENV:设置执行命令时的环境变量,而且在构建完成后,仍然生效
ARG:设置只在构建过程当中使用的环境变量,构建完成后,将消失
ADD:将本地文件或目录拷贝到镜像的文件系统中。能解压特定格式文件,能将URL做为要拷贝的文件
COPY:将本地文件或目录拷贝到镜像的文件系统中。
VOLUME:添加数据卷
USER:指定以哪一个用户的名义执行RUN, CMD 和ENTRYPOINT等命令
WORKDIR:设置工做目录服务器

9.Dockerfile配置之RUN

10.Dockerfile配置之shell格式命令与exec格式命令区别

11.Dockerfile配置之CMD与ENTRYPOINT

12.Dockerfile配置之LABEL与MAINTAINER

13.Dockerfile配置之EXPOSE

14.Dockerfile配置之ENV与ARG

15.Dockerfile配置之ADD与COPY

16.Dockerfile配置之VOLUME

image.png

查看全部的数据卷
docker volume ls

17.Dockerfile配置之USER和WORKDIR

18.Dockerfile配置之其余配置

19.Dockerfile阶段总结

10 Docker核心技术之Docker-Compose

1.Docker Compose课程介绍

2.Docker Compose工做原理介绍

3.Docker Compose安装

4.了解Docker Compose File

5.Docker Compose File配置概览

6.部署小型wen项目之项目代码实现

7.部署小型wen项目之Dockerfile实现

8.部署小型wen项目之docker-compose文件撰写

docker compose config查看yml文件是否有语法的问题
docker compose down关闭

9.部署小型wen项目之docker-compose启动

10.部署小型wen项目之数据卷挂载

#改命令会删除全部的数据
docker compose down关闭

image.png

11.单机ELK部署之ELK介绍

12.单机ELK部署之compose file撰写思路

13.单机ELK部署之elasticsearch的compose file撰写

14.单机ELK部署之启动elasticsearch

#查看启动的日志
docker-compose logs

image.png

报错信息以下

  max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]网络

临时解决办法(重启虚拟机会失效):

1.切换到root用户,执行命令:app

  

sysctl -w vm.max_map_count=262144

2.查看结果:

  

sysctl -a|grep vm.max_map_count

3.显示:

  

vm.max_map_count = 262144

永久解决办法

  在/etc/sysctl.conf文件最后添加一行:

vm.max_map_count=262144

  重启虚拟机

15.单机ELK部署之加入Logstash

16.单机ELK部署之加入kibana实现完成部署(一)

17.单机ELK部署之加入kibana实现完成部署(二)

18.单机ELK部署之总结

version: '2.2'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.2.4
    container_name: elasticsearch
    environment:
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata1:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - esnet
  #根据内存大小可省略
  elasticsearch2:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.2.4
    container_name: elasticsearch2
    environment:
      - cluster.name=docker-cluster
      #限制使用内存
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      # 数据同步
      - "discovery.zen.ping.unicast.hosts=elasticsearch"
    #限制使用内存
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata2:/usr/share/elasticsearch/data
    networks:
      - esnet
  logstash:
    image: docker.elastic.co/logstash/logstash:6.2.4
    environment:
      - "LS_JAVA_OPTS=-Xms256m -Xmx256m"
    container_name: logstash
    networks:
      - esnet
    depends_on:
      - elasticsearch
      - elasticsearch2
  logstash2:
    image: docker.elastic.co/logstash/logstash:6.2.4
    environment:
      - "LS_JAVA_OPTS=-Xms256m -Xmx256m"
    container_name: logstash2
    networks:
      - esnet
    depends_on:
      - elasticsearch
      - elasticsearch2
  kibana:
    image: docker.elastic.co/kibana/kibana:6.2.4
    container_name: kibana
    ports:
      - "5601:5601"
    networks:
      - esnet
    depends_on:
      - elasticsearch
      - elasticsearch2
volumes:
  esdata1:
    driver: local
  esdata2:
    driver: local

networks:
  esnet:

19.多主机ELK部署之swarm介绍

image.png
查看swarm信息

docker swarm init

查看节点
image.png

docker node ls

另外一台服务器加入主节点
image.png
具体的步骤显示为:
image.png

20.多主机ELK部署之跨主机下的compose file工做原理

deploy模式下,如下的配置将被忽略

NOT SUPPORTED FOR DOCKER STACK DEPLOY

The following sub-options (supported for docker-compose up and docker-compose run) are not supported for docker stack deploy or the deploy key.

另外还有 ulimits等

21.多主机ELK部署之步骤分析

22.多主机ELK部署之compose file中deploy参数概览

deploy:
      mode: replicated(此外还有global模式)
      replicas: 2

表示整个swarm集群中总共启动几个容器。若是两台服务器的话,每台服务器为1个容器节点
常见的配置显示
mode

version: "3.9"
services:
  worker:
    image: dockersamples/examplevotingapp_worker
    deploy:
      mode: global

resources

version: "3.9"
services:
  redis:
    image: redis:alpine
    deploy:
      resources:
        limits:
          cpus: '0.50'
          memory: 50M
        reservations:
          cpus: '0.25'
          memory: 20M

placement

version: "3.9"
services:
  db:
    image: postgres
    deploy:
      placement:
        constraints:
          - "node.role==manager"
          - "engine.labels.operatingsystem==ubuntu 18.04"
        preferences:
          - spread: node.labels.zone

23.多主机ELK部署之改写compose file

version大于3 这里取3.6

version: '3.6'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.2.4
    environment:
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=false
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    volumes:
      - esdata1:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - esnet
    deploy:
      placement:
        constraints:
          - node.role == manager
  elasticsearch2:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.2.4
    environment:
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=false
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - "discovery.zen.ping.unicast.hosts=elasticsearch"
    volumes:
      - esdata2:/usr/share/elasticsearch/data
    networks:
      - esnet
    deploy:
      placement:
        constraints:
          - node.role == worker
  logstash:
    image: docker.elastic.co/logstash/logstash:6.2.4
    environment:
      - "LS_JAVA_OPTS=-Xms256m -Xmx256m"
    networks:
      - esnet
    deploy:
      replicas: 2
  logstash2:
    image: docker.elastic.co/logstash/logstash:6.2.4
    environment:
      - "LS_JAVA_OPTS=-Xms256m -Xmx256m"
    networks:
      - esnet
    deploy:
      replicas: 2
  kibana:
    image: docker.elastic.co/kibana/kibana:6.2.4
    ports:
      - "5601:5601"
    networks:
      - esnet
    deploy:
      placement:
        constraints:
          - node.role == manager
volumes:
  esdata1:
    driver: local
  esdata2:
    driver: local

networks:
  esnet:
    driver: "overlay"

若是出现如下的错误

[root@localhost ~]#  docker swarm join --token SWMTKN-1-42dhkex570et9er8d3ff2gp61drbxc1zf1eyzxxlbuibr7gtn3-5f0id35vz2qp5m9c22fm8wzmo 192.168.200.131:2377
Error response from daemon: rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing dial tcp 192.168.200.131:2377: connect: no route to host"

则开放主节点的2377端口便可

24.多主机ELK部署之启动与调试bug(一)

启动容器
image.png

docker stack deploy -c docker-compose.yaml elk

部署完成之后查看多节点的全部服务

docker service ls

image.png

docker service logs

好比查看某个服务的启动日志状况

docker service logs elk_elasticsearch -f

25.多主机ELK部署之启动与调试bug(二)

删除集群服务,比关闭集群方便,这样的删除等过一会容器将都被删除

docker stack rm elk

26.多主机ELK部署之总结

查看集群中某项服务的日志
image.png

docker service logs (service names) -f

27.Docker Compose阶段课程总结

相关文章
相关标签/搜索