当前位置: 首页 > news >正文

docker docker、swarm 全流程执行

文章目录

    • docker 安装
    • 没有 docker 面对的问题
    • docker介绍
      • docker 架构
      • docker 命令
      • 演示
        • 镜像命令
      • 容器命令
    • docker 网络
      • 网络模式
        • 桥接模式(网络模式)
        • host模式(网络模式)
        • None模式(网络模式)
        • Container模式
        • 不同模式下的连接问题
      • 演示
        • 桥接网络连接
        • 不同模式的网络进行连接
    • Dockerfile nginx源码构建
      • 前置准备
      • Dockerfile文件
      • 构建镜像
      • 演示
    • docker-compose
      • 部署面对的问题 vs docker-compose解决方案
      • docker-compose.yml
      • 演示
    • docker swarm(对标k8s)
      • 相关命令
      • 演示
        • 报错:swarm join报错 connect: no route to host
          • 排查解决步骤
            • 步骤一:主机是否能ping通 -> 能
            • 步骤二:端口是否可访问 -> 不能
            • 步骤三:查看是否开启防火墙 -> 开启
            • 步骤四:防火墙允许端口通过
            • 步骤五:重试swarm join
      • nexus跑起来
        • 演示
      • 创建仓库 推拉代码
        • 演示
    • 相关资料

docker 安装

centos7 安装docker docker-compose-CSDN博客

没有 docker 面对的问题

在这里插入图片描述

docker介绍

在这里插入图片描述

docker 架构

在这里插入图片描述

docker 命令

在这里插入图片描述

演示

镜像命令

docker 镜像命令

容器命令

docker 容器命令

docker 网络

网络模式

桥接模式(网络模式)

在这里插入图片描述

host模式(网络模式)

在这里插入图片描述

None模式(网络模式)

在这里插入图片描述

Container模式

在这里插入图片描述

不同模式下的连接问题

在这里插入图片描述

演示

桥接网络连接

docker 桥接模式

不同模式的网络进行连接

docker 不同模式的网络进行连接

Dockerfile nginx源码构建

前置准备

# 前置准备:创建一个文件夹存放 index.html Dockerfile pcre-8.38.tar.gz nginx-1.24.0.tar.gzwget https://sourceforge.net/projects/pcre/files/pcre/8.38/pcre-8.38.tar.gz
wget https://nginx.org/download/nginx-1.24.0.tar.gz

Dockerfile文件

# 基础镜像 使用 almaLinux 替代 CentOS
FROM almalinux:9# 维护者信息
LABEL maintainer="zhangluyue<1355816827@qq.com>"# 复制并解压源码
COPY pcre-8.38.tar.gz nginx-1.24.0.tar.gz /usr/local/src/
RUN tar -zxvf /usr/local/src/pcre-8.38.tar.gz -C /usr/local/src/ && \tar -zxvf /usr/local/src/nginx-1.24.0.tar.gz -C /usr/local/src/# 安装依赖并清理缓存
RUN yum install -y wget gcc gcc-c++ make openssl-devel zlib-devel && \yum clean all && rm -rf /var/cache/yum# 创建用户
RUN useradd -s /sbin/nologin -M www# 编译安装 Nginx
RUN cd /usr/local/src/nginx-1.24.0 && \./configure --prefix=/usr/local/nginx \--user=www \--group=www \--with-http_ssl_module \--with-http_stub_status_module \--with-pcre=/usr/local/src/pcre-8.38 && \make -j$(nproc) && \make install# 配置优化
RUN echo 'daemon off;' >> /usr/local/nginx/conf/nginx.conf && \ln -sf /usr/local/nginx/sbin/nginx /usr/local/bin/nginx# 复制自定义首页
COPY index.html /usr/local/nginx/html/# 暴露端口
EXPOSE 80# 启动命令
CMD ["nginx"]

构建镜像

docker build -t 镜像名称 . 

演示

docker 构建nginx镜像

docker-compose

部署面对的问题 vs docker-compose解决方案

微服务架构下部署问题docker-compose的解决方案
服务+中间件的复杂度up,导致部署复杂度updocker-compose服务编排,实现对多服务批量处理
服务与服务之间的依赖关系depends_on配置设置依赖关系,等待被依赖服务启动后在启动当前服务
服务间的网路共享问题使用自定义网络或者link属性来连通需要通信的服务,详见docker 网络
考虑有状态服务的数据持久化问题使用数据卷实现数据持久化

docker-compose.yml

version: "2.1"
services:nginx-demo2:image: "nginx"# 指定container_name就不能启动多个相同服务了# container_name: "nginx_compose"restart: "always"networks:- network1volumes:- ./html:/usr/share/nginx/htmlenvironment:APP_ENV: devdns:- 114.114.115.115ports:# - 80:80 指定了端口映射关系,就不能启动多个相同服务了- 80 networks:network1:driver: bridgeipam:driver: defaultconfig:- subnet: 188.18.0.0/16gateway: 188.18.0.1

演示

docker swarm(对标k8s)

在这里插入图片描述

相关命令

# 初始化swarm
docker swarm init --advertise-addr 192.168.40.130
# 加入集群
docker swarm join --token SWMTKN-1-0yg1i3lfcnns66qxaj9oi1kurft3nlpaunp8x1jqtqaes4uti8-8txrsnytl756cesnbvffbul0b 192.168.40.130:2377
# 查看加入集群命令(在主节点下)
docker swarm join-token worker
# 当前所有节点(在主节点下)
docker node ls
# 查看集群信息
docker info | grep -A 10 Swarm
# 节点离开集群
docker swarm leave // docker node ls下可以看到离开的状态# 启动服务
docker service create --replicas 2 -p 80:80 --name nginx01 nginx // 启动多个服务,访问时swarm会自动进行负载均衡(详见演示)
# 扩缩容
docker service update --replicas 3 nginx01
# 打印集群详细信息
docker service inspect --pretty nginx01

演示

docker swarm使用

报错:swarm join报错 connect: no route to host

在这里插入图片描述

排查解决步骤
# 主机是否能ping通
ping 192.168.40.130 // master 节点ip
# 端口是否可访问
nc -zv 192.168.130 2377
# 查看是否开启防火墙 -> 开启
systemctl status firewald
# 防火墙允许端口通过
firewall-cmd --add-port=2377/tcp --permanent
firewall-cmd --reload
# 重试swarm join --token xxx 192.168.40.130:2377
步骤一:主机是否能ping通 -> 能

在这里插入图片描述

步骤二:端口是否可访问 -> 不能

在这里插入图片描述

步骤三:查看是否开启防火墙 -> 开启

在这里插入图片描述

步骤四:防火墙允许端口通过

在这里插入图片描述

步骤五:重试swarm join

在这里插入图片描述

nexus跑起来

# 创建持久化文件夹
mkdir -p /opt/docker/nexus
# 赋予可执行权限
chmod 777 -R /opt/docker
# 下拉镜像执行,生成容器
docker run -d --restart=always -p 8868:8081 -p 5000:5000 -p 5001:5001 --name nexus -v /opt/docker/nexus:/nexus-data sonatype/nexus3
# 注意nexus3第一次跑起来比较慢,容器跑起来后要多等一会,看到日志输出Started Sonatype Nexus(如图)字样后说明启动成功
docker logs -f -n 100 nexus

在这里插入图片描述

演示

docker nexus镜像仓库搭建【上】

创建仓库 推拉代码

// 页面内创建存储器、仓库 详见演示# 配置daemon.json文件 // docker默认不允许http访问
vim /etc/docker/daemon.json
{"insecure-registries": ["192.168.40.131:5000", "192.168.40.131:5001"]
}
# 重启配置和docker
systemctl daemon-reload
systemctl restart docker# 打tag
docker tag 镜像名 192.168.40.131:5000/远程自定义名称:版本# 登录
docker login -u admin 192.168.40.131:5000# 推送镜像
docker push 192.168.40.131:5000/远程自定义名称:版本# 登录
docker login -u admin 192.168.40.131:5001# 拉起镜像
docker pull 192.168.40.131:5001/远程自定义名称:版本
docker pull nginx
演示

相关资料

1.1_课程简介-背景介绍_哔哩哔哩_bilibili

使用的终端工具:termius

http://www.lryc.cn/news/604233.html

相关文章:

  • vue3插槽详解
  • Linux 线程概念与控制
  • C#_ArrayList动态数组
  • 3D打印喷头的基本结构
  • [css]旋转流光效果
  • 机械臂抓取的无模型碰撞检测代码
  • Export useForm doesn‘t exist in target module
  • 前端手写贴
  • zoho crm为什么xx是deal的关联对象但是调用函数时报错说不是关联对象
  • Docker初学者需要了解的几个知识点(三):Docker引擎与Docker Desktop
  • BERT和GPT和ELMO核心对比
  • Redis 键值对操作详解:Python 实现指南
  • 字符串函数安全解析成执行函数
  • 解密数据结构之二叉树
  • Wan2.1
  • “非参数化”大语言模型与RAG的关系?
  • 集成电路学习:什么是Wi-Fi无线保真度
  • 「源力觉醒 创作者计划」_文心大模型 4.5 多模态实测:开源加速 AI 普惠落地
  • LeetCode 283 - 移动零
  • 【面试】软件测试面试题
  • mangoDB面试题及详细答案 117道(026-050)
  • Netty中InternalThreadLocalMap的作用
  • 【C++算法】72.队列+宽搜_二叉树的最大宽度
  • React函数组件的“生活管家“——useEffect Hook详解
  • 【Linux】初识make/makefile
  • sqLite 数据库 (2):如何复制一张表,事务,聚合函数,分组加过滤,列约束,多表查询,视图,触发器与日志管理,创建索引
  • 【MySQL基础篇】:MySQL表的约束常用类型以及实战示例
  • 15-C语言:第15~16天笔记
  • dubbo应用之3.0新特性(响应式编程)(2)
  • 《剑指offer》-算法篇-位运算